我用来vmstat
从 ubuntu linux 获取 IO 统计数据。下面是该命令的说明:
IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
我想知道这意味着什么block device
。是指本地磁盘吗?我尝试在磁盘上复制一个大文件,但该值没有改变。
答案1
是的。您的本地磁盘应为块设备,文件副本应显示在bi
/中bo
。它们以每秒千字节为单位显示。
使用注意事项。根据man vmstat
,第一行数字vmstat
“给出自上次重新启动以来的平均值”。这就是仅有的如果您运行命令vmstat
(不带任何选项),则会显示该行。随后的行给出“有关采样周期长度的信息延迟”。 延迟是 的可选参数vmstat
。
此外,请注意vmstat
显示数据何时写入磁盘。如果您向文件写入相对少量的数据,并且您的程序没有显式地将其刷新到磁盘,那么它可能会在缓存中保留一段时间,而不会立即写入磁盘。
以下示例运行vmstat 1
几秒钟,同时复制/dev/zero
到磁盘上的文件。我用来sync
确保看到一些磁盘写入。
$ mkdir test &&
(cd test &&
(sync ; vmstat 1 > vmstat.log & PID1=$! ; \
cat </dev/zero >test & PID2=$! ; \
sleep 3 ; kill $PID2 ; sync ; kill $PID1 ; \
cat vmstat.log))
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 478976 2374288 76996 1023860 1 8 64 353 96 251 12 4 82 2 0
0 2 478976 1782068 76996 1615824 0 0 0 202764 1405 786 0 9 56 34 0
0 2 478976 1637036 76996 1760512 0 0 0 194572 1421 1013 0 2 59 39 0
0 2 478976 1491580 76996 1906852 0 0 0 159760 1355 850 0 2 62 36 0
0 1 478976 1491620 76996 1907068 0 0 0 129036 502 706 0 2 71 27 0
1 1 478976 1491588 76996 1907068 0 0 0 157696 491 672 0 3 77 20 0
0 3 478976 1491748 77004 1907064 0 0 0 19904 540 10719 0 2 73 25 0