zrenpro 2011-06-13
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