I have series of Physical to Virtual machines currently sitting on VMware estate. All of them are running 2k3 and were originally Dell PowerEdge systems with a variety of CPU types.
Some systems have come across with 4 CPUs, other have just one 1. Do all of these systems, now they have become virtual, require CPU allocation to be the same ?
i.e 2 Virtual sockets, 1 core per socket for all ?
Please bare in mind these are only running standard windows services, nothing heavy like SQL or Exchange.
VMwareVirtualizationWindows Server 2003Dell
Last Comment
L-Plate
8/22/2022 - Mon
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)
No, they do not have to be all the same.
Start off with a single (1) vCPU, and add more if applicable. I would reduce to 1 vCPU socket, and check performance.
It's not often that a VM requires more than 2-4 vCPUs.
vSMP (virtual SMP) can affect virtual machine performance, when adding too many vCPUs to virtual machines that cannot use the vCPUs effectly, e.g. Servers than can use vSMP correctly :- SQL Server, Exchange Server.
This is true, many VMware Administrators, think adding lots of processors, will increase performance - wrong! (and because they can, they just go silly!). Sometimes there is confusion between cores and processors. But what we are adding is additional processors in the virtual machine.
So 4 vCPU, to the VM is a 4 Way SMP (Quad Processor Server), if you have Enterprise Plus license you can add 8, (and only if you have the correct OS License will the OS recognise them all).
If applications, can take advantage e.g. Exchange, SQL, adding additional processors, can/may increase performance.
So usual rule of thumb is try 1 vCPU, then try 2 vCPU, knock back to 1 vCPU if performance is affected. and only use vSMP if the VM can take advantage.
Example, VM with 4 vCPUs allocated!
My simple laymans explaination of the "scheduler!"
As you have assigned 4 vCPUs, to this VM, the VMware scheulder, has to wait until 4 cores are free and available, to do this, it has to pause the first cores, until the 4th is available, during this timeframe, the paused cores are not available for processes, this is my simplistic view, but bottom line is adding more vCPUs to a VM, may not give you the performance benefits you think, unless the VM, it's applications are optimised for additional vCPUs.
No, there's no reason to have them sucking down excess CPU if it's not needed. And you should be able to adjust down without an issue, although it will require you to take the VM's down to make the change.
L-Plate
ASKER
Thanks for you responses both of you.
Hancocka, which section are you referring to change ?
Is it Number of Virtual sockets or Number of cores per socket ?
Would comparing a physical machines hardware platform been taken into consideration for CPU allocation ? i.e a 2008 box has a 2 physical CPUs, each being quad cores.
Would it be safe to transfer that config virtually ?
Andrew Hancock (VMware vExpert PRO / EE Fellow/British Beekeeper)
change to 1 vCPU socket. (cores is usually altered for licensing reasons).
always use 1 vCPU and adjust.
L-Plate
ASKER
Ok
So I can adjust virtual sockets to whatever I need in regards to performance and reduce the cores per socket to 0 as this is purely for licensing requirements.
Start off with a single (1) vCPU, and add more if applicable. I would reduce to 1 vCPU socket, and check performance.
It's not often that a VM requires more than 2-4 vCPUs.
vSMP (virtual SMP) can affect virtual machine performance, when adding too many vCPUs to virtual machines that cannot use the vCPUs effectly, e.g. Servers than can use vSMP correctly :- SQL Server, Exchange Server.
This is true, many VMware Administrators, think adding lots of processors, will increase performance - wrong! (and because they can, they just go silly!). Sometimes there is confusion between cores and processors. But what we are adding is additional processors in the virtual machine.
So 4 vCPU, to the VM is a 4 Way SMP (Quad Processor Server), if you have Enterprise Plus license you can add 8, (and only if you have the correct OS License will the OS recognise them all).
If applications, can take advantage e.g. Exchange, SQL, adding additional processors, can/may increase performance.
So usual rule of thumb is try 1 vCPU, then try 2 vCPU, knock back to 1 vCPU if performance is affected. and only use vSMP if the VM can take advantage.
Example, VM with 4 vCPUs allocated!
My simple laymans explaination of the "scheduler!"
As you have assigned 4 vCPUs, to this VM, the VMware scheulder, has to wait until 4 cores are free and available, to do this, it has to pause the first cores, until the 4th is available, during this timeframe, the paused cores are not available for processes, this is my simplistic view, but bottom line is adding more vCPUs to a VM, may not give you the performance benefits you think, unless the VM, it's applications are optimised for additional vCPUs.
See here
http://www.vmware.com/resources/techresources/10131
see here
http://www.gabesvirtualworld.com/how-too-many-vcpus-can-negatively-affect-your-performance/
http://www.zdnet.com/virtual-cpus-the-overprovisioning-penalty-of-vcpu-to-pcpu-ratios-4010025185/
also there is a document here about the CPU scheduler
www.vmware.com/files/pdf/perf-vsphere-cpu_scheduler.pdf