We have a SQL Server 2012 SP 2 CU 8 instance in a VMWare host. The operating system is Windows Server 2012 R2.
Windows Task Manager says that we have two sockets and 8 virtual cores. This number corresponds with the actual hardware beneath the guest.
In Task Manager I also can't change the view to NUMA nodes.
In SQL Server still only one NUMA node to see
Also this snippet from Glen Berrys diagnostics queries gives me this information
EXEC sys.xp_readerrorlog 0, 1, N'detected', N'socket';
SQL Server detected 2 sockets with 4 cores per socket and 4 logical
processors per socket, 8 total logical processors; using 8 logical
processors based on SQL Server licensing. This is an informational
message; no user action is required.
From all this information i can suspect that we are running on only one NUMA node but across two sockets.
My Questions:
- Is it right that we are running on only one NUMA node?
- Can this hurt performance even when everything is located on one NUMA node?
- What component exactly dictates the NUMA boundaries? E.g. if I have a
two socket mainboard with two Intel E5 processors does the mainboard
dictate how many NUMA nodes I have or the processor.
I think there is a lot of misinformation out there about NUMA nodes. If someone can answer my question or point to a useful resource that explains this concept in detail that would be really appreciated.
Best Answer
The following two articles make it clear that VMware will present a virtual NUMA configuration to the guest OS that is optimal. Accordingly, the number of sockets that are configured on the VM are more or less irrelevant as to the number of NUMA nodes. If the actual hardware has at least 8 cores in a NUMA node, then VMware is only going to present one NUMA node to a guest that has 8 CPUs, regardless of the VM's socket count.
Does corespersocket Affect Performance?
Virtual Machine vCPU and vNUMA Rightsizing – Rules of Thumb
Determining NUMA node boundaries for modern CPUs contains two helpful quotes that show that, even on hardware, number of sockets is not always equal to number of NUMA nodes:
and
I also ran across an TechNet article,Soft-NUMA (SQL Server), stating that each socket is usually represented by one NUMA node, but it doesn't explain when it wouldn't be.
You also might check the BIOS of the hardware to ensure that NUMA is enabled. I would be surprised if it was disabled, but I've learned through my career to never assume that someone didn't do something completely irrational.
Answers to your questions: