为什么屏幕顶部的进度表htop
显示 CPU 使用率始终高于 90%,而下表中的数字显示系统几乎空闲,CPU 使用率和平均负载为 0.0%?
答案1
htop
不知道它正在内核级虚拟化环境上运行(梦想主机VPS正在使用虚拟服务器技术)。然后,它会显示共享同一内核的所有操作系统实例(而不仅仅是您的操作系统实例)的 CPU 使用情况。
看看vtop
输出显示共享 CPU 的所有进程,而不仅仅是容器中的进程。
如果vtop
未安装,这可能是商业解决方案所期望的,因为客户不希望看到其他客户正在运行哪些进程,则无法从容器内部解决问题,除非修补top
源以进行计算CPU 使用率而不是从内核统计中获取。
它可能通过总结虚拟服务器中运行的所有进程的 CPU 使用率来实现这一点,例如:
ps aux | awk '
{cpu+=$3; ram+=$6}
END {printf("cpu: %d%%, RAM: %.2f MiB\n",cpu,ram/1024) }'
答案2
这种不一致通常表明内核线程的处理器使用率较高,htop
默认情况下不会显示这些信息。要显示它们,请htop
转至Setup
,然后Display options
转至 ,然后取消选中Hide kernel threads
。这应该允许您看到负责的线程。
您还可以通过hide_kernel_threads
在 中设置为 0 来禁用此行为~/.htoprc
。
答案3
尝试使用htop
启动sudo
。您需要 root 访问权限才能查看表中的活动线程。