性能
什么是CPU steal time?
Steal time is the proportion of time a virtual CPU was ready to run but the hypervisor gave the physical core to another guest. It appears as the "st" column in top and vmstat. Sustained values above 2–3% indicate contention and show up as tail-latency spikes rather than as uniformly slow throughput.
为什么CPU steal time很重要
它显示在top和vmstat的“st”列中。持续高于2-3%的值表示争用,表现为尾部延迟峰值,而不是均匀的吞吐量下降。
CPU steal time的实际应用
当你运行服务器时,关注 top 和 vmstat 中的 st 列。如果持续高于2–3%,你的CPU正在被共享,超出你的工作负载预期。代价不是均匀的减速——而是破坏时间敏感任务的尾部延迟峰值。你可能需要更改实例大小或迁移到不太拥挤的主机。如果忽视它,你会在自己的调优中追逐幻影,而真正的瓶颈在虚拟机监视器一侧。
人们对CPU steal time常见的误解
人们常将CPU窃取时间误认为自己的进程消耗了太多CPU。不是这样。窃取时间意味着你的虚拟CPU已就绪,但虚拟机监视器将物理核心给了另一个客户。修正:看 st 列,而不是 user 或 system 列。高窃取意味着问题在实例外部,而不是内部。
CPU steal time —— 常见问题
为什么我的VPS上CPU窃取时间如此高?
高窃取时间通常意味着你的虚拟机监视器过度订阅。同一物理主机上的其他客户正在竞争核心。这不单独是你的工作负载造成的。如果 st 持续高于2–3%,考虑迁移到争用较少的提供商或专用核心。
我自己能减少CPU窃取时间吗?
不是直接从你的实例内部。Steal time 是由虚拟化层(hypervisor)强加的。你可以通过优化代码来减少对 CPU 的依赖,但实际的 steal 只有在宿主机负载降低时才会减少。有时迁移到不同的物理主机会有帮助。