My machine is running on Window 2012 R2, with 48 Logical processors and 240GB RAM.

I have create a VM with 48 processors and 230GB ram.

I am double about the NUMA nodes I should create and memory assign to each nodes. By click a the 'Hardware Typologic', it create 24 nodes with 2 processors each. Currently I have set to 2 NUMA node per socket, each NUMA node with 12 processors, and 65GB or RAM per each NUMA.

The problem I am facing is the SQL server(Window 2008 + sql 2008) performance. It can take 1-2 seconds when processing few hundred of line in a batch. But, it could use the same times when processing few lines. The performance is up and down.

I need some advice on the NUMA configuration based on the processors and RAMS i assign to the VM.

Thanks Louis

  • 3
    48 logical processors is probably 24 actual cores, which is either 2x 12-core or 4x 6-core processors. Either way, you are most likely allocating hyperthreaded cores (i.e. not real cores, just a way of abstracting task switching out to the CPU), so there's your first problem. The second thing is... what?! Why is this machine a VM when it takes up the entire host? Clearly it should be installed on bare metal. – Mark Henderson Mar 14 '16 at 14:15
  • 3
    Secondly, running something like this over multiple NUMA nodes, virtualised, is probably not a good idea. I'm not much of a virtualisation expert at the low level like this, but my guess is that the SQL server has one view of the NUMA layout which is different from the actual NUMA layout. Do you know what NUMA stands for and what it does? Non-Uniform Memory Access. It's probably trying to use RAM that it thinks is local, but is really attached to the other CPU. And vice versa. – Mark Henderson Mar 14 '16 at 14:17
  • 1
    Why you dont run it physical if you use all the server ressource for it in a VM ? – yagmoth555 Mar 14 '16 at 14:35
  • I have seen entire host VMs before, for high availability and isolation reasons. Although in a VMware environment. – John Mahowald Mar 15 '16 at 13:01

When you click "Use Hardware Topology" the VM assumes the same configuration reported by the BIOS of the physical machine. If it then said that your VM had 24 NUMA nodes, that means your host's BIOS is reporting each core as a separate NUMA node, which is not particularly useful.

You should examine the BIOS settings of the physical host to see if you can get it to do something more reasonable. Then click "Use Hardware Topology" again to see the results. A machine with a well-functioning BIOS will generally report that each processor package is one NUMA node, or perhaps two.

In any case, it doesn't matter what you set the VM to if the underlying BIOS is broken, since Hyper-V will map virtual NUMA nodes onto whether the BIOS reports for physical NUMA nodes, and you're not going to get good performance until those physical NUMA nodes are described more usefully.


Guest Aware NUMA should actually improve performance of NUMA-aware guest OSs and applications, such as Windows Server and SQL Server.

See here for lots of details: https://technet.microsoft.com/en-us/library/dn282282.aspx?f=255&MSPPError=-2147217396

Leave the advanced processor settings alone, unless you have hosts in a cluster with different physical NUMA sizes.

Is Dynamic Memory enabled? If so, you lose guest-aware NUMA. When you need big high performance machines, use static RAM.

After that, I'd start looking at other possible causes, e.g. storage design/performance, SQL code, etc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.