I'm using vSphere for managing my servers. I'm trying to asses the performance of VMs running on hosts to plan for the resources.

In terms of cpu usage, I found two measures to be important: Cpu Steal Time, which is being reported by the guest os, and is collected by node exporter, and Cpu Ready Time that is reported by vCenter and is shown in Monitoring dashboard of the respective VM and is collected using an exporter.

For some of the VMs, I get contradicting results from these two measures. Cpu Steal Time is always zero, suggesting that there is no overloading and cpu contention on the host, but Cpu Ready Time is almost always above 10%, even sometimes above 40%, suggesting that there is a huge problem in terms of resources.

So, I'm confused and even not sure that my understandings of those metrics are correct. How do you explain such situation? Am I in high cpu contention situation and must reduce the load, or I can put more load on it?

P.S. These are Kubernetes worker nodes, BTW.

1 Answer 1


Think critically when using performance metrics. Often they have platform specific quirks, or are just buggy.

CPU Ready time is a metric from vmware, the hypervisor in this case. With a moderate to heavy load, when CPU is oversubscribed, I would not be surprised by a non-zero CPU Ready.

CPU Steal should be the same thing, but reported from a Linux guest. This is a hypervisor specific feature, first implemented with kvm. Linux getting this from vmware did not exist until 2020, Linux 5.7. Or backported to some kernels.

x86/vmware: Add steal time clock support for VMware guests

Steal time is the amount of CPU time needed by a guest virtual machine that is not provided by the host. Steal time occurs when the host allocates this CPU time elsewhere, for example, to another guest.

Steal time can be enabled by adding the VM configuration option stealclock.enable = "TRUE". It is supported by VMs that run hardware version 13 or newer

. This ready to run but not running metric is a much clearer symptom of performance issues. 90% CPU busy is running quite heavily utilized, but is possible end user impacts are limited. 10% CPU steal, is a near certain starvation of CPU due to oversubscription. With another tenth of CPU time, you could get that much more work done.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .