ESXi 5 allows virtual machines to use large memory pages (Memory pages of 2MB). There can be a performance benefit for Guest OS and applications that are requesting the use of large pages, as it can reduce the load on the host’s CPU. One thing to bear in mind around the use of large memory pages is that the Transparent Page Sharing (TPS) feature does not share large memory pages. It may mean that your host’s physical memory resources may become overcommitted more quickly that it otherwise would have done.
The settings relating to large memory pages can be found in the host’s advanced settings:
The relevant settings are shown below (taken from the vSphere Resource Management documentation):
Setting | Description | Value |
Mem.AllocGuestLargePage | Enables backing of guest large pages with host large pages. Reduces TLB misses and improves performance in server workloads that use guest large pages. 0=disable. | 1 |
Mem.AllocUsePSharePool
and Mem.AllocUseGuestPool |
Reduces memory fragmentation by improving the probability of backing guest large pages with host large pages. If host memory is fragmented, the availability of host large pages is reduced. 0 = disable. | 15 |
LPage.LPageDefragEnable | Enables large page defragmentation. 0 = disable. | 32 |
LPage.LPageDefragRateVM | Maximum number of large page defragmentation attempts per second per virtual machine. Accepted values range from 1 to 1024. | 256 |
LPage.LPageDefragRateTotal | Maximum number of large page defragmentation attempts per second. Accepted values range from 1 to 10240. | 256 |
LPage.LPageAlwaysTryForNPT | Try to allocate large pages for nested page tables (called ‘RVI’ by AMD or ‘EPT’ by Intel). If you enable this option, all guest memory is backed with large pages in machines that use nested page tables (for example, AMD Barcelona). If NPT is not available, only some portion of guest memory is backed with large pages. 0= disable. | 1 |
Remember, in order for virtual machines to make use of large memory pages, the appropriate configuration changes must be made within the guest operating system/application running in the virtual machine.