With the release of Service Pack 1 for Windows Server 2008 R2 and Windows 7, a few new features were added to Windows. My favorite is, by far, Dynamic Memory for virtual machines on Hyper-V. What this does is basically allow you to set a range of memory, say from 512MB to 2048MB, that a VM will consume. The guest machine then (as long as either the service pack or the updated integration services are installed) can request additional memory up to the upper limit when it needs it. This works for Windows Server 2003 and higher, as well as with Vista and 7 on the client side.
The best thing about this feature is that it allows for greater “VM density” or more guests per host. In my lab environment, I have been hitting the RAM ceiling for a while and have had to tweak the settings of my machines just so that I could get enough of them running at once. And even though most machines don’t have a constant load on them, I don’t like setting the RAM below 1GB on any guest. However, with Dynamic Memory now available to me, I’ve set my default server RAM configuration to go from 512MB to 2048MB (unless it’s a high-demand server in which case the amount goes up based on need.) Most servers with the default configuration hover around the 512MB mark now, leaving me with much more RAM available to the other machines than I’ve had before. I can even set priority on which machine gets “dibs” on the available memory first.
One of the best parts of this new feature is the new view in the Hyper-V management console which lets you know which of your servers is either over or under-burdened. You can then adjust the resources as needed. In fact, now that this feature is up and running in my virtual lab, RAM is no longer the bottleneck: disk performance is. I had to buy new drives to spread the VM load.