1. A process performed by a computer comprising: generating a combined-proximity table for a resource of a first or next host of a group of hardware hosts configured to execute pairs of virtual machines in each of the hardware hosts, the combined proximity table indicating, for each pair of said virtual machines, a number of data points representing times at which the pair of virtual machines was executing on the respective host; assigning pairs of virtual machines to said first or next host based on the first host's core capacity by applying proximity rules to the respective combined proximity table to establish assignments of pairs of virtual machines to hosts, wherein the proximity rules include at least one of proximity constraints and proximity thresholds; determining if all virtual machines that are to be assigned have been assigned, and if not all virtual machines that are to be assigned have been assigned, repeating said generating and assigning for a selected next host, and calculating an index for assigning additional virtual machines to said group of hardware hosts based on said assignments, wherein calculating includes setting a reference virtual machine size, and the index reflects a relative amount of virtual machines, based on the reference virtual machine size, that can be added over an amount of virtual machines already assigned.