通过sar
和iowait
,我们可以获得 CPU 时间利用率。但是,当我执行这两个命令时,我可以看到它们的输出存在显着差异。
> iostat && sar 1 1
Linux 2.6.32-042stab090.4 (LinuxBox) 08/14/2014 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.46 0.00 0.52 0.07 0.00 98.95
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 10.53 760.66 44.67 3464410204 203460004
sdb 2.49 368.15 779.18 1676748162 3548769968
sdc 4.09 192.81 10.71 878170395 48792907
Linux 2.6.32-042stab090.4 (LinuxBox) 08/14/2014 _x86_64_ (16 CPU)
10:35:21 AM CPU %user %nice %system %iowait %steal %idle
10:35:22 AM all 0.00 0.00 0.06 0.00 0.00 99.94
Average: all 0.00 0.00 0.06 0.00 0.00 99.94
我很难决定哪个输出更可靠。哪一个命令应该被认为是更准确的?
答案1
您正在运行 iostat,但没有给出任何间隔。因此,它将报告自启动以来的统计信息。
而对于 sar,您提到了 1 个间隔。这意味着在 sar 报告中,报告的是最后 1 秒。
两者都用于/proc/
获取这些报告,其中所有这些值都存储为计数器(不时增加)。您可以从手册页中阅读更多有关这些报告使用的文件系统的信息(滚动到手册页的末尾)。如果您不明白我的观点,还请阅读有关计数器的内容。
然后,通过了解任意两个时间点的值并计算这两个时间点的值的差异来获得报告。因此,如果未指定间隔,因为只有 1 个时间点(即您运行命令的时间),并且它会将启动时间视为其他时间点。这就是为什么你会得到自启动时间以来的平均值。