Since we released our NUMA metrics dashboard, hundreds of customers were able to detect issues and unbalances NUMA usage. The performance degradation due to NUMA remote node usage can be massive and easily reach 75% performance loss.
We also get many questions about vNUMA and how to configure NUMA the best way. Therefore, we start a series about NUMA, vNUMA with this article.
How to activate VMware vNUMA with lower CPU count
What is NUMA
Non-uniform memory access (NUMA) is a computer memory design used in multiprocessing, where the memory access time depends on the memory location relative to the processor. Under NUMA, a processor can access its own local memory faster than non-local memory (memory local to another processor or memory shared between processors). The benefits of NUMA are limited to particular workloads, notably on servers where the data is often associated strongly with certain tasks or users. Wikipedia —
When it comes to vNUMA, it means, that VMware ESXi is showing the physical NUMA configuration of the underlying hardware to the virtual machine, instead of hiding it.
You can read more about NUMA, vNUMA and Performance issues here:
vNUMA is deactivated by default for virtual machines with less than 9 vCPUs, or CPU or Memory hot-add is activated.
VMware offers a bunch of advanced parameters to tweak vNUMA that can be found here:
Activate vNUMA for VMs with less vCPUs cores (i. e. 4, 6 or 8 vCPUs)
The virtual machine must be powered off to proceed.
Deactivate Hot Plug
First make sure, that CPU hot add or hot plug are deactivated.
Same for Memory Hot Plug
Now we change the VM options
Change the NUMA option
Please keep in mind, that most advanced NUMA options are not existing in the list, so you need to add them. If the option is already in the list, you can just change the value and save the config.
add the parameter numa.vcpu.min
As the NUMA architecture will only be present with 9 and more vCPUs by default, you should set the value to the current amount of vCPUs, i. e. if you have 2 vCPU sockets and 2 vCPU cores each, you should set the value to 4.
After powering on the virtual machine the guest operating system can see the NUMA architecture and act accordingly.
Please be aware, that the VMware VMkernel does a pretty good job in managing NUMA, but sometimes and especially if you find systems that have NUMA unbalanced, it makes sense to give vNUMA the preference.