Fighting guest CPU saturation in SMP VMs
Guest CPU saturation happens when the application and operating system running in a virtual machine use all of the CPU resources that the ESXi host is providing for that virtual machine. However, this guest CPU saturation does not necessarily indicate that a performance problem exists.
Compute-intensive applications commonly use all of the available CPU resources, but this is expected and might be acceptable (as long as the end user thinks that the job is completing quickly enough). Even less-intensive applications might experience periods of high CPU demand without experiencing performance problems. However, if a performance problem exists when guest CPU saturation is occurring, steps should be taken to eliminate the condition.
When a virtual machine is configured with more than one vCPU but actively uses only one of those vCPUs, resources that could be used to perform useful work are being wasted. At this time you may see a potential performance problem—at least from the most active vCPU perspective.
Getting ready
To step through this recipe, you need a running ESXi Server, a couple of running CPU-hungry virtual machines, vCenter Server, and a working installation of vSphere Client. No other prerequisites are required.
How to do it...
To spot CPU overcommitment in the guest OS there are two CPU resource parameters which you should monitor closely as follows:
- The ready time
- The usage percentage
- Log in to the vCenter Server using vSphere Client.
- From the home screen, navigate to Hosts and Clusters.
- Expand the ESXi host and go to the CPU hungry VM.
- Click on the Performance tab.
- Navigate to the CPU from the Switch To drop-down menu on the right-hand side.
- Navigate to the Advanced tab and click on the Chart Options.
- Select only Usage Average in Percentage, Ready, and Used in the Counters section and click on OK
The preceding example shows the high usage and used value. We can see it is 100 percent.
The preceding example shows that after the CPU increase in the VM, the percentage of CPU usage dropped down to 52 percent.
How it works...
So for a SMP VM if you see it is the high CPU resources demanding, it may happen that either the application is single threaded or the guest operating system is configured with uniprocessor HAL.
Many applications are written with only a single thread of control. These applications cannot take advantage of more than one processor core.
In order for a virtual machine to take advantage of multiple vCPUs, the guest operating system running on the virtual machine must be able to recognize and use multiple processor cores. If the virtual machine is doing all of its work on vCPU0, the guest operating system might be configured with a kernel or a HAL that can recognize only a single processor core.
You have two possible approaches to solving performance problems related to guest CPU saturation:
- Increase the CPU resources provided to the application.
- Increase the efficiency with which the virtual machine uses CPU resources.
Adding CPU resources is often the easiest choice, particularly in a virtualized environment. If a virtual machine continues to experience CPU saturation even after adding CPU resources, the tuning and behavior of the application and operating system should be investigated.