当我的笔记本电脑在较重的处理过程中暂时变慢时,我预计会看到比我在桌面上的 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
(强调我的):
%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
由于我运行命令两次以获得输出,因此数字并不完全匹配,但您应该能够看到一般的想法。