We reserve the memory because:
- These VMs run linux and we want to emulate the real world as best as possible
- We want to use excess memory (memory not used for the java processes) for disk cache
And most importantly:
- we experience severe performance problems in java when not setting the reservation to the amount of memory allocated to the VM. System traces tell us that it tries to allocate memory and fails to do so resulting in extreme high cpu load and extremely bad application performance.
Fair enough - although not Reserving the memory should not cause allocation failures. As long as you Allocate the memory to the VM, the guest OS should be able to malloc() it.
Unfortunately the 10GB memory amount is a business constraint. If we wouldn't be able to load 3x10GB VMs onto the 32GB machine we would run into sizing issues (we are talking about ~120 VMs).
With only those three VMs on the system, the Reservation setting should have very little impact on overall performance. I suggest that you try leaving your allocation at 10GB and setting your Reservation to 8 or 9GB. This will allow your VMs to start by leaving enough room for overhead. You should also notice that the amount of Active memory will decline and the amount of Shared memory will increase over time due to transparent page sharing.
Let us know how it works out!
Ken Cline
VMware vExpert 2009
Technical Director, Virtualization
Wells Landers
TVAR Solutions, A Wells Landers Group Company
VMware Communities User Moderator