NUMA Stands for Non-Uniform Memory Access. Name itself says what is it. Isn’t it??
In a NUMA system, CPUs are arranged in smaller systems called nodes. Each node has its own processors and memory, and is connected to the larger system through a cache-coherent interconnect bus.
Each Node connected to set of CPUs and Memory which are called Local Resources. Neighbor Node resources are called It’s Remote Resources.
Okay, How it is getting divided??. It is decided by the Hardware vendor.. Yes, They will decide the NUMA Groupings based on the Logical Processors and Physical RAM installed along with Cache Memory available in the Physical Hardware Box.
For example, if there is 40 Logical Processors and 80GB Physical RAM Installed. It will be divided into 10 CPUs and 20GB RAM for each Node.
Whenever Local CPUs required Memory it will try to locate which is very nearby called it is local Memory(Local RAM). by default, CPUs Will try to use it is local resources always. In case, If there is no Local resources are available. Processor end up with memory crunch and it will becomes failed. NUMA fulfills this GAP. How?
Take an example, in the above diagram, I have shown you four Node NUMA how it physically configured. if you execute the Command Get-VMHostNumanode. You will get the actual configuration.
Here, You see in the NodeId 0, MemoryAvailable is 3408MB and NodeId 3 has 4844MB. In this case, If there is more memory required for the VMs which are part of NodeId 0, It will fail since there is no more Memory Available. whatever available memory in the NodeId 3 will be in Idle or waste since there is no requirement for them for the VMs which are part of the NodeId 3. There is a GAP..Right??
NUMA will help us to resolve this Gaps by allowing access of the Remove Available Memory in case there is no free memory available in the Local. It is great right??
Run Get-VMHostNumaNodeStatus to get VMs which are part of the each Node.
What is merits and demerits of NUMA?
How to Enable NUMA?
You can enable NUMA using the HYPER-V Settings of VMhost.
Old Versions of Windows(Like Server 2003) are not NUMA Aware Applications. Wherein now including SQL 2012 is NUMA Aware Applications.