virag2k wrote:
Now I create five VMs with Windows 2003 guest OS and specify a memory reservation of 1 GB. In this case assume I power ON all five VMs sequentially from VM1 to VM5. Further assume VM4 and VM5 are idle (no activity inside the guest OS), and VM1, VM2, VM3 are running under peak loads. In this case would the VMKernel dynamically reallocate the memory from VM4 and VM5 to other three running VMs?
If VM4 and VM5 has at some point been using their 1 GB then this memory will not be reallocated to other VMs, even if it is not really active. It is correct that the memory reservation could be seen as an exclusion from memory reclaiming from the vmkernel.
How much memory has each virtual machine been given, do they all have 1 GB, or more?
virag2k wrote:
I guess the real question here is reservation means 1 GB memory should be free on the host to start a VM in this case.
There is no guarantee that the VM only start only if you have free memory on the host, however it will check that there is not more VMs running with Memory reservations which would in total be over the physical size of memory. That is, you could have ten other VMs (without reservations) consuming all physical memory on the host and the new VM would still start. The vmkernel would then "punish" the other VMs and giving the new VM all requested memory. If all machines have all their memory reserved then this will mean that the new VM will only start if 1 GB is free.