Patent ID: 8464267

Claim:
A method of determining placement of a plurality of virtual machines onto a plurality of host devices, said method comprising: for each of a plurality of resources: calculating a resource scarcity factor for the resource based on a formula: ((total demand for the resource by the plurality of virtual machines)/(current supply of the resource available at the plurality of host devices−the total demand for the resource by the plurality of virtual machines)); and identifying a maximum potential supply of the resource available at the plurality of host devices; for each of the plurality of host devices, calculating a host device size by: for each of the plurality of resources, calculating a device scarcity score for the resource based on a formula: ((potential supply of the resource available at the host device * the resource scarcity factor for the resource)/(maximum potential supply of the resource available at any one of the plurality of host devices)); and summing the scarcity scores for each of the plurality of resources to determine the host device size; ordering the plurality of host devices based on host device size to create an ordered list of host devices; and determining the placement of the plurality of virtual machines onto said plurality of host devices, including: for each host device in the ordered list of host devices, performing a loop comprising: selecting the host device from the ordered list of host devices; selecting a set of virtual machines, from among the plurality of virtual machines, to consider placing on the host device; determining a virtual machine order for the set of virtual machines, the virtual machine order having a top; looping through the set of virtual machines according to the virtual machine order and attempting to place the set of virtual machines onto the host device; and when no virtual machines are capable of being placed on the host device, exiting the loop and selecting a next host device from the ordered list of host devices with which to perform the loop until the virtual machines in the set of virtual machines are exhausted.