Seeing at the moment there is a bit of a focus around VM performance and NUMA sizing thanks to the new Host Deepdive book that was released recently I thought it would be good to see if there was a way to quickly audit an environment to find VMs that exceeded NUMA nodes.
PowerCLI happens to have the info we need buried within and with some some basic math we can filter out VMs that are too large for NUMA node based on vCPU, Memory or both in addition I’ve written the script so that it caters for heterogeneous clusters and finds the host/s with the smallest NUMA node size any compares the VMs within the cluster to it.
With the above example we can see that within this cluster there are some hosts with dual 8 core CPUs and some dual 10 core CPUs and they all have 128GB RAM per NUMA node. There are also two VMs that exceed the amount of CPUs per socket (both VMs have 12 vCPU with Hot Plug enabled and a single VM that exceeds a NUMA node based on RAM as it has 132GB of RAM and the NUMA node only has 128GB.
From this we can look to resize the VMs to fit within the NUMA nodes on the cluster, potentially disable CPU Hot Plug or and also after resizing create some DRS groups to ensure these VMs stay on the hosts with larger CPUs.
To use the script just connect to your vCenter server/s with PowerCLI and run the script.
I’d also suggest checking out these videos that show in great detail the advantages of tuning your VMs correctly.
VMworld 2017 SER2724BU Extreme Performance Series: Performance Best Practices
VMworld 2017 VIRT1430BU Performance Tuning and Monitoring for Virtualized Database Servers
VMworld 2017 VIRT1309BU Monster VMs (Database Virtualization) with VMware vSphere 6.5