Tips
VM Placement: Does the Guest OS Matter?
Grouping VMs by OS and application on a physical host can improve memory performance.
Chris: I've heard conflicting accounts from consultants on virtual
machine placement. Some say to group VMs with like OSes and applications
on the same physical hosts. Several others say it doesn't matter. I attended
one of your seminars and remember you mentioning that there is a benefit
to placing like applications and operating systems on the same host, but
can't remember what that benefit is. Can you shed some light on this?
-- Kumar
Grouping VMs running like operating systems or applications is advantageous
for organizations using a virtualization platform that supports memory
sharing. Memory sharing is a feature of select virtualization platforms
and is used by the virtualization engine to remove redundant memory pages.
Consider 10 VMs running on a system that run the exact same OS. In such
a scenario, the guest OS in all 10 VMs would require the same read-only
pages for OS data. Why load the same page into physical memory 10 times
when only one instance is really needed? That is the logic behind memory
sharing.
Memory sharing is a very useful server virtualization feature; however,
the majority of server virtualization platforms do not support it. The
varying levels of memory sharing support amongst platforms is likely what
led Kumar to receive different perspectives from the consultants that
he had spoken with.
Memory sharing is one of the under the hood technologies
and in my experience remains relatively unknown. Two x86 virtualization
platforms offer memory sharing today: VMware ESX Server and SWsoft Virtuozzo.
Microsoft Virtual Server and Xen-based hypervisors (i.e. Citrix XenServer,
Xen 3.x on Novell SuSE Enterprise Server, Xen 3.x on Red Hat Enterprise
Linux, Virtual Iron) do not currently support memory sharing. Both Microsoft
and XenSource claim performance as justification for not supporting memory
sharing which, to a degree, is true.
The trick to an effective memory sharing architecture, however, is for
the virtualization platform to scan for redundant memory pages when resource
utilization is at a minimum, so the extra CPU cycles needed to locate
redundant memory pages ultimately has no impact on VM performance. This
is how memory sharing is managed on a VMware ESX Server. An ESX Server
will only scan for redundant physical memory pages when resource utilization
is at a minimum, oftentimes causing scans to only run at night during
non-business hours.
Since system resources are only devoted to shared memory optimization
during off-peak hours, it may take up to a week or longer before an ESX
server realizes optimal memory consolidation. The result is up to a 30
percent reduction in required physical memory. Get more information and
resources on virtual machine memory sharing at my blog post, "Server
Virtualization Memory Sharing -- Vendors Divided."