为什么屏幕顶部的进度表htop
显示 CPU 使用率始终高于 90%,而下表中的数字显示 CPU 使用率和负载平均为 0.0% 的几乎空闲的系统?
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)
这种不一致通常表明内核线程的处理器使用率很高htop
,默认情况下不会显示。要显示它们,htop
请Setup
依次转到Display options
、 ,然后取消选中Hide kernel threads
。这应该允许您查看负责的线程。
您还可以通过hide_kernel_threads
在~/.htoprc
.