Hyper-V Program Manager
Before I get started on this topic - let me pause to address the first question that many people will have - what is NUMA? NUMA stands for 'Non-Uniform Memory Access'. NUMA is an architecture for multiprocessor computers. On a non-NUMA system memory is handled as a single resource, and all processors use the same pool of memory. The problem with this is that you can get high contention rates as you add more processors. NUMA attempts to address this contention by breaking the system up into nodes. Each node contains its own processor(s) and a local block of memory. The processor(s) then have low contention access to the local memory in the NUMA node, however the downside of NUMA is that if a processor needs to access memory in a different NUMA node, there is a performance penalty involved. The exact penalty for accessing remote memory varies greatly between implementation. On some systems (like my home system) the penalty is about 15%, but on other systems it can be as high as 600%.
Now - where does Virtual Server come into play here? Well - by default Virtual Server will attempt to allocate processing resources and memory resources for a virtual machine on the same NUMA node. But, this is not always possible. To help people diagnose NUMA configuration issues - there are two possible warnings that Virtual Server can report on NUMA systems:
A final note on NUMA - as AMD Opterons have an integrated memory controller as part of the processor - which means that any multiprocessor AMD system is inherently NUMA.
"A final note on NUMA - as AMD Opterons have an integrated memory controller as part of the processor - which means that any multiprocessor AMD system is inherently NUMA."
Just a clarification for those who may ask, that literally means multiprocessor AMD systems and does not include current single socket dual core systems. Just a single AMD dual core processor would only have a single memory controller that it would have access to on currently available versions.