Figuring out your NUMA topology with Hyper-V

I was recently asked how you should go about determining the NUMA topology of a physical computer, for the purposes of planning a Hyper-V deployment.  This is something that is normally quite tricky to do – so we actually included this information directly into the Hyper-V PowerShell interface to make it easier for people.

What you want to do is to open a PowerShell window and run:

$numa = (get-vmhost).HostNumaStatus

You can then get the number of NUMA nodes on your computer by running:

$numa.length

You can also get detailed information about the number of CPU cores and the amount of memory on each NUMA node by running:

$numa | select NodeID, MemoryTotal, @{name="Cores per node"; expression={$_.ProcessorsAvailability.length}}

(note – you can have NUMA nodes with different amounts of memory / CPU cores in a single computer).

If I run this on my (single NUMA node) computer I get the following information:

clip_image002

Cheers,
Ben