After doing a range of Memory testing and analysis on a group of Vmware Virtual Machines, the subject of the “Unlimited” Memory/CPU tick box was brought up.
When Resource Allocation’s are setup on a VM there is the option of selecting an Unlimited Limit. It seems as though some people misunderstand exactly what that tick box means.
So i will do my best to try and explain exactly “Unlimited” means.
When you allocate Memory to a VM, the first thing you do is configure the amount of memory that you want it to have.
As you can see above, i have allocated 1084MB of Memory.
Next, Shares, Reservations and Limits are configured.
The Shares are left as Normal, There is a Reservation of 1084MB set which will guarantee that my VM will always have at least 1084MB of RAM.
The Limit is set to “Unlimited”.
To many, it is thought that an Unlimited Limit means that should the VM run out of Configured Memory the VM would be able to borrow all of the extra Memory it needs from the ESX Host. This is not the case!
What an Unlimited Limit actually means is; the VM is able to utilise all of the Configured Memory that has been assigned to it.
So the VM in the example has been assigned 1084MB and the Limit is set to Unlimited, the most amount of Memory that VM will ever get is 1084MB, even if the ESX Host has many GB’s spare. If the Limit is set to 512MB, the VM can only use 512MB of physical Memory from the Host. Should the VM need more than 512MB of Memory, the VM can use the remaining 572MB as a VMKernel Swap file.
I hope this makes it a little clearer and the information i have given is correct. If you feel that something i have written is wrong, please comment below.