为什么“top”CPU 编号与 System Monitor 和 Conky Process Panel 的 CPU 编号不同?

cip*_*cus 5 cpu memory top conky cpu-usage

当我的笔记本电脑在较重的处理过程中暂时变慢时,我预计会看到比我在桌面系统监视器上的 conky 进程面板中实际看到的数字更高的数字(用于 CPU 使用)。

top在终端中使用时,我看到数字证明计算机暂时缓慢是合理的。例如,当 Firefox 运行一些使用相对较高 CPU 资源(显示为“Web 内容”)的插件时,conky 脚本(就像 Gnome 系统监视器)显示使用的 CPU 资源约为 25%,而显示约为top71%,这考虑到 PC 确实变慢了,这一点似乎更加“真实

在此输入图像描述

我怎样才能在我使用的 conky 中获得那些“真实”数字?为什么top与它和系统监视器不同?

conky 脚本中重要的部分是:

${top name 1} $alignr ${top cpu 1}%
${top name 2} $alignr ${top cpu 2}%
${top name 3} $alignr ${top cpu 3}%
Run Code Online (Sandbox Code Playgroud)

ETC。

ter*_*don 6

这是因为top该值显示为单个 CPU 核心的百分比,而 则conky显示总可用 CPU 功率的百分比。如果您运行top并按下,I您应该会看到相同(几乎相同,总是存在竞争条件:top轮询 CPU 的时间与实际执行的时间不完全相同conky)的数字。

这记录在man top(强调我的):

  1. %CPU——CPU使用率

    自上次屏幕更新以来任务所用 CPU 时间的份额,以总 CPU 时间的百分比表示。

    在真正的 SMP 环境中,如果进程是多线程的并且 top 未在线程模式下运行,则可能会报告大于 100% 的数量。您可以使用“H”交互命令切换线程模式。

    此外,对于多处理器环境,如果 Irix 模式关闭,top 将在 Solaris 模式下运行,其中任务的 cpu 使用率将除以 CPU 总数。您可以使用“I”交互命令切换 Irix/Solaris 模式。

因此,您在示例中看到的是处于topIrix 模式,并将 %CPU 值报告为单个 CPU 的百分比,而将conky其报告为所有可用 CPU 的百分比。

而且,只是为了说明,这就是top我的 8 核笔记本电脑上运行时的 Irix 模式pigz,可以使用多个线程:

PID     USER      PR  NI    VIRT    RES  %CPU  %MEM     TIME+ S COMMAND                                                               
1090509 terdon    20   0  657.6m   4.5m 605.3   0.0   0:33.18 R pigz                                                                  
Run Code Online (Sandbox Code Playgroud)

看看 %CPU 远高于 100 吗?现在,Solaris 模式下的相同内容显示:

PID     USER      PR  NI    VIRT    RES  %CPU  %MEM     TIME+ S COMMAND                                                               
1100171 terdon    20   0  657.6m   4.5m  82.0   0.0   1:24.08 S pigz                                                                  
Run Code Online (Sandbox Code Playgroud)

由于我运行命令两次以获得输出,因此数字并不完全匹配,但您应该能够看到一般的想法。

  • @cipricus 处理器不太可能导致您的机器变慢。看看 RAM,是的,还有磁盘读/写,其中之一就是问题所在。 (3认同)