Share via

Only 2 cores showing up in task manager on a 4 core machine.

Anonymous
2011-11-22T21:06:03+00:00

I'm running Windows 7 Pro x64 as a VMed machine in ESXi.

  • ESXi is set to deliver all 4 CPUs.
  • It is showing 4 CPUs in device manager.
  • System info says, "Dual Core AMD Opteron Processor 280 2.41 GHz (2 processors).
  • I have set it to 2 CPUs in msconfig (and rebooted).  Prior to this, it only said 1 processor in the same location ^.
  • Task manager only shows 2 CPUs in the usage.
  • Affinity only shows 2 CPUs.
  • Edit: Bios is set to use all the cores.

Edit:  Also attempted these fixes (which did nothing):

  • Opened up EasyBCD 2.x and set Number of CPUs to 0.
  • Deleted the CPUs from the computer.
  • Shut down.
  • Booted back up - Still showing 2 CPUs in task manager.

Other info:  The OS was installed with both physical CPUs installed and active.  The 4 CPUs are working for other OSes.

Edit (2):

Found the answer here: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1010184

Some operating system SKUs are hard-limited to run on a fixed number of CPUs. For example, Windows Server 2003 Standard Edition is limited to run on up to 4 CPUs. If you install this operating system on an 8-socket physical box, it runs on only 4 of the CPUs. The operating system takes advantage of multi-core CPUs so if your CPUs are dual core, Windows Server 2003 SE runs on up to 8 cores, and if you have quad-core CPUs, it runs on up to 16 cores, and so on.

Virtual CPUs (vCPU) in VMware virtual machines appear to the operating system as single core CPUs. So, just like in the example above, if you create a virtual machine with 8 vCPUs (which you can do with vSphere) the operating system sees 8 single core CPUs. If the operating system is Windows 2003 SE (limited to 4 CPUs) it only runs on 4 vCPUs.

Note: Remember that 1 vCPU maps onto a physical core not a physical CPU, so the virtual machine is actually getting to run on 4 cores.

Considering that 1 vCPU is equal to 1 CPU is an assumption for the sake of simplification, since vCPUs are scheduled on logical CPUs which are hardware execution contexts. These tasks can take a while in the case of a single core CPU, CPUs that have only 1 thread per core, or could be just a thread in the case of a CPU that has hyperthreading.

Consider this scenario:

In the physical world you can run Windows 2003 SE on up to 8 cores (using a 2-socket quad-core box) but in a virtual machine they can only run on 4 cores because VMware tells the operating system that each CPU has only 1 core per socket.

VMware now has a setting which provides you control over the number of cores per CPU in a virtual machine.

This new setting, which you can add to the virtual machine configuration (.vmx) file, lets you set the number of cores per virtual socket in the virtual machine.

To implement this feature:

  1. Power off the virtual machine.
  2. Right-click on the virtual machine and click Edit Settings.
  3. Click Hardware and select CPUs.
  4. Choose the number of virtual processors.
  5. Click the Options tab.
  6. Click General, in the Advanced options section.
  7. Click Configuration Parameters.
  8. Include cpuid.coresPerSocket in the Name column.
  9. Enter a value (try 2, 4, or 8) in the Value column.

Note: Ensure that the number of vCPUs is divisible by the number of  cpuid.coresPerSocket in the virtual machine. That is, when you divide the number of vCPUs by the number of cpuid.coresPerSocket, it must return an integer value. For example, if your virtual machine is created with 8 vCPUs, coresPerSocket can only be 1, 2, 4, or 8.

The virtual machine now appears to the operating system as having multi-core CPUs with the number of cores per CPU given by the value that you provided in step 9. 10. Click OK. 11. Power on the virtual machine.

For example:

Create an 8 vCPU virtual machine and set cpuid.coresPerSocket = 2. Window Server 2003 SE running in this virtual machine now uses all 8 vCPUs. Under the covers, Windows sees 4 dual-core CPUs. The virtual machine is actually running on 8 physical cores.

Note:

  • To be able to assign more than 4 vCPUs or if the processor supports more than 6 core(s) per processor, you have to assign an Enterprise Plus license, which supports up to 8 vCPUs and 12 core(s) per processor.
  • Only values of 1, 2, 4, 8 for the cpuid.coresPerSocket are supported for the multi-core vCPU feature in ESX 4.x.
  • In ESX 4.0, if multi-core vCPU is used, hot-plug vCPU is not permitted, even if it is available in the UI.
  • Only HV 7 virtual machines support the multi-core vCPU feature.

Important: When using cpuid.coresPerSocket, you should always ensure that you are in compliance with the requirements of your operating system EULA (Regarding the number of physical CPUs on which the operating system is actually running).

Windows for home | Previous Windows versions | Devices and drivers

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

6 answers

Sort by: Most helpful
  1. Anonymous
    2013-02-27T00:32:13+00:00

    I know this is an old post above but the listed solution worked for me. I have been beating my head against the preverbial VM Wall with this one but the fix worked Thanks MS

    To implement this feature:

    1. Power off the virtual machine.
    2. Right-click on the virtual machine and click Edit Settings.
    3. Click Hardware and select CPUs.
    4. Choose the number of virtual processors.
    5. Click the Options tab.
    6. Click General, in the Advanced options section.
    7. Click Configuration Parameters.
    8. Include cpuid.coresPerSocket in the Name column.
    9. Enter a value (try 2, 4, or 8) in the Value column.
    20+ people found this answer helpful.
    0 comments No comments
  2. Anonymous
    2011-11-24T17:31:54+00:00

    It's a Windows issue, not a computer issue.  On a previous install of the same OS, I had all 4 cores working (prior to a hard drive crash).

    0 comments No comments
  3. Anonymous
    2011-11-24T17:29:59+00:00

    Hi,

    You may contact your computer manufacturer for better assistance on this issue.

    0 comments No comments
  4. Anonymous
    2011-11-23T16:08:47+00:00

    Hi,

    It seems that you might have to enable multi-threading in BIOS.

    I would suggest you to contact the computer manufacturer to check in the BIOS or check if there is BIOS update that is required.

    It is enabled in the bios.

    0 comments No comments
  5. Anonymous
    2011-11-23T15:11:16+00:00

    Hi,

    It seems that you might have to enable multi-threading in BIOS.

    I would suggest you to contact the computer manufacturer to check in the BIOS or check if there is BIOS update that is required.

    Disclaimer : Modifying BIOS/complementary metal oxide semiconductor (CMOS) settings incorrectly can cause serious problems that may prevent your computer from booting properly. Microsoft cannot guarantee that any problems resulting from the configuring of BIOS/CMOS settings can be solved. Modifications of the settings are at your own risk.

    0 comments No comments