Tuesday 18 September 2012

Setting the number of cores per CPU in a virtual machine

This situation occurs when u add 8 vCPU's to your Windows 2008 Standard 64 Bit Virtual machine, but inside the guest operation system u will see only as 4 CPU's.

Reason:

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.
 
 
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.
    Notes: 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. For example:
    Using 4 vCPU
    Configuration you want
    Settings needed for this configuration
    Number of sockets
    Number of cores per socket
    Total cores
    Set vCPU to:
    Set cpuid.coresPerSocket/sockets to:
    1
    4
    4
    4
    4
    2
    2
    4
    4
    2










    Using 8 vCPU
    Configuration you want
    Settings needed for this configuration
    Number of sockets
    Number of cores per socket
    Total cores
    Set vCPU to:
    Set cpuid.coresPerSocket/sockets to:
    1
    8
    8
    8
    8
    2
    4
    8
    8
    4
    4
    2
    8
    8
    2