In vSphere 5, we introduced vNUMA which allows interested guest operating systems to see that they are
running on a NUMA (Non Uniform Memory Architecture) topology. For those not familar, here is a one-diagram NUMA explanation. As you can see, in the UMA case,
the cost of accessing a particular memory address is the same regardless of which socket your program is running on. In the NUMA case, however, it does matter. With memory attached directly to each socket there can be significant performance penalties if an application gener ates large numbers of non-local memory accesses.
The ESX hypervisor has been NUMA-aware for quite some time, making memory and CPU allocation decisions based on its full understanding of the topology of the system’s physical hardware. However, prior to vSphere 5 a VM that had vCPUs which spanned multiple physical sockets would believe it was running on a UMA system and therefore its own NUMA-aware resource management features would not function correctly. Similarly, NUMA-aware application runtimes would also be unable to optimize correctly in such circumstances.
Now that vSphere supports so-called Monster VMs with up to 32 vCPUs and 1 TB of memory, it is more likely that VMs will span machine sockets and more likely that NUMA could play a factor in application performance.
The recent VMware paper, Performance Evaluation of HPC Benchmarks on VMware’s ESX Server, presents a detailed analysis of the benefits of vNUMA using SPEC OMP and SPEC MPI has representative benchmarks. The figure below is taken from the paper and shows SPEC OMP results comparing virtual and native performance.
The lefthand side of the diagram shows that the performance of the benchmarks within the SPEC OMP suite when using vNUMA is generally close to that of native performance for VMs having from four to 64 vCPUs. The righthand graph illustrates the effect of exposing NUMA to the guest (vNUMA) versus not exposing it (Default) over a range of VM sizes. In all cases, significant performance improvements are achieved.
For more information about using vNUMA is vSphere 5, see the vSphere Resource Management Guide [PDF] and Performance Best Practices for VMware vSphere 5.0 [PDF]. We hope to have the full text of the vNUMA paper available on the external website soon.