NUMA (Non Uniform Memory Access) is a computer architecture used in multiprocessor systems in which the time required for a processor to access memory depends on the memory’s location relative to the processor.
NUMA attempts to close the gap between the speed of processors and the memory they use by providing separate memory on a per-processor basis, thus avoiding the performance hit caused when multiple processors try to access the same memory. Each block of dedicated memory is known as a NUMA node.
The default virtual NUMA topology that is projected into a Hyper-V VM is optimized to match the host’s NUMA topology, as shown in this figure.
A node consists of a set of memory and logical processors. I’ll teach you how to identify the amount of memory and logic processor that each node has. This is very important because when you start a virtual machine, it creates an affinity with one of the nodes in a virtual machine should not have more memory than a node, because in this case you will need access to a memory in the remote node, this is called NUMA Spanning, and it is enabled by default in Hyper-V as shown in the image below.
I’m using my corporate notebook, and standard notebook will rarely have more than one Node NUMA, in large servers is common to have between 4-8 nodes in. First I open the Task Manager to see the number of logical processors and memory available.
Task Manager to see total memory
Observe that my computer has 4 logical processor and 8 GB of memory.
Open Performance Monitor and look for Hyper-V VM Vid Numa Node counter, expand arrow and, select PageCount and ProcessorCount and click on Add and OK, here you can see immediately how many nodes in Instances of select objects, there is only one Numa Node : VID NUMA0
Now, change visualization mode to Report
Ignore the last three zeros, immediately you already can see in ProcessorCount the number of Logical Processors that are 4, value that was expected. Now to determine how many memory we need to do some calculations. Each PageCount is equivalent 4KB, so open your Calculator.
Take the amount of PageCount and multiply it by 4.
divide the value by 1024 twice, this way you will find the value in GB.
There, we found the value 7.8 we can consider 8GB which is exactly the amount of physical memory on the computer. Do the same for all nodes in order to determine the other values. You will observe that the values are equal, and that the sum of all processors and memory of each node must match exactly the maximum amount identified by the Task Manager