iostat 输出字段说明

Posted ygtff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iostat 输出字段说明相关的知识,希望对你有一定的参考价值。

iostat是在查看、分析磁盘I/O时,一个很重要的工具。我们来简单说说iostat的输出都表示什么。

先看一段iostat的输出:

[root@k8s-slave9 ~] # iostat -xdm 3 /dev/sde Linux 4.11.3-1.el7.elrepo.x86_64 (k8s-slave9.sm.bj.hualala.com)     05 /11/2018     _x86_64_    (40 CPU) Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.04     0.00     0.05  2720.69     0.01  160.63    1.23  182.37  90.72   0.36   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.03    0.00    0.00    0.00   0.00   2.73   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.33     0.00     0.01    40.00     0.04  207.00    0.00  207.00 125.00   4.17   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00   Device:         rrqm /s   wrqm /s     r /s     w /s    rMB /s    wMB /s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sde               0.00     0.00    0.00    0.33     0.00     0.00    16.00     0.05  144.00    0.00  144.00 144.00   4.80

rrqm/s:     每秒合并读操作的次数

wrqm/s:    每秒合并写操作的次数

r/s:           每秒读操作的次数 (IOPS)

w/s:          每秒写操作的次数 (IOPS)

rMB/s:      每秒读带宽

wMB/s:    每秒写带宽

avgrq-sz:  I/O请求的平均大小(扇区数)

avgqu-sz: I/O请求队列的平均长度

await:      每个I/O平均耗时,单位是ms,这个时间包括I/O在队列中等待耗时,以及最终被磁盘设备处理的时间

r_await:   每个读操作的平均耗时

w_await:  每个写操作的平均耗时

svctm:     这个指标其实已经废弃了,没意义,不管这个指标

%util:       该磁盘设备的繁忙度,该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有。

%util与硬盘设备饱和度

%util表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有。由于现代硬盘设备都有并行处理多个I/O请求的能力,所以%util即使达到100%也不意味着设备饱和了。

举个简化的例子:某硬盘处理单个I/O需要0.1秒,有能力同时处理10个I/O请求,那么当10个I/O请求依次顺序提交的时候,需要1秒才能全部完成,在1秒的采样周期里%util达到100%;

而如果10个I/O请求一次性提交的话,0.1秒就全部完成,在1秒的采样周期里%util只有10%。可见,即使%util高达100%,硬盘也仍然有可能还有余力处理更多的I/O请求,即没有达到饱和状态。

 

await多大才算有问题

await是单个I/O所消耗的时间,包括硬盘设备处理I/O的时间和I/O请求在kernel队列中等待的时间,正常情况下队列等待时间可以忽略不计,姑且把await当作衡量硬盘速度的指标吧,那么多大算是正常呢?
对于SSD,从0.0x毫秒到1.x毫秒不等,具体看产品手册;
对于机械硬盘,一般来说一万转的机械硬盘是8.38毫秒,包括寻道时间、旋转延迟、传输时间。

在实践中,要根据应用场景来判断await是否正常,如果I/O模式很随机、I/O负载比较高,会导致磁头乱跑,寻道时间长,那么相应地await要估算得大一些;

如果I/O模式是顺序读写,只有单一进程产生I/O负载,那么寻道时间和旋转延迟都可以忽略不计,主要考虑传输时间,相应地await就应该很小,甚至不到1毫秒。

对磁盘阵列来说,因为有硬件缓存,写操作不等落盘就算完成,所以写操作的service time大大加快了,如果磁盘阵列的写操作不在一两个毫秒以内就算慢的了;

读操作则未必,不在缓存中的数据仍然需要读取物理硬盘,单个小数据块的读取速度跟单盘差不多。

 

以上是关于iostat 输出字段说明的主要内容,如果未能解决你的问题,请参考以下文章

【%util】关于iostat 中的 %util 指标说明

iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多

iostat命令(转)

iostat和iowait详细解说

iostat和iowait详细解说

iostat和iowait详细解说