为什么 htop 仪表显示 >90% 而 table 是 0.0%?

mat*_*kie 15 top htop

为什么屏幕顶部的进度表htop显示 CPU 使用率始终高于 90%,而下表中的数字显示 CPU 使用率和负载平均为 0.0% 的几乎空闲的系统?

部分 htop 屏幕抓取

jll*_*gre 6

htop不知道它在内核级虚拟化环境中运行(Dreamhost VPS正在使用VServer技术)。然后它会显示共享同一内核的所有操作系统实例的 CPU 使用率,而不仅仅是你的。

查看vtop输出,其中显示共享 CPU 的所有进程,而不仅仅是容器中的进程。

如果vtop未安装,并且这可能是商业解决方案所期望的,因为客户不希望看到其他客户正在运行哪些进程,则无法从容器内部解决问题,除非修补top源以进行计算CPU 使用率,而不是从内核统计信息中获取。

它可以通过汇总 VServer 中运行的所有进程的 CPU 使用率来实现,例如:

ps aux | awk '
    {cpu+=$3; ram+=$6} 
    END {printf("cpu: %d%%, RAM: %.2f MiB\n",cpu,ram/1024) }'
Run Code Online (Sandbox Code Playgroud)


Chr*_*own 5

这种不一致通常表明内核线程的处理器使用率很高htop,默认情况下不会显示。要显示它们,htopSetup依次转到Display options、 ,然后取消选中Hide kernel threads。这应该允许您查看负责的线程。

您还可以通过hide_kernel_threads~/.htoprc.

  • 谢谢克里斯。我这样做了,但表格值仍然是 0%。也许这是在虚拟机中运行所特有的东西?主机是虚拟专用服务器(在 Dreamhost.com 上)。 (2认同)