iostat命令详解

iostat命令详解收藏

author:skate

time:2009/03/12

--------------------------------------------------------------------------------

iostat结果解析

[root@20081006-1724~]#iostat-x

Linux2.6.9-78.ELsmp(20081006-1724)11/20/2009

avg-cpu:%user%nice%sys%iowait%idle

0.190.000.040.0399.73

Device:rrqm/swrqm/sr/sw/srsec/swsec/srkB/swkB/savgrq-szavgqu-szawaitsvctm%util

sda0.0517.601.467.7280.69202.5740.34101.2930.870.011.060.370.34

sda10.000.000.000.000.000.000.000.0029.900.003.143.140.00

sda20.000.000.000.000.000.000.000.0016.250.001.511.300.00

sda30.0517.601.467.7280.69202.5740.34101.2930.870.011.060.370.34

dm-00.000.001.4625.2880.32202.2640.16101.1310.570.3613.560.130.34

dm-10.000.000.050.040.370.320.180.168.000.006.841.300.01

rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s

wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s

r/s:每秒完成的读I/O设备次数。即delta(rio)/s

w/s:每秒完成的写I/O设备次数。即delta(wio)/s

rsec/s:每秒读扇区数。即delta(rsect)/s

wsec/s:每秒写扇区数。即delta(wsect)/s

rkB/s:每秒读K字节数。是rsect/s的一半,因为每扇区大小为512字节。

wkB/s:每秒写K字节数。是wsect/s的一半。

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)

avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)。

await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)

svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)

%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。

即delta(use)/s/1000(因为use的单位为毫秒)

如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘

可能存在瓶颈。

比较重要的参数

%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的

svctm:平均每次设备I/O操作的服务时间

await:平均每次设备I/O操作的等待时间

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

如果%util接近100%,表明i/o请求太多,i/o系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70%,i/o压力就比较大,读取速度有较多的wait.同时可以结合vmstat查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。

await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O几乎没有等待时间;如果await远大于svctm,说明I/O队列太长,应用得到的响应时间变慢。

形象的比喻

r/s+w/s类似于交款人的总数

平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数

平均服务时间(svctm)类似于收银员的收款速度

平均等待时间(await)类似于平均每人的等待时间

平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少

I/O操作率(%util)类似于收款台前有人排队的时间比例

设备IO操作:总IO(io)/s=r/s(读)+w/s(写)=1.46+25.28=26.74

平均每次设备I/O操作只需要0.36毫秒完成,现在却需要10.57毫秒完成,因为发出的请求太多(每秒26.74个),假如请求时同时发出的,可以这样计算平均等待时间:

平均等待时间=单个I/O服务器时间*(1+2+...+请求总数-1)/请求总数

每秒发出的I/0请求很多,但是平均队列就4,表示这些请求比较均匀,大部分处理还是比较及时

svctm一般要小于await(因为同时等待的请求的等待时间被重复计算了),

svctm的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多

也会间接导致svctm的增加。await的大小一般取决于服务时间(svctm)以及

I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明

I/O几乎没有等待时间;如果await远大于svctm,说明I/O队列太长,应用

得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑

更换更快的磁盘,调整内核elevator算法,优化应用,或者升级CPU。

队列长度(avgqu-sz)也可作为衡量系统I/O负荷的指标,但由于avgqu-sz是

按照单位时间的平均值,所以不能反映瞬间的I/O洪水。

-----end----

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wyzxg/archive/2009/03/12/3985221.aspx

相关推荐