1. A method comprising: generating a list, wherein the list comprises a plurality of entries associated with a virtual machine, the virtual machine is a new virtual machine that is not running when the list is generated, the generating the list comprises predicting portions of data likely to be used by the virtual machine based on metadata that includes information identifying one or more characteristics of the virtual machine, and each entry indicates a respective portion of data associated with the virtual machine; for each candidate list of a plurality of candidate lists, calculating a number of common entries, wherein each candidate list comprises a plurality of entries, and a common entry is an entry that is included in the respective candidate list and in the list; selecting a target candidate list of the plurality of candidate lists, wherein the target candidate list has the highest number of common entries of the plurality of candidate lists, an entry in the target candidate list identifies a portion of data associated with a second virtual machine, generating the entry comprises trapping a memory call made by a second virtual machine, wherein the memory call identifies a requested portion of data, and calculating a fingerprint for the requested portion of data, wherein the entry comprises the fingerprint; the second virtual machine is implemented on a computing device associated with the target candidate list; and assigning the virtual machine to the computing device associated with the target candidate list.