Q. How does dynamic memory in Hyper-V in Windows 2008 R2 SP1 work?

A. Windows Server 2008 R2 SP1will introduce a much sought after feature for Hyper-V, namely dynamic memory for virtual machines (VMs). In versions before SP1, a VM is assigned a fixed amount of memory that's allocated when the VM is turned on. With SP1, you can set an initial amount of memory for each VM and a maximum amount of memory that the VM can grow to. This is achieved through two technologies.

Dynamic memory addition is used to add more memory to a VM if it's deemed necessary and physical RAM is available in the Hyper-V host. Dynamic memory addition is supported for Windows Vista, Windows Server 2003, and later OSs. Note that while I'm saying dynamic memory addition, this isn't actually using the memory hot-add capability in the OS. Instead, the memory is added via a kernel enlightenment for the supported guest OSs that handle the addition of memory. If the guest OS doesn't support dynamic memory addition, it won't recognize the additional memory and may cause a problem, so don't use it.

When reclaiming memory, things are more complicated—dynamically removing RAM is far more complex and has a far more limited set of supporting OSs. So instead of removing memory from the VM, a kernel level device driver, known as a balloon driver, is used to request memory from the guest OS based on a target size set by the hypervisor.

For example, suppose the hypervisor wants to reclaim 200MB of memory from a VM, the hypervisor instructs the balloon driver to inflate to 200MB, which will cause the driver to request 200MB of memory from the guest OS kernel. When the memory is allocated to the balloon driver, the balloon driver notifies the hypervisor of the memory pages it has been allocated. Then the hypervisor can just release that memory from the VM assignment, because it can no longer be used by the rest of the guest OS. The following image illustrates this process.

From the guest's perspective, the amount of total physical RAM will show the high watermark of the memory allocated to the VM since it was booted. You can't see the balloon size from within the guest—you have to use performance counters in the parent partition.

One interesting data point on the Hyper-V approach is that Hyper-V actually tracks how much memory the VM should have to perform optimally and shows what percentage of it the VM has. This ideal memory is not just based on what the VM is trying to write to—it considers how the memory is being used, such as the amount used for caching.

Please or Register to post comments.

IT/Dev Connections

Las Vegas
September 30th - October 4th

Paul ThurottYou'll have the opportunity to experience:
• The Microsoft
Technology Roadmap
• Office 365 Implementation
• Hyper-V Optimizing
• Windows 8 Deployment
and much more!

Come See Paul Thurrott & Rod Trent in Person!

Early Registration Now Open

Upcoming Training

Mastering System Center 2012

During over 6 hours of training you can join John Savill from your computer as he will walk you through the key components and capabilities of System Center 2012, what’s involved in using the components, and the benefit they can bring to your environment.

Register Now

Current Issue

May 2013 - The NameTranslate object is useful when you need to translate Active Directory object names between different formats, but it's awkward to use from PowerShell. Here's a PowerShell script that eliminates the awkwardness.

CURRENT ISSUE / ARCHIVE / SUBSCRIBE

Windows Forums

Get answers to questions, share tips, and engage with the Windows Community in our Forums.