In this post, let’s get to know about Memory Overcommitment and Memory Overhead.
VMkernel is the one who actually manages memory on the ESXi host. VMkernel reserves some amount of RAM for its own use and the rest is for the virtual machines.
Each VM has a memory overhead which is needed for its vitualization. Remember, overhead is not part of what is configured on the VM. Any VM uses its configured amount of RAM plus the memory overhead from the physical host. Below is the memory snap of a very tiny Linux VM. The amount of memory that the guest operating system actually uses (active memory) depends on the workload, shares, reservations and limits configured on the VM.
Here, 64 MB is the configured memory, 48 MB is the active memory and 24 MB is the memory overhead, meaning the amount of physical RAM that is used by this VM is 64+24 ie., 88 MB (not considering any memory management techniques).
“Reservation + Overhead” is the amount of RAM that is guaranteed to a VM by the ESXi host, in our example it is 24 MB since the Reservation is zero.
The configured memory of all virtual machines on an ESXi host may exceed the actual available physical RAM on the host. This situation is not overcommitment. Overcommitment is when the combined active memory footprint of all virtual machines is more than the available physical memory. This is when the memory management techniques come into action. In an overcommitted environment, ESXi may run out of memory when the reservable memory has been used up completely and this will not allow the new VM’s to power on.