1. A method of placing virtual machines, comprising: representing physical entities upon which the virtual machines are to be placed as a hierarchical tree; receiving constraints on a placement scheme; and using information derived from the hierarchical tree and the constraints to define a placement of the virtual machines by solving, within a computing entity having a hardware element, a bin packing problem.