15. A computer program product in a non-transitory computer readable storage medium for use in a data processing system, the computer program product holding computer program instructions which, when executed by the data processing system, perform a method of placing virtual machines, the method comprising: representing physical entities upon which the virtual machines are to be placed as a hierarchical tree of bins; receiving one or more virtual machine-to-physical entity constraints on a placement scheme for the virtual machines; and using information derived from the hierarchical tree and the virtual machine-to-physical entity constraints to define, for each level of the hierarchical tree, a placement solution that associates given virtual machines to given physical entities by solving a bin packing problem, wherein the bin packing problem is solved at a given level of the hierarchical tree using a placement algorithm, together with a placement solution from a prior level.
16. The computer program product as described in claim 15 wherein the bin packing problem is solved at each level of the hierarchical tree using virtual machine-to-physical entity constraints associated with that level and the placement algorithm.