当我执行topas
某个进程时,CPU% 列中显示为 43%,然后跳到 85%。
当我执行时:
"ps aux | grep processName"
同样的过程是 5%。
什么更准确?我还制作了一个类似于 Linux“watch”命令的循环,我看到它位于 %5。
topas 和 ps 有什么区别,谁是正确的?
输出ps
:
[ttfai231:root]/root>ps aux | head -1; ps aux | sort -rn +2 | head -10
USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND
root 9306548 8.6 1.0 12880 12880 - A 13:35:33 41:20 MYDAEMON
root 1048868 2.0 0.0 448 448 - A 13:22:36 11:50 wait
答案1
我相信这是每个字段的计算方式的差异。对于该topas
领域:
CPU 利用率%
该进程的平均处理器使用率监测间隔。第一次显示进程时,该值是进程生命周期内的平均处理器使用情况。
...而ps
字段:
%中央处理器
(u 和 v 标志)进程使用 CPU 的时间百分比自该过程开始以来。该值是通过进程使用 CPU 的时间除以进程已用时间计算得出的。在多处理器环境中,该值进一步除以可用 CPU 的数量,因为同一进程中的多个线程可以同时在不同的 CPU 上运行。 (由于计算此数据的时基有所不同,因此所有 %CPU 字段的总和可能超过 100%。)
我已将描述中突出差异的部分加粗。
CPU topas
% 值会随着进程使用更多或更少的 CPU 时间而波动,因此它将显示最近(可能很短)时间间隔内的 CPU 使用情况; % ps
CPU 值将始终显示为进程生命周期内的平均值。