vSphere 5 memory management explained (part 1)
VMware memory management is still a topic which a lot of VMware administrators don’t understand. I often come across people who have no idea when VMware vSphere uses transparent page sharing (TPS), memory compression, host swapping or ballooning. They even mention disabling or removing the ballooning driver without knowing why. I also meet a lot of VMware administrators having trouble explaining the virtual machine memory allocation graphs.
Let’s start with the last one.
We all know the nice graphs with all different colors, 9 different memory classifications and reservations and limits.
- Consumed memory;
- Overhead consumption;
- Private memory;
- Shared memory;
- Swapped memory;
- Compressed memory;
- Ballooned memory;
- Unaccessed memory;
- Active memory.
- Worst case allocation;
- Overhead reservation.
Host memory: Consumed memory This may be a bit confusing because we’re checking the memory allocation for a single virtual machine but this is the amount of host memory currently allocated to this virtual machine (1.53GB). So all of the provisioned memory (1536MB) is currently used by the virtual machine.
Host memory: Overhead consumption Overhead consumption is the amount of memory used for virtualization overhead. This is the same value as mentioned with Memory overhead in the virtual machine general configuration screen.
Guest memory: Private memory Private memory is the amount of memory that is actually stored in the physical memory of the ESXi host. In this case the physical memory holds 1.50GB for this virtual machine. The private memory plus the overhead consumption mentioned above should equal the amount of consumed host memory. In this case, 1.50GB + 30MB = 1,53GB.
Guest memory: Shared memory Shared memory is the amount of memory shared by multiple virtual machines using Transparent Page Sharing (TPS).
Guest memory: Swapped memory The amount of guest memory which is swapped out and reclaimed by the VMkernel caused by a lack of provisioned memory. This value should be zero because memory swapping has a huge performance impact.
Guest memory: Compressed memory Compressed memory is the amount of virtual machine memory which is compressed by the VMkernel. This value should also be zero because memory compression has a performance impact. Memory compression is enabled by default. You can use the Advanced Settings dialog box in the vSphere Client to enable or disable memory compression for a host.
Guest memory: Ballooned memory The amount of virtual machine memory that is reclaimed through the balloon driver.
Guest memory: Unaccessed memory Unaccessed memory is the amount of memory that has never been accessed by the guest. This is essentially free memory for the virtual machine.
Guest memory: Active memory Active memory is the amount of memory actively used by the virtual machine. This may differ from what the guest operating system reports because the guest operating system generally has a more accurate view of the memory actively used. VMware ESXi uses sampling which often takes time to converge, so the memory usage measured in the virtual machine operating system may be more accurate when the workload memory usage is changing frequently.
Resource settings: Reservation, Limit, Configured, Shares These are pretty self-explanatory and should be known to every VMware administrator.
Resource settings: Worst Case Allocation Worst Case Allocation is the amount of memory that the virtual machine can actually get when all virtual machines use all their allocated memory. This is a very important metric when heavily overcommiting a VMware ESXi host.
Resource settings: Overhead Reservation Overhead Reservation is the amount of reserved memory overhead.
Now that you know how to read the various memory metrics, we can proceed with part 2. Later this week we will discuss the different memory management techniques which VMware vSphere uses (transparent page sharing (TPS), memory compression, host swapping or ballooning) and when they are used.