What does Dynamic Memory look like to the Hyper-V Administrator ?

If you haven’t heard yet, Microsoft just Released To Manufacturing SP1 for Windows Server 2008 R2 and Windows 7. SP1 will be available for download on February 22nd. I would like to show you what Dynamic Memory looks like from the management and end user experience. This discussion will be from your administrators perspective, the next discussion will be from the virtual machines perspective. I’ll show you screen shots of the Hyper-V administrator console and screen shots of task manager within the virtual machine.

Dynamic Memory is configured for each virtual machine. When you upgrade a Hyper-V host to SP1, all of your existing virtual machines will maintain their current virtual machine configurations. This means that when SP1 is installed, all of your existing virtual machines will work just as before without need for modification. If you want to leverage Dynamic Memory, you must configure each virtual machine to use Dynamic Memory. You can mix virtual machine configurations, some can take advantage of Dynamic Memory while other virtual machines still use the static memory configuration, even on the same Hyper-V host.

Now we will walk through enabling Dynamic Memory. We do this by opening the virtual machine settings while the virtual machine is off. You cannot change the memory configuration of a running virtual machine. Once the VM settings are open, go to the memory setting page. Here you will see that the Hyper-V settings console has been updated and includes additional options on the memory settings page. Instead of just being able determine how much memory should be dedicated to each virtual machine, you can now designate the amount of memory to be provided when the virtual machine is started, and the maximum amount of memory the virtual machine will be allowed to consume over time. In my screen shot below, I’ve marked the Memory area with the red arrow. This is where we tell Hyper-V how much memory should be allocated to this particular virtual machine with it starts. We can also limit how much memory can be added to a particular virtual machine. If you look down to the Priority arrow, this is where we can determine the importance, with respect to memory allocation, of this particular virtual machine versus the other virtual machines running on a particular Hyper-V host. For the most part, I do not change the Memory weight setting for my virtual machines, they all have the same weight or priority. I manage my virtual machine weight by exception. For test VMs, I lower their memory weight and for my critical VMs, I’ll increase the memory weight. When additional memory is allocated to virtual machines, Hyper-V uses this Memory weight indicator to prioritize which VMs receive memory , this ensures that critical VMs receive the resources they need before other less critical VMs receive memory. If there is plenty of memory to go around, this setting has very little impact, but if memory starts to become a constrained resource, lower weighted VMs may lose memory to ensure that higher weighted VMs receive the memory they need. Take note, the Memory weight and Memory Buffer can be adjusted while the virtual machine is running!

We’ve added additional memory options that allow for a startup memory configuration and a maximum memory configuration for virtual machines. The Memory buffer setting lets us create a buffer so that memory is available on demand for critical VMs.

Once we complete and save these settings, we’re ready to start our virtual machine.

During the virtual machine start up, the VM receives 1GB of memory we initially allocated to it. Below is a screen shot from the Hyper-V manager showing our virtual machine starting up. The Assigned Memory column shows the 1024 MB of memory assigned to our VM. The great part about Dynamic Memory is that as demand increases, this virtual machine is allowed to request and consume more RAM, as long as there is additional RAM available on the Hyper-V server. Remember that we will allow this virtual machine to consume up to 4GB of RAM.

Below is a screen shot of task manager on the Hyper-V host while this virtual machine is starting. See the spike in physical memory? The spike is only 1GB, the amount we designated for startup.

This is a screen shot of task manager on our Hyper-V server as our virtual machine is started. Notice the Startup Spike in memory consumption. Hyper-V still requires available RAM in the Hyper-V server before it can start a virtual machine.

Check out the screen shot below. Now that this virtual machine is up and running, it actually takes fewer resources to run than we provided to it during start up. To me, the value in this configuration is that for those virtual machines that are “available” but “idle”, the resources a particular virtual machine consumes is reduced while still allowing that virtual machine to be “available” when it is needed.

This concludes my discussion today, I wanted to show you the administrative experience of Dynamic Memory. In my next discussion we will look inside the virtual machine to see how it “see’s” Dynamic Memory and we will dig into further detail on the overall scheme of Dynamic Memory.

We have a great Hyper-V Dynamic Memory Evaluation Guide here that will provide more details.