我在 ubuntu linux 上使用vmstat
来获取 cpu 使用情况。我当前的CPU 非常繁忙,几乎达到100%。如果我vmstat
像下面这样运行:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
8 1 0 6383924 1287224 18123836 0 0 2 53 2 16 1 1 98 0 0
显示CPU空闲率为98%。但如果我延迟运行它并按如下方式计数:
$ vmstat 2 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 1 0 6491296 1287268 18128956 0 0 2 53 3 17 1 1 98 0 0
4 1 0 6491992 1287268 18129080 0 0 0 2264 11142 17980 98 2 0 0 0
从第二次开始它显示正确的CPU使用率。我的问题是为什么它第一次运行时无法输出正确的值。
答案1
来自man vmstat
(我添加的粗体强调):
概要
vmstat [options] [delay [count]]
描述
vmstat
报告有关进程、内存、分页、块 IO、陷阱、磁盘和 CPU 活动的信息。生成的第一份报告给出了自上次重启以来的平均值。
其他报告提供有关长度延迟的采样周期的信息。无论哪种情况,进程和内存报告都是即时的。
选项
delay
更新之间的延迟(以秒为单位)。 如果未指定延迟,则仅打印一份报告,其中包含自启动以来的平均值。
count
更新次数。在没有计数的情况下,定义延迟时,默认为无限。[...]