Kimbie
Contributor
Contributor

CPU allocation to VMs

We have 3 HP 460 blades with dual quad core CPUs and 48Gb of ram in each blade all licence's with ESXi Enterprise Plus.

When we first started out with VMs we applied real world thought on number of CPUs to a VM environment.  So if we would give a server a CPU with 4 cores we did the same in a VM and we quickly ran into a problem where the VMs were pausing, as we had over committed on cores, as we have 6 machines all with 2 - 4 CPUs so I think we were using about 20 CPUs where as only having two blades provided us with 8 cores, although the Xeons we have are hyper threaded.

So we reconfigured all of our VMs to use one CPU and that seem to fix the problem, as I understood it a VM was waiting for 4 cores to become availble to process the command.

However we need to allocate more than one CPU to a server, we have already upped it to two CPUs, but we want to take it to 4.  How can we set this and not run into the stalling situation we had before?  We now have a lot more VMs than we did when we started out on this.  Can we guatntee a certain number of processors to VMs?

Thanks

Kimbie

0 Kudos
5 Replies
mcowger
Immortal
Immortal

CPUs aren't free.   If you exceed the processing capability of your host, no amount of games will help you.

It is possible to guarentee a given VM specific MHz (shared across all its CPUs) - you might give that a try.  However, you've already seen that if you give everything what it wants that you will end up with performance issues, indicating you are overcommitting your host.  If you guarentee resources to one VM, the rest will fight that much harder over the rest and you will just shift the problem.   You really need more hardware.

--Matt VCDX #52 blog.cowger.us
0 Kudos
RParker
Immortal
Immortal

However we need to allocate more than one CPU to a server

Based upon what?  What specific metrics are you seeing that makes this necessary?

but we want to take it to 4.  How can we set this and not run into the stalling situation we had before?

It is unavoidable, if you NEED 4 CPU for a VM, then probably those programs are NOT candidates for virtualization, VM purpose is NOT performance, it is management and ease of access, VM's are not a replacement for physical servers, they come close in many situations, but performance is NOT the goal of VM's, and it NEVER was adverstised nor was it designed that way.

0 Kudos
mcowger
Immortal
Immortal

RParker wrote:

performance is NOT the goal of VM's, and it NEVER was adverstised nor was it designed that way.

This isn't correct- there are NUMEROUS whitepapers in which VMware advertises physical equivalent (and even better than native) performance for VMs.

An entire page dedicated to performance advertisement:

http://www.vmware.com/technical-resources/performance/

And a bunch of whitepapers:

http://www.vmware.com/pdf/Perf_ESX40_Oracle-TPC-C-eval.pdf

http://www.vmware.com/partners/vmware/ESX_WAS_WP.pdf

http://www.vmware.com/files/pdf/perf_vsphere_sql_scalability.pdf

Why do you continue to spout this nonsense?

--Matt VCDX #52 blog.cowger.us
0 Kudos
Kimbie
Contributor
Contributor

We are basing the need for more CPU in the guest VM task manager with both CPUs sitting at approx 95% constantly, adding more CPUs will reduce this, but we do not want to impact the performance on teh rest of our systems

Kimbie

0 Kudos
mcowger
Immortal
Immortal

Is your application multithreaded?  If so, it could very well benefit from multiple vCPUs.  If not, then Parker is right and theres no point.

--Matt VCDX #52 blog.cowger.us
0 Kudos