Question
What is cpu steal and when should I be concerned about it?
Answer
Steal measures the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor.
In other words, steal tells us how much CPU time is wasted waiting on the hypervisor.
When viewing steal in top, you'll look for the st value:
%Cpu(s): 59.2 us, 5.2 sy, 1.3 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 34.2 st
When viewing steal in the output of the sar command it is represented by the %steal column:
02:00:02 PM CPU %user %nice %system %iowait %steal %idle
02:10:02 PM all 25.77 0.18 2.14 0.27 35.53 36.09
If your server is waiting significant amounts of time for the hypervisor (the physical server that your virtual server is on) to respond to your virtual server, it can cause significant problems.
In optimal conditions, the %steal column should be 0% . If you find that your server is having problems and steal is not at 0%, you should contact your hosting provider. It is possible for some application workloads to operate fine with low steal values. If your application is operating in an acceptable manner, low steal values are not of concern.
In order to resolve this kind of issue, you must reach out to your hosting provider's support and request that they investigate and resolve any issues on the hypervisor that could be causing the steal value to rise.