I get this question a lot, should I have memory reservation for critical apps even if I am plentiful on RAM and there is no over commitment?
VMware’s best practice for virtualizing critical applications is to reserve the VM’s memory to prevent a situation of memory being balloned or swapped out, this is detailed in many guides for different applications best practices, see here: https://www.vmware.com/business-critical-apps/ .
The question i am being asked a lot is “If i have plenty of RAM should i set memory reservations as well?” the short answer is yes!
But, there is no technical reason to do that though, if you have enough RAM ESXi will not baloon or swap your memory out, this is done only when ESXi reaches the em.MinFreePct “Soft” threshold of the memory sliding scale function, (see this article for more information on the sliding scale function http://blogs.vmware.com/vsphere/2012/05/memminfreepct-sliding-scale-function.html)
So why set RAM reservation in that case? The answer is future proof (or idiot proof). If in any case in the future ESXi reaches the “Soft” threshold, memory reservation will protect your application performance. what can cause this situation on a well designed system with no overcommitment?:
1. Human error – someone who dont follow the operational methodology for critical apps and overload the server.
2. Multi server HA event – there could be a situation that there are multi servers failing in a number that is over your HA admission control policy, in this case vSphere will try and bring the VMs up on a best effort potentially affecting your resource policies.
So why not set reservations for the CPU then? VMware’s recommendation for CPU is to make sure there is no overcommitmant by not allocating more vCPU then physical cores on the server but not to set reservations, unlike RAM CPU is not a pool of resource but a queue that service one thread at a time, if CPU access is being taken from your VM because of the reasons listed above and you change the shares of your VM to allow more access to your critical VM the result is immediate whereas on memory it will take time to get memory taken out back. Setting reservations on CPU will limit the ESXi scheduler from doing its job in the most efficient way in regular times.
To conclude, setting reservations will make sure your critical VMs are protected from their memory being taken from them and it needs ot be set even if you have planty of memory to go around. Niran
Image may be NSFW.Clik here to view.

Clik here to view.

Clik here to view.
