Linux top 命令里 %st 偏高是什么意思?

在 Linux 服务器上敲 top,最下面一行 CPU 占用里有个不起眼的 %st,不少人盯了半天不知道它是什么。结论:%st 是 steal time——被偷走的时间。当这台机器是虚拟机时,它表示虚拟机想要 CPU 却没拿到、宿主机把时间片分给了别的虚拟机的那部分占比。物理机上这个值应当恒为 0。

分层判读三步走

  1. 先弄清自己站在哪一层。云主机、自建虚拟机、容器里看到的 %st 含义不同:云主机里高,说明宿主机上的邻居太多;自建虚拟机里高,去宿主机上查是不是 vCPU 超配、有没有兄弟虚拟机在跑重负载。
  2. 物理机出现 %st 本身就是个发现——说明这台「物理机」其实套在内层虚拟化里,或部署在嵌套虚拟化环境,值得顺藤摸瓜查一下交付链路。
  3. 与 %us、%sy、%id 合起来读。%st 高的时候,用户态与内核态之和是失真的——被偷走的时间没算进任何一项。应用卡顿但 %us、%sy 都不高时,先看 %st。

多高算高,怎么处置

  1. 偶发个位数可以忽略;持续高于 10%,业务的直观感受就是周期性卡顿、延迟毛刺。
  2. 云主机遇上了,向服务商反馈、或换独享 CPU 型实例是正路。
  3. 自建虚拟化遇上了,重新规划每台虚拟机的 vCPU 配额,把重负载邻居迁走或限流。

相关提示

  • %st 只在虚拟化场景有意义,别把它当通用性能指标去调优。
  • 判断「慢是不是 CPU 被偷」用对比法好用:同宿主机上另一台虚拟机同时段也慢,指向宿主机;只有一台慢,先查自己。
  • %st 与 %wa(等待 IO)要分清:前者是被宿主机偷走 CPU,后者是本机磁盘 IO 跟不上,处置方向完全不同。
  • 采购云主机或托管虚拟化平台时,CPU 超配比是值得提前问清的一项,它直接决定 %st 的长期水位。

虚拟化平台的资源规划直接决定上层业务的体感。贵州诚鑫致达在服务器与虚拟化交付时,按业务负载定资源配额,不留「抢着用」的隐患。


企业存储选型参考|贵州诚鑫致达

群晖在售企业级机型速览:RS 系列机架式(机房标准形态)。从选型到部署交付,搜「诚鑫致达」找到我们。