VMware Cloud Community
DarrenNJ
Contributor
Contributor

Windows Server 2016 Essentials only using 2 logical cores (out of 24) instead of 2 physical cores (out of 12)

I purchased a used Dell PowerEdge R710 which has two Xeon X5670 CPU's (6 core each = 12 total).

I loaded the free VMware vsphere hypervisor v6.7 and it ran beautifully.

I then setup a Windows Server 2016 Essentials machine, which apparently only allows 2 cores.

Detected are 24 logical cores.

But Windows is only letting me 2 of the 24 Logical. So it's running really slow.

Can't I configure VMware, somehow, to let Windows use 2 of the real 12 cores, instead of only 2 of the logical 24 cores?

Darren

0 Kudos
8 Replies
dbalcaraz
Expert
Expert

Hi,

Logical cores = Sockets * core

If you use HT then: Logical cores *2 (that's not absolutely true)

So, which settings are you applying to the VM?

1 Socket and 2 Cores or 1 Core and 2 sockets?

And then, you only can use logical cores in a VM, so there is no option to use the "real cores" unless you disable HT.

-------------------------------------------------------- "I greet each challenge with expectation"
0 Kudos
DarrenNJ
Contributor
Contributor

Just a clarification, in Windows system settings, it shows the server as having 2 CPU's.

In VMWare > CPU, I tried many different settings and the most number of cores I could assign to the virtual machine was 8. Anything higher and I would be prompted by Microsoft that I've exceeded the allowed.

pastedImage_0.png

0 Kudos
DarrenNJ
Contributor
Contributor

8 Cores and 1 socket is the max I could specify, without Windows saying I've exceeded the allowed CPU's. Windows sees the 8 Cores x 1 socket as 2 CPU's.

Should I be swapping this as some other combination, to increase performance?


See my other reply with screenshot from VMware CPU settings.

Thanks so much!

0 Kudos
dbalcaraz
Expert
Expert

Never used the Essentials (always at least Standard) but did you check if there are limitations such CPU utilization Smiley Wink?

Seems that Essentials only let you use 2 CPUs :Windows Server 2016 Editions comparison - Thomas-Krenn-Wiki

So, the Guest OS is limiting the virtual HW.

-------------------------------------------------------- "I greet each challenge with expectation"
0 Kudos
DarrenNJ
Contributor
Contributor

I just read that I could go to VM Options > CPU > Advanced and change cpuid.coresPerSocket from the default 1 to 4 or 8. I've changed it to 8.

Windows still sees 2 CPU's. So I'm not sure if I just increased performance or not.

cpu2.png

0 Kudos
DarrenNJ
Contributor
Contributor

Also since I did that, VMware is now showing a slightly different config under CPU

cpu3.png

0 Kudos
dbalcaraz
Expert
Expert

Hi,


This advanced configuration just set the cores per socket, and if you use 2 sockets * 4 cores = 8 vCPUs.

As I told you, the problem is the Guest OS, W2016 Essentials doesn't recognize more than 2 vCPUs, so, no matter which configuration did you set in the VM because you're the GuestOS will see only a maximum of 2 vCPUs.

-------------------------------------------------------- "I greet each challenge with expectation"
0 Kudos
Dave_the_Wave
Hot Shot
Hot Shot

You don't seem to understand how Intel choses to provide a core to ESXi for HT.

ESXi is reporting exactly what it gets: a core, more preciosely, a lCPU.

According to your belief, if we were to give a VM just 1vCPU, then that would only use 1lCPU, or even more silly half a pCPU?

Disabling HT would be a severe performance hit (related to esx.problem.hyperthreading.unmitigated).

pCPU's with HT run everything a good 25-30% faster.

I tested this with Sysinternal's CPUSTRES.EXE on a very same X5670:

20181103-ESXi60U3_1vCPU_CPUSTRES-01.gif

...on a VM with 1vCPU:

20181103-ESXi60U3_1vCPU_CPUSTRES-02.gif

...and appears to be isolated on just 1 real core, just about one-sixth of a X5670 (of 6 cores, HT enabled):

20181103-ESXi60U3_1vCPU_CPUSTRES-03.gif

So when the 1vCPU is being red-lined, I am indeed using up a whole 1pCPU or 2lCPU.

Process Affinity will take care of it and isolate that busy VM to just one real core, 1pCPU.

Don't use HT in the equation. HT helps but HT isn't two cores. If your 12 core host reports 24 logical processors, it still and always will have 12 cores always.

NUMA will take care of your sockets/cores/threads, if the choice OS doesn't have any socket handicaps, 1Socket=1CPU=1core makes for easy setup. From all the tests I have done, the VM only cares about the total final count of beer cans you gave it, regardless of if they were bundled in four 6 packs, or two 12 packs, or the one 24 flat.

VMware documentation obfuscated the matter somewhat with Windows OS licensing issues. Some Standard Server versions will only allow maximum 2way=2sockets, so if that was the license you had, you could ramp up a rather beefy VM by setting it up as 2 CPU with 8 cores per socket. Now you have a Windows Standard Server that is running 16 threads that would be otherwise impossible in the real world.

It appears 2016 Essentials has enforced this trick being able to detect itself as a VM and thus cap itself to the 2vCPU.

0 Kudos