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

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

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

在终端中使用top我看到的数字证明合法计算机的短暂缓慢。例如,当 Firefox 运行一些使用相对较高 CPU 资源(显示为“Web 内容”)的插件时,conky 脚本(就像 Gnome 系统监视器)显示使用的 CPU 资源约为 25%,而top显示约为 71%,这考虑到 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}%

ETC。

答案1

这是因为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 模式。

因此,您在示例中看到的是top处于 Irix 模式,并将 %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                                                                  

看看 %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                                                                  

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

相关内容