Monday, October 29, 2018

Interpreting CPU ready and fixing problems caused due to CPU ready

What is CPU ready?

CPU ready is the percentage of time the Virtual Machine is ready but cannot get physical CPU resources from the hypervisor to run its processes. Basically, higher the CPU ready time, the worse off it is for your vSphere environment. CPU ready is a very critical metric and is generally associated with heavy performance degradations.

vCPU and Physical Cores

In order to understand CPU ready, it is important for us to understand the concept of vCPU and Physical Core. Each vCPU is seen as a single physical CPU core by the ESXI host. vCPU’s are given timeslots by the hypervisor, so that it can utilize the available physical cores.

Lets assume that 1vCPU = 1 Physical Core. It is quite common to provision multiple VM’s where the sum of their vCPU levels exceeds the total number of Physical CPU’s.

Ie. Let’s take an example of a host that has 10 Physical Cores and the VM’s provisioned inside it.


Here the sum of the vCPU is 4 + 4 + 4 = 12 vCPU, however the total number of Physical CPU available is 10. Since each of the VM’s require 4 vCPU’s, it is not possible to have 3 VM’s use CPu at the same time.

VM A and VM B would use the physical core initially, and when one of them is done, the hypervisor will schedule VM C to take up 4 Physical cores.

The time period that VM C has to wait in order to get the CPU resources is called CPU ready.

CPU Oversubscription and Host Over-Commitment

CPU Oversubscription and host over-commitment are the main causes of CPU ready time. First of all, you should understand, that it is quite normal to have more vCPU’s than the pCPU’s available. Otherwise, what’s the point of Virtualization!

However, the ratio of vCPU to pCPU must be at a sweet spot. It is recommended that the ratio should be 1:3 or less in order to minimize the CPU ready time. It is also recommended to keep CPU ready time to less than 5%. Anything greater, can cause severe production issues.

Will DRS (Distributed Resource Scheduler) help?
Short answer – No! DRS only takes into account CPU and Memory utilization into account while moving resources.

Ok, so how do I look for CPU ready?

For quick troubleshooting, you can use vSphere client to monitor the CPU ready time for individual VM’s.

For a wholistic view, a tool like Uila can easily help graphically identifying CPU ready and the hosts that are over committed. For example –

You can also quickly identify the oversubscription on the host –

So next time, if you have any CPU performance issues but your CPU utilization is low, keep in mind that it could be CPU ready.

No comments:

Post a Comment

Being an outstanding leader – 5 L’s of leadership (From Pat Gelsinger’s keynote at VMUG Wisconsin)

I have been wanting to write this article since my last visit to Milwaukee for the VMUG Wisconsin Usercon a couple of week...