1. A method, comprising: identifying, by a host controller device, characteristics of a target virtual machine (VM) to be placed by the host controller device on one of a plurality of candidate host machines, wherein the characteristics comprise at least one of an operating system (OS) executing in the target VM and applications executing in the target VM; for each candidate host machine of the plurality of candidate host machines: determining, via communication with a memory sharing agent of the candidate host machine, characteristics of each VM hosted by the candidate host machine, wherein the characteristics of each VM comprise at least one of an OS executing in each VM and applications executing in each VM, and wherein the determining occurs whenever a change to the characteristics is made at a VM hosted by the candidate host machine; and identifying a number of VMs hosted by the candidate host machine with similar characteristics to the target VM, wherein an extent of the similar characteristics is a configuration that is selected by a system administrator of the host controller device based on a type or version of the OSs or applications executing in the target VM to be placed and each VM hosted by the candidate host machine; identifying, by the host controller device, a candidate host machine from the plurality of candidate host machines comprising a most number of VMs with the similar characteristics to the target VM; and selecting, by the host controller device, the identified candidate host machine to host the target VM.