- Microsoft Hyper-V Dynamic Memory vs. VMware Memory Overcommit - Tue, Nov 9 2010
In an attempt to provide higher levels of server consolidation, both Microsoft and VMware have developed their own solution for higher utilization of Random Access Memory (RAM). VMware’s Memory Overcommit has been available for quite some time, while Dynamic Memory is a new player. How do they compare?
It is always hard to make comparisons like this one. I don’t want to start a fight between VMware’s and Microsoft’s fan-boys. In my view, it is too early to say which memory management technology is better. In this article, I will just compare both approaches.
VMware Memory Overcommit
I have always been amazed by VMware’s success with the Memory Overcommit technique, and the ability to provide more RAM to virtual machines than a physical computer actually has. I’m sure many system administrators use this feature in their organizations. It works on a very basic principles:
1. Give more memory to virtual machines than a physical computer has.
2. Identify the same memory blocks (by hash) in multiple virtual machines.
3. Compress the host memory by storing those blocks only once.
This is accomplished by External Page Sharing or Second Level Paging technique, which I won’t describe in detail here. It is important to note that VMware does not trust the information from the guest OS. Memory is assigned to virtual machines based on the information that is available on the level of the host OS. This makes sense because of security and stability reasons.
Microsoft Hyper-V Dynamic Memory
Hyper-V Dynamic Memory works different. Instead of compressing the host RAM, it allows virtual machines to demand more RAM if required. This works similar as with dynamic virtual disks. System administrators have to configure a startup (minimum) and a maximum amount of memory for each virtual machine. The sum of all maximum values can be larger than the total amount of memory on a physical server. Microsoft calls this Memory Oversubscription. However, the sum of all amounts of memory given to each virtual machine will never exceed the limits of a physical computer.
To use Dynamic Memory for Hyper-V, you have to install Service Pack 1 for Windows Server 2008 R2 which is still in beta. If you install the Integration Components in the guest OS, a small driver called Dynamic Memory Virtual Service Consumer (DM VSC) will monitor the memory usage in the guest OS. This driver collects information about current RAM requirements and reports it to the host which decides to give or take RAM from the virtual machine.
Hyper-V Dynamic Memory vs. VMware Memory Overcommit
It is too early to give a final judgment which technology is more effective. Microsoft virtualization team has a huge advantage for being able to work with the Windows kernel team (Linux distributions are not supported, yet, but it might change in future), and use information from the Windows kernel to calculate the current memory needs of a virtual machine.
However, Hyper-V Dynamic Memory still has to prove its efficiency in real world scenarios. Windows Server 2008 SP1 is still in beta, while VMware Memory Overcommit has been working reliably in enterprise environments for a long time. What’s your experience? Which technology do you prefer?
Ilija Brajkovic is a system administrator and MVP (Microsoft Most Valuable Professional) for the Virtual Machine expertise. He runs the Windows Server 2008 and Microsoft virtualization blog.
Want to write for 4sysops? We are looking for new authors.
Huh that’s interesting, I assumed that VMWare’s memory overcommit feature worked in the same way that you described Hyper V’s solution. So I’m left wondering why MS didn’t implement a memory compression system like VMWare’s AS WELL as their own memory overcommit system because surely then you would get even more memory for your VMs…
Memory overcommit has some drawbacks, there is a talk about that on Technet. Ben Armstrong explained why they decided not to use the same approach, but I didn’t wanted to start a flame in my article describing that.
Ilija, can you provide the link to the TechNet article you mention in comment #2?
Richard, enjoy 🙂
Ilija, thank you so much!
Memory overcommit has some drawbacks, there is a talk about that on Technet. Ben Armstrong explained why they decided not to use the same approach, but I didn't wanted to start a flame in my article describing that.