iostat 命令详解

来源:互联网 发布:手机必备软件大全2016 编辑:程序博客网 时间:2024/06/11 03:17
iostat性能评估的一个主要部分就是磁盘性能。iostat 命令提供了存储接口的性能指标。# iostatLinux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008avg-cpu:  %user   %nice    %sys %iowait   %idle          15.71    0.00    1.07    3.30   79.91Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtncciss/c0d0        4.85        34.82       130.69  307949274 1155708619cciss/c0d0p1      0.08         0.21         0.00    1897036       3659cciss/c0d0p2     18.11        34.61       130.69  306051650 1155700792cciss/c0d1        0.96        13.32        19.75  117780303  174676304cciss/c0d1p1      2.67        13.32        19.75  117780007  174676288sda               0.00         0.00         0.00        184          0sdb               1.03         5.94        18.84   52490104  166623534sdc               0.00         0.00         0.00        184          0sdd               1.74        38.19        11.49  337697496  101649200sde               0.00         0.00         0.00        184          0sdf               1.51        34.90         6.80  308638992   60159368sdg               0.00         0.00         0.00        184          0... and so on ...输出的开始部分显示了可用 CPU 和 I/O 等待时间等指标,与您在 mpstat 命令中看到的相同。输出的下一部分显示对系统上每个磁盘设备非常重要的指标。让我们看一看这些列的含义:tps          每秒的传输数量,例如,每秒的 I/O 操作数。注:这只是 I/O 操作的数量;每个操作可能非常大,也可能非常小。Blk_read/s   每秒从该设备读取的块数。通常,块的大小为 512 字节。这是一个磁盘利用率较好的值。Blk_wrtn/s   每秒写入该设备的块数Blk_read     到目前为止从该设备读取的块数。注意,这并不是正在发生的情况。很多块已经从该设备读取。             可能现在什么也没有读取。观察一段时间,看是否有变化。Blk_wrtn     写入该设备的块数。在一个拥有很多设备的系统中,输出可能需要通过屏幕多次滚动 — 这使得某些内容较难检查,尤其当您查找特定设备时更是如此。可以通过将该设备作为参数传递只获得特定设备的指标。# iostat sdaj   Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008avg-cpu:  %user   %nice    %sys %iowait   %idle          15.71    0.00    1.07    3.30   79.91Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtnsdaj              1.58        31.93        10.65  282355456   94172401开始部分显示的 CPU 指标可能没什么用处。要取消在输出开始部分显示的与 CPU 有关的统计信息,使用 -d 选项。可以将可选参数放在结尾处,让 iostat 以固定的时间间隔显示设备统计信息。要每隔 5 秒获取一次该设备的统计信息,共 10 次,执行以下命令:# iostat -d sdaj 5 10You can display the stats in kilobytes instead of just bytes using the -k option:# iostat -k -d sdaj    Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtnsdaj              1.58        15.96         5.32  141176880   47085232尽管以上输出可能非常有帮助,但很多信息并不容易显示。例如,磁盘问题的一个主要原因是磁盘服务时间,即,磁盘将数据送达请求该数据的进程的时间。要获得该级别的指标,我们需要使用 -x 选项获得磁盘的“扩展”统计信息。# iostat -x sdajLinux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008avg-cpu:  %user   %nice    %sys %iowait   %idle          15.71    0.00    1.07    3.30   79.91Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %utilsdaj         0.00   0.00  1.07  0.51   31.93   10.65    15.96     5.32    27.01     0.01    6.26   6.00   0.95让我们看一看这些列的含义:rrqm/s    每秒合并的读请求数。磁盘请求排成队列。只要可能,内核就会尝试将多个请求合并成一个请求。          该指标测量读取传输的合并请求数。wrqm/s    与读取类似,这是合并的写请求数。r/s       每秒向该设备发出的读请求数w/s       同样,它是每秒向该设备发出的写请求数rsec/s    每秒从该设备读取的扇区数wsec/s    每秒写入该设备的扇区数rkB/s     每秒从该设备读取的数据,以 KB/秒为单位wkB/s     写入该设备的数据,以 kb/s 为单位avgrq-sz  读请求的平均大小(扇区数)avgqu-sz  该设备的请求队列的平均长度await     设备发出 I/O 请求经过的平均时间,以毫秒为单位。这是服务时间与队列中的等待时间的总和。svctm     设备的平均服务时间,以毫秒为单位%util     设备的带宽利用率。如果该值接近于 100%,则表明该设备已饱和。用法可以使用这些命令的组合从输出中获取一些有意义的信息。记住,在从进程获取请求时磁盘速度可能很慢。磁盘中的数据到达队列所花费的时间称为服务时间。如果您想找出服务时间最长的磁盘,执行以下命令:# iostat -x | sort -nrk13sdat         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    18.80     0.00   64.06  64.05   0.00sdv          0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    17.16     0.00   18.03  17.64   0.00sdak         0.00   0.00  0.00  0.14    0.00    1.11     0.00     0.55     8.02     0.00   17.00  17.00   0.24sdm          0.00   0.00  0.00  0.19    0.01    1.52     0.01     0.76     8.06     0.00   16.78  16.78   0.32... and so on ...这表明磁盘 sdat 的服务时间最长(64.05 毫秒)。为什么时间这么长呢?可能性很多,但最可能的原因有三个:该磁盘获取了大量请求,以至于平均服务时间长。该磁盘利用已移到可能的最大带宽。该磁盘原本速度就很慢。查看输出,我们看到读取数/秒和写入数/秒为 0.00(几乎没有发生任何事件),因此我们可以排除第一种可能性。利用率也为 0.00%(最后一列),因此我们可以排除第二种可能性。这就剩下了第三种可能性。但得出该磁盘原本速度慢的结论之前,我们需要更加仔细地观察该磁盘。我们可以只检查该磁盘,每隔 5 秒 检查一次,共 10 次。# iostat -x sdat 5 10如果输出显示相同的平均服务时间、读取速率和利用率,则可以断定最有可能是第三种情况。如果这些数值发生了变化,我们可以获取更详细的线索来了解该设备服务时间较长的原因。同样,可以对读取速率列进行排序,以显示处于恒定读取速率下的磁盘。# iostat -x | sort -nrk6 sdj          0.00   0.00  1.86  0.61   56.78   12.80    28.39     6.40    28.22     0.03   10.69   9.99   2.46sdah         0.00   0.00  1.66  0.52   50.54   10.94    25.27     5.47    28.17     0.02   10.69  10.00   2.18sdd          0.00   0.00  1.26  0.48   38.18   11.49    19.09     5.75    28.48     0.01    3.57   3.52   0.61... and so on ...该信息可以帮助您查找“热”磁盘,即进行很多读取或写入的磁盘。如果该磁盘的确“热”,则应确定“热”的原因;可能是该磁盘上定义的某个文件系统正在进行大量读取操作。如果是这种情况,则应考虑将该文件系统在多个磁盘之间进行条带化,以分发负载,从而最大程度地减小某个特定磁盘“热”的可能性。

[1] http://blog.csdn.net/evils798/article/details/7524486

0 0