I first heard about NUMA (nonuniform memory access) when watching the Mark Russinovich video I posted about. I admit I’d not heard about it before but I was interested and so did a little more research into it. A quick search later using Live Search I’d come across the Wikipedia entry which gave quite a good description.
My interpretation of NUMA is that it provides greater CPU performance by allocating memory to a processor based on its location on the basis that memory local to a processor can be used more quickly than non-local memory.
I then came across a great article on Microsoft’s Technet with some cool diagrams that help explain the whole thing with a few scenarios:
1. No port to NUMA affinity
2. Associating a single port to multiple nodes to provide improved performance for a priority application
3. Associating multiple ports to multiple nodes
I also found a good whitepaper on Windows Server 2008 Memory Management which talks in more detail about how Microsoft have implemented more NUMA support than in previous versions of Windows. The sections relevant to NUMA include:
- NUMA Support
- Resource Allocation
- Default Node and Affinity
- Interrupt Affinity
- NUMA-Aware System Functions for Applications
- NUMA-Aware System Functions for Drivers