One area of consolidation via virtualization that is often overlooked is the segregation of like operation systems and applications. Some virtualization hypervisors are actually quite adept at consolidating redundant read-only memory pages, and by running like applications and operating systems within the VM guests on the same physical host, performance improvements can be realized.
VMware ESX 3.0 offers transparent page sharing, which is outlined in the ESX Server 3.0.1 Resource Management Guide. The guide also offers details on how to tweak the hypervisor's scanning frequency, as well as how to disable page sharing for VMs that require complete isolation. Another good resource on ESX Server memory is "The Role of Memory in ESX Server 3.0." If you're worried about the security implications of sharing memory between VMs, the VMware guide "Security Design of the VMware Infrastructure 3 Architecture" will likely put your mind at ease.
Xen currently does not support page sharing primarily due to engineering concerns regarding performance degradation. This is documented in XenSource Knowledge Base article "Do your products support memory sharing between VMs?" Microsoft's Virtual Server 2005 R2 product does not support page sharing as well (see page 27 of the Microsoft Virtual Server R2 Reviewer's Guide for more info).
What's interesting is that XenSource and Microsoft have both laid out a case against page sharing due to performance concerns; however, memory sharing can be achieved without sacrificing performance. Since memory page scanning does induce an additional performance load, the optimal method for finding duplicate read-only pages in memory is for a physical host server to wait for periods of low resource utilization before scanning memory. This technique is really nothing new, as a similar approach has been used for years by enterprise database applications as a means to commit transaction logs to databases.
The end result of having a physical host server periodically look for redundant read-only pages between VMs is that it will often take the server several days to find redundant memory pages. With identical operating systems running on the same physical server, the memory sharing can reduce physical memory consumption up to 30 percent. Ultimately, the memory savings can lead to higher consolidation ratios or the flexibility to over commit memory. Memory overcommitment is an essential piece of virtualization management, as it allows administrators to allocate enough memory to each VM in order for it to handle workload peaks. With staggered performance peaks amongst VMs on the same physical host, consolidation can be optimized without sacrificing performance.
If your virtualization platform supports memory sharing, you should strongly consider associating like operating systems and applications with the same physical host wherever possible. The gains in memory efficiency that can result in higher consolidation and better peak performance are more than worth it.
Posted by: Chris Wolf