ubuntu 多核 CPU 上的 top 命令显示 CPU 使用率 >100%

ubuntu 多核 CPU 上的 top 命令显示 CPU 使用率 >100%

在此处输入图片描述

我的 ubuntu 运行在 32 核多核 CPU 上。当我使用 top 命令检查 CPU 使用率时,有时会显示超过 100%,如 340%、650% 等。我做了一些调查,发现它实际上是不同核心使用率的总和。例如,如果第一个 CPU 使用率为 20%,第二个为 30%,第三个为 40%,其余为 0%,则“top”显示 20+30+40=90%。

这有点令人困惑和误导。我相信 top 命令应该通过计算所有核心的使用情况来显示 0 到 100 之间的 CPU 使用率。在我上面的例子中,我预计 -(90*100)/3200 =2.8125%。这是 top 命令的一个错误吗?它应该被视为未来版本的增强功能吗?请指教

答案1

默认情况下,top以单个 CPU 的百分比形式显示 CPU 使用率。在多核系统上,您可以看到 CPU 使用率百分比大于 100%。您可以在 top 运行时按Shift+来切换此行为i,以显示正在使用的可用 CPU 的总体百分比。

htop是 的更好替代方案top。在 中htop,您可以看到您的程序如何消耗所有 32 个核心。

答案2

看来我找到了方法 :-) 如果我在运行 top 命令时切换到 solaris 模式,它会显示正确的 cpu 使用率。要切换到 solaris 模式,首先运行 top 命令,然后按 shift+i

参考文章

https://help.gnome.org/users/gnome-system-monitor/stable/solaris-mode.html.en https://unix.stackexchange.com/questions/15733/why-process-cpu-usage-larger-than-total-cpu-time

答案3

  1. 您必须使用“-H”选项来获取线程的实际 CPU 使用率。假设我有一个程序“load”,该程序创建三个线程。每个线程都处于无限循环中,以使 CPU 利用率达到 100%。
  2. 这里父级有 ID = 181906、线程 1 ID = 181907、线程 2 ID = 181908 和线程 3 ID = 181909。
  3. 使用 top 命令,我看到 ID = 181906 的负载占用了 300% 的 CPU。
  4. 使用 top -H -p 181906 后,加载 ID = 181906 0 %CPU 线程1 ID = 181907 99 %CPU 线程2 ID = 181908 99 %CPU 线程3 ID = 181909 99 %CPU

因此,最后,使用 -H 选项以及顶部 -p 选项来获取实际的 CPU 利用率。

相关内容