Dynamic Memory for Hyper-V in Windows Server 2008 R2 SP1

I’ve just finished watching Virtual PC Guy’s TechEd video on the forthcoming Dynamic Memory update for Hyper-V in Windows Server 2008 R2 SP1. The beta release of the service pack is due in July. The video is fairly lengthy, at around 80 minutes, but is well worth a watch if you’re interested and find the time. If not, here’s a round-up:

Microsoft’s approach to Dynamic Memory is fundamentally different than VMWare’s overcommitment, in that VMWare doesn’t trust information about memory usage from within the guest, whereas Microsoft’s implementation is based around an awareness of the amount and type of memory that’s being used at all times.

Dynamic Memory will work by Adding/Removing memory.

Adding memory is enabled through a new synthetic memory driver.

Removing memory that’s not being used is done with ballooning.

Memory is now assigned with a few new values:

Startup memory is the amount of memory assigned to a VM, which is also the minimum memory the VM will consume (default value is 512 MB).

Maximum memory limits how much memory a VM can consume.

Priority can be assigned to specific VMs in order to make sure that they receive available memory before other lower-priority VMs.

A Memory Buffer can be set to reserve memory for specific VMs, for instance if they need extra memory for file caching.

Hyper-V Manager adds two new columns.

Current Memory identifies how much memory the VM is consuming.

Memory Availability identifies the difference between how much memory a VM has vs. wants in a +/-% figure.

When the availability goes negative, the Windows guest will start to work with the lesser amount of memory that’s now available to it (via paging, etc).

Negative availability will result in reduced performance, but the systems will continue to function.

Memory is now reserved for the root partition in a different way, so that dynamic memory won’t bring down the host.

This amount can be configured with a new registry key based on how the root partition is being used, for instance if it’s your desktop OS.

As Dynamic Memory is used more, the chances of spanning NUMA nodes increases (on NUMA systems).

He points out that different systems have vastly different Back Channel performance, so the impact of NUMA Spanning can be negligible or drastic.

In SP1, NUMA Spanning can be disabled (if desired).

Dynamic Memory also supports Large Pages, which are likely to become more common with virtualised Exchange/SQL.

VMWare cannot overcommit these pages.

I’ve asked if there are specific processor requirements. I’ll be interested to see how/if this supports processors that don’t have SLAT.