Andy Fox | 5 July 2012
In most of the vSphere documentation, CPU Ready is mentioned as the indicator that either the host is constrained by cpu resources, or the vm is limited. But this counter only measures how long the vm has to wait for a single vcpu. Another useful counter is the co-stop figure, so I thought it was time to blog about it!
As the esxtop documentation states, Co-Stop - Amount of time a SMP virtual machine was ready to run, but incurred delay due to co-vCPU scheduling contention.
So this figure has no meaning for a single vcpu vm, and in fact if you display this it will be zero. However in a multi-vcpu vm, the figure will indicate either the amount of additional time beyond the first vcpu being available available until subsequent vcpus are ready for the vm to run, or any time the vcpu is stopped as a result of the relaxed co-scheduling process.
The fact that co-stop is indicated is potentially bad from a performance perspective. As Duncun Epping states in his blog on esxlog (Yellow-Bricks), if the value is above 3 then there is excessive usage of vSMP, and you should decrease amount of vCPUs for this particular VM, which should lead to increased scheduling opportunities.
I often talk about the virtues of configuring fewer vcpu's to increase performance in vms during training courses, and found an interesting VMware KB about the subject.
While investigating this subject, I also found that high co-stop (%CSTP) values can often be seen during virtual machine snapshot activities, and found this VMware KB on the subject.
And finally! In addition I also found a very useful VMware KB for troubleshooting a virtual machine that has stopped responding, comparing VMM and guest cpu usage comparison, this has a lot of documentation regarding the interpretation of cpu performance figures, and although intended for the resolution of vms that have hung does explain the metrics very well.