Q: If I disable NUMA spanning on my Windows Server 2012 Hyper-V server because my NUMA node no longer has memory, can Dynamic Memory allocate memory from other NUMA nodes?

A: With the new Windows Server 2012 scalability allowing virtual machines (VMs) to have up to 64 virtual processors and 1TB of memory, the NUMA topology of the physical host becomes more important. By default, Hyper-V enables NUMA spanning, which enables a VM to be allocated memory across the boundary of the NUMA node of the processor cores being used. This not only allows more VMs to run, it also might lead to an overall decrease in performance, as using memory outside of the NUMA node of the processor is more "expensive" in performance terms.

If you disable NUMA spanning (Hyper-V Settings, NUMA Spanning, deselect Allow virtual machines to span physical NUMA nodes) then a VM can't be allocated memory from remote NUMA nodes and would be limited to using memory on its local NUMA node.

If you disable NUMA spanning, then look at the performance counter Hyper-V Dynamic Memory Balancer - Available Memory, you will see multiple values, one for each NUMA node. If you have NUMA spanning turned on, you only see a single counter, System Balancer.

With NUMA spanning enabled, this is what you see:

With NUMA spanning disabled, this is what you see:

See also my FAQ  Q: What is the Windows Server 2012 NUMA Spanning option and should it be enabled or disabled?