如何理解vmstat的IO输出?

如何理解vmstat的IO输出?

我用来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

相关内容