我的 Gnome 面板中有一个小程序,可以显示 CPU 的当前负载。这对我的笔记本电脑来说很重要,因为它是一台稍旧的机器,因此知道何时应该让它完成一项任务然后再开始另一项任务可以防止我因此而感到沮丧。
但是,有时当 CPU 达到 100% 并持续一段时间时,这可能表明出现了问题,也许我应该终止该进程。
然而,我多年使用 Ubuntu 时注意到系统监视器从未真正告诉我发生了什么。
例如,以下屏幕截图(界面是日语,但这不会改变问题):
系统监视器本身上方就是我的面板小程序,其中电池指示器右侧的绿色框也指示 CPU 使用率为 100%。
现在看看这张图片:
没有任何东西使用超过 7% 的 CPU。
这种情况似乎很常见 - 我敢说几乎总是如此 - 当 CPU 达到最大值时,我永远看不到实际在使用这些 CPU 周期的是什么。
我也尝试过在命令行使用 HTOP,但结果是一样的。
为什么系统监视器通常显示 CPU 使用率为 100%,但查看特定进程总数时却从未超过百分之几?
当我想弄清楚是什么占用了这么多的 CPU 时间时,我该怎么做呢?我是否应该终止失控的进程,或者至少知道该进程是什么?
答案1
正如 Cedric Julien 在评论中所建议的那样,
要查看使用 CPU 的所有进程,在使用系统监视器时,请转到看法菜单并选择所有流程
答案2
您可以使用系统卫士,默认情况下显示所有进程,看起来更美观一些(例如,进程行有不同的颜色),并且比系统监视器具有更多选项。
在 Ubuntu 上,您不需要 KDE 即可使用 KSysGuard。只需运行 即可sudo apt install ksysguard
。
答案3
我观察到两种现象,它们可以解释 OP 看到的差异,但在回答此类问题时却很少提及。遗憾的是,它们对于识别实际过程没有多大帮助。
在命令行中,您可以使用该命令观察资源使用情况的进程列表
top
。特别是,您应该看到如下一行:%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 24.9 id, 74.6 wa, 0.0 hi, 0.0 si, 0.0 st
按 显示
1
每个 CPU 的显示。您应该会看到类似以下内容的内容:%Cpu0 : 1.3 us, 0.3 sy, 0.0 ni, 0.0 id, 98.3 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 0.3 us, 0.0 sy, 0.0 ni, 0.0 id, 99.7 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 0.3 us, 0.7 sy, 0.0 ni, 0.0 id, 99.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 1.3 us, 0.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
以上信息来自系统监视器显示除自身之外所有进程的 CPU 使用率为 0% 的情况,但面板小程序显示使用率在 72% 和 78% 之间波动。请注意,虽然 CPU 3 显示 98.3% 空闲,但其他 CPU 显示的百分比值较高
wa
。这是什么
wa
意思?好吧,我不确定规则是否会阻止链接到其他 Stacks,但 unix.SE 上有一个很好的问题,其中包括以下描述:wa: io wait cpu time (or) % CPU time spent in wait (on disk)
因此,面板小程序显示等待磁盘 I/O 的进程的 CPU 使用率很高,但系统监视器本身并未报告与此相关的 CPU 周期。我也无法在 中显示此信息
htop
。顺便说一句,我知道这种等待 I/O 状态被称为“iowait”。
我试图找出其他任务是否可以在 CPU 处于 iowait 状态时使用它,而不是让它处于空闲状态,但我没有找到这方面的信息。
在 MATE 的系统监视器中,“CPU 使用率”列中的百分比值都是整数。我不确定实际值是向上、向下舍入还是舍入到最接近的整数。但如果不向上舍入,则 10 个使用率为 0.3% 的进程可能全部显示为 0%,即使它们的实际使用率加起来为 3%。
与 OP 一样,我有一台相当旧的机器,因此存在以下差异:
- CPU 使用率(由面板小程序报告)和
- 总使用量(通过将系统监视器 CPU 列中的百分比相加得出)
当面板报告使用率高但我找不到任何可以解释这一情况的进程时,这非常令人沮丧!