Add More Cores to an Existing VM?

We have taken over management of an existing ESX installation for a client.  We noticed there were performance issues with the VMs and found they had only been assigned one core each even though there were numerous cores remaining unassigned.

I've read that, as with a physical server, adding cores after the fact can cause performance problems.

Does anyone know of a way for us to increase the processing power available to these Server VMs without major risk?
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Lee W, MVPTechnology and Business Process AdvisorCommented:
Disclaimer:  I haven't done this.

That said, Windows 2008 no longer includes a uniprocessor kernel.  Adding cores SHOULD NOT be a problem.  Great thing about VMs - you can back them up easily and restore them if it doesn't work.

And that said, processor is not usually your problem - Have you verified the processor utilization is high?  If it's not, you're pretty much wasting your time adding processors.  You likely should be adding RAM as, without any kind of analysis of what your performance issues are, a lack of RAM is the MOST FREQUENT performance problem.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Increasing the number of vCPU's won't necessarily help you here.

VMWare state '...Multi-VCPU virtual machines should be only created in the comparitively infrequent instances where they are of benefit and not as a standard configuration...'.

What have you done to come to the conclusion that you have performance issues?  Have you run perfmon on one of the affected servers and compared the results to the physical ESX host?
Mike ThomasConsultantCommented:
I added additional CPU's to 2 vmware hosts without any problem, but truth be told you get more perfoarmance for your money by adding ram IMO

SolarWinds® Network Configuration Manager (NCM)

SolarWinds® Network Configuration Manager brings structure and peace of mind to configuration management. Bulk config deployment, automatic backups, change detection, vulnerability assessments, and config change templates reduce the time needed for repetitive tasks.

Have you got VMware tools install on your VMs??
Are your VMs all up to date with patches & SP?

Only if it is a CPU problem.
Do a snap shot of your VMs add a CPU if it does not work restore the snapshot.
I agree with all the comments above, but to answer your question.

i have added more vCPU's to VM's that previously had only 1. (maybe I was lucky and the multiprocessor HAL was already installed).

I have successfully done this on windows 2003 and windows 2008 vm's running under ESX 3.5 & 4.0

To be sure take a snapshot, or make a ghost image of the VM before attempting and roll back if there is a problem
vmwarun - ArunCommented:
Running resxtop on the ESX Service Console could give you a hint about the resources being utilized, but like the other posters I concur that most of them its the RAM thats has a bottleneck when compared to the CPU.
totally agree with all the comments, my current site had specified dual quad core xeon servers that were a year old and were going to replace them already "because the vm's are running to slowly" (the host only had 4gb total)

I upped the ram to 16gb, removed vmware server and installed ESXi. :

jakethecatuk is correct adding additional vCPU's to a VM can actually negatively impact performance especially in situations of over subscription, such as in this case. For each vCPU you add to a VM that VM is then required to wait for the corresponding number of physical cores to be available before the CPU requests can be executed.

To determine the load on the CPU you need to run esxtop for ESX 3.5 or the performane chart in vSphere and check the CPU Ready time. The CPU Ready time should be less than 5% per VM.

Of course CPU utilization may not be your problem you could have a bottleneck with your storage solution.
vmwarun - ArunCommented:
Please note that the VMkernel also needs an overhead memory for every virtual component added, be it vCPU, Serial or Parallel port.
Keep this into consideration when adding more and more virtual hardware to existing Virtual Machines.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.