使用 vmstat 命令评估磁盘性能

为了证实系统是 I/O 绑定,您最好使用 iostat 命令。

但是, vmstat 命令可以通过查看 wa 列来指向该方向,如 vmstat 命令中所述。 其他关于 I/O 绑定的指示符是:

  • disk xfervmstat 输出的一部分
    为了显示有关逻辑磁盘的统计信息(最大允许 4 个磁盘),请使用下列命令:
    # vmstat hdisk0 hdisk1 1 8
    kthr     memory             page              faults        cpu     disk xfer
    ----  ----------  ----------------------- ------------ ----------- ------
    r  b   avm   fre  re  pi  po  fr  sr  cy  in   sy  cs  us sy id wa  1 2 3 4
    0  0  3456 27743   0   0   0   0   0   0 131  149  28  0  1 99  0  0 0
    0  0  3456 27743   0   0   0   0   0   0 131   77  30  0  1 99  0  0 0
    1  0  3498 27152   0   0   0   0   0   0 153 1088  35  1 10 87  2  0 11
    0  1  3499 26543   0   0   0   0   0   0 199 1530  38  1 19  0 80  0 59
    0  1  3499 25406   0   0   0   0   0   0 187 2472  38  2 26  0 72  0 53
    0  0  3456 24329   0   0   0   0   0   0 178 1301  37  2 12 20 66  0 42
    0  0  3456 24329   0   0   0   0   0   0 124   58  19  0  0 99  0  0 0
    0  0  3456 24329   0   0   0   0   0   0 123   58  23  0  0 99  0  0 0

    这个磁盘 xfer 部分提供了发生在样本时间间隔内每秒向特定的物理卷传送的次数。 您可以指定一至四个物理卷的名称。 每个指定驱动器的传送统计信息按指定顺序给出。 该计数代表向物理设备的请求数。 它并不暗示读取或写入的数据量。 几个逻辑请求可以组合成为一个物理请求。

  • vmstat 输出的

    这列显示了在评估间隔中(每秒)发生的硬件或设备中断的次数。 中断的示例为磁盘请求完成和 10 毫秒的时钟中断。 既然后者每秒发生 100 次,那么 in 这个字段就总是大于 100。 但是 vmstat 命令同样提供了详细的有关系统中断的信息。

  • vmstat -i 输出
    这个 -i 参数显示了自系统启动以来被每个设备中断的次数。 但是如果增加间隔(可选)和计数参数,自启动以来的统计信息只是在第一节中显示;每个后缀节是有关被扫描间隔的统计信息。
    # vmstat -i 1 2
    priority level    type   count module(handler)
        0       0   hardware     0 i_misc_pwr(a868c)
        0       1   hardware     0 i_scu(a8680)
        0       2   hardware     0 i_epow(954e0)
        0       2   hardware     0 /etc/drivers/ascsiddpin(189acd4)
        1       2   hardware   194 /etc/drivers/rsdd(1941354)
        3      10   hardware 10589024 /etc/drivers/mpsdd(1977a88)
        3      14   hardware 101947 /etc/drivers/ascsiddpin(189ab8c)
        5      62   hardware 61336129 clock(952c4)
       10      63   hardware 13769 i_softoff(9527c)
    priority level    type   count module(handler)
        0       0   hardware     0 i_misc_pwr(a868c)
        0       1   hardware     0 i_scu(a8680)
        0       2   hardware     0 i_epow(954e0)
        0       2   hardware     0 /etc/drivers/ascsiddpin(189acd4)
        1       2   hardware     0 /etc/drivers/rsdd(1941354)
        3      10   hardware    25 /etc/drivers/mpsdd(1977a88)
        3      14   hardware     0 /etc/drivers/ascsiddpin(189ab8c)
        5      62   hardware   105 clock(952c4)
       10      63   hardware     0 i_softoff(9527c)
    注: 输出将因系统而异,具体取决于硬件和软件配置 (例如,时钟中断可能不会显示在 vmstat -i 输出中,尽管它们将在正常 vmstat 输出中的 in 列下说明)。 检查 count 列中数量大的条目,调查这些模块产生如此之多的中断的原因。