I had a fun day resolving a licensing issue for a client. This one was a little different than I had seen in the past. The cluster is question is an eight node cluster running ESX 3.5. The error message that I received when trying to perform a vMotion was “Unable to migrate from HostA to HostB: Virtual machine has 2 virtual CPUs, but the host only supports 1. The number of virtual CPU’s may be limited by the guest OS selected for the virtual machine or by the licensing for the host.”
In a virtual system the tenancy to translate over-provisioning physical CPU’s into over-provisioning virtual CPU’s can be very harmful as the graph above shows. Assigning four vCPU’s to a VM makes it harder for that VM to get scheduled in as the hypervisor has to wait for four vCPU’s to become available at the same time. It is therefore the case that configuring a smaller number of vCPU’s for an application can actually improve the amount of CPU resource that it actually gets and therefore improve its performance. Investing in tools (like VMTurbo) that do this work for you automatically can help you convince applications owners of this, and thereby help their applications perform better.