VMware Cloud Community
drakino
Contributor
Contributor
Jump to solution

coresPerSocket not working, OS still sees single core vCPUs

I have a VMWare ESXi 4.0 server that I upgraded to 4.1 (now titled VMWare vSphere Hypervisor it seems), and I am trying to get vCPUs to show up to the OS with virtual cores.

I found this KB article (http://kb.vmware.com/kb/1010184) describing how to add cpuid.coresPerSocket, and it doesn't seem to be changing anything.

The server is a dual quad core Xeon 5400 series machine. My goal is to install Windows 7 in a VM and let it see 4 processors. If I set vCPUs to 4, Windows only sees and uses 2, due to the client OS only allowing 2 physical CPUs. I've tried setting vCPU to 1 and cpuid.coresPerSocket to 4, and the OS only sees one CPU. If I set vCPU to 2, and cpuid.coresPerSocket to 2, the OS still sees only 2 CPUs instead of 4.

The VM Version is reported as 7 in the vSphere client, and this was a clean new VM created after the 4.1 upgrade.

Tags (2)
Reply
0 Kudos
1 Solution

Accepted Solutions
rickardnobel
Champion
Champion
Jump to solution

>If I set vCPUs to 4, Windows only sees and uses 2, due to the client OS only allowing 2 physical CPUs. I've tried setting vCPU to

>1 and cpuid.coresPerSocket to 4, and the OS only sees one CPU. If I set vCPU to 2, and cpuid.coresPerSocket to 2, the OS

>still sees only 2 CPUs instead of 4.

Wait, this should in fact be the expected behavior. You shall give the VM the amount of vCPU that you actually want it to have, for example 4. Then use the option in the VMX file and set for example:

cpuid.coresPerSocket = 2

This would mean that Windows thinks it sees two dual core CPUs and a total of 4 logical cpu.

So use the ordinary tool to set the amount of vCPUs wished and the line in the VMX file just to "fool" the guest operating system.

My VMware blog: www.rickardnobel.se

View solution in original post

Reply
0 Kudos
7 Replies
a_p_
Leadership
Leadership
Jump to solution

Take a look into the VM's vmware.log file (or attach it). Maybe this helps determine the reason why it is not working.

André

Reply
0 Kudos
drakino
Contributor
Contributor
Jump to solution

Not seeing anything that really stands out in the log, but I don't have a ton of experience looking at these. I do see it acknowledging coresPerSocket is set to 2 (for this log), but nothing that explains why the OS isn't seeing it.

Reply
0 Kudos
rickardnobel
Champion
Champion
Jump to solution

I have a VMWare ESXi 4.0 server that I upgraded to 4.1 (now titled VMWare vSphere Hypervisor it seems),

Could there be a limit in the free version (Vmware vSphere Hypervisor) that blocks this?

My VMware blog: www.rickardnobel.se
Reply
0 Kudos
rickardnobel
Champion
Champion
Jump to solution

>If I set vCPUs to 4, Windows only sees and uses 2, due to the client OS only allowing 2 physical CPUs. I've tried setting vCPU to

>1 and cpuid.coresPerSocket to 4, and the OS only sees one CPU. If I set vCPU to 2, and cpuid.coresPerSocket to 2, the OS

>still sees only 2 CPUs instead of 4.

Wait, this should in fact be the expected behavior. You shall give the VM the amount of vCPU that you actually want it to have, for example 4. Then use the option in the VMX file and set for example:

cpuid.coresPerSocket = 2

This would mean that Windows thinks it sees two dual core CPUs and a total of 4 logical cpu.

So use the ordinary tool to set the amount of vCPUs wished and the line in the VMX file just to "fool" the guest operating system.

My VMware blog: www.rickardnobel.se
Reply
0 Kudos
drakino
Contributor
Contributor
Jump to solution

Aha, I was making the wrong assumption that vCPU still meant physical processors presented to the OS. Thanks for the assistance on this one, still getting up to speed on the differences between vSphere Hypervisor and the desktop products.

Reply
0 Kudos
rickardnobel
Champion
Champion
Jump to solution

Glad to be able to help!

My VMware blog: www.rickardnobel.se
Reply
0 Kudos
admin
Immortal
Immortal
Jump to solution

I've tried setting vCPU to 1 and cpuid.coresPerSocket to 4, and the OS only sees one CPU. If I set vCPU to 2, and cpuid.coresPerSocket to 2, the OS still sees only 2 CPUs instead of 4.

The number of vCPUs should be the total number of cores you want to see. What you want is:

numvcpus = 4

cpuid.coresPerSocket = 2

Reply
0 Kudos