Affinitizing your Hyper-V VM's to a Non-Uniform Access (NUMA) node

There are not many performance knobs in Hyper-V which is by design.  We really seek out of the box performance.  However if you are looking for that last bit of performance from your Virtual Machines (VM’s) and have already made a good selection for networking and storage you might consider setting the Non-Uniform Access (NUMA) […]

There are not many performance knobs in Hyper-V which is by design.  We really seek out of the box performance.  However if you are looking for that last bit of performance from your Virtual Machines (VM’s) and have already made a good selection for networking and storage you might consider setting the Non-Uniform Access (NUMA) node.

On AMD and some Intel based architectures the machine might be defined as NUMA.  You can find out if the machine is NUMA but looking at the “Hyper-VM VM Vid Numa Node” performance counters.  This counter set will report a counter set instance for each NUMA node unless the machine is a single node. 

NUMA means each CPU has a different path to memory and those paths can have various lengths.  For example CPU 0 on Node 0 when accessing CPU M’s memory on Node X might take 10ns where as CPU 0 on Node 0 accessing CPU N’s memory on Node Y will take 20ns.  It’s this difference in memory access times that can impact overall VM performance.  The worst case would be for a VM’s Virtual Processor (VP) to be running on a node furthest from where the memory for the VM is allocated.

Full Article