Link to home
Start Free TrialLog in
Avatar of Joel Parmer
Joel ParmerFlag for United States of America

asked on

How many cores per numa node on a Xeon E5-2430?

Hey guys,

 I have a server with two processors.  They are listed as:

Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz (6 Cores)

I have to size a virtual SQL server on esxi 5.5 and need to match the cpus to the number of cores per NUMA node.

My question is, how many cores would equal one numa node in the above configuration?  I would prefer not to give a virtual server all 12 cores if one numa node is 6 or less.

The servers have 192 GB of memory in them if that matters in the calculation.

Thanks.
ASKER CERTIFIED SOLUTION
Avatar of Member_2_231077
Member_2_231077

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Joel Parmer

ASKER

Andy,

We were having huge performance issues with CPU on a virtual SQL server that had 2 cores assigned to it. One of the other engineers here did some research on it while I was out and found a known issue with virtualized sql and NUMA.  He went and gave the virtual server all 12 cores of the host so that the sql cpu matched the numa node.

Needless to say this isn't the best solution for the reasons you stated above, so I am trying to resolve it properly.

I am pretty sure that hyperthreading is turned on for the host hardware.  Is there an issue with esxi if you turn hyperthreading off on the host?  WIll that require a reinstall of the esxi OS?
Avatar of Member_2_231077
Member_2_231077

You are referring to this from the SQL on VMware best practices?

1. For small SQL Server virtual machines, allocate virtual machine CPUs equal to or less than the number of cores in each physical NUMA node.
 
2. For wide SQL Server virtual machines, size virtual machine CPUs to align with physical NUMA boundaries. Configure vNUMA to enable SQL Server NUMA optimization to take advantage of managing memory locality.

-----------

1 means give it less cores than one CPU has to offer so that it only uses one CPU for the SQL VM. NUMA doesn't get involved since the SQL runs on one CPU plus RAM that is local to that CPU - best option if you want to give SQL 4 cores for example.

2. means give it (in your case) an even number of cores greater than a single processor but less than the total and let vNUMA tell SQL about where the physical CPUs are. Best option if you want to give it 8 cores assuming hyper-threading is off, VMware will give SQL 4 cores on each processor and tell SQL about the underlying architecture.

If you give it more cores than there are on a single CPU without enabling vNUMA then SQL doesn't know about memory locality and runs threads on CPU1 with the associated RAM on CPU2. - very poor memory performance since everything has to go over the QPI bus.

Best option for the big stuff - don't virtualize it but that's expensive.
Hey Andy,

In the Performance Best Practices for VMware vSphere 5.5, on page 44 one of their recommendations was stated below:

Size your virtual machines so they align with physical NUMA boundaries. For example, if you have a host
system with six cores per NUMA node, size your virtual machines with a multiple of six vCPUs (i.e., 6
vCPUs, 12 vCPUs, 18 vCPUs, 24 vCPUs, and so on).

My question is if I assign a SQL server 2 vcpus (on one core) and change the numa.vcpu.min=2, will that allow the server to use NUMA technology and resolve the weird CPU load on the guest we were having, even though it's less cores than the NUMA node?
How much RAM have you allocated to the SQL VM?
24 GB