iostat介绍

2013年6月5日 | 分类: 操作系统, 网络性能, 转载备份 | 标签:

iostat是输入输出状态统计工具,能够检测出磁盘的操作,iostat会针对每一个磁盘进行分析,给出各个指标的统计数据,iostat的数据一般来自/proc/diskstats:


[root@cdn]# iostat -x 1
Linux 2.6.18-164.el5 (cdn-cfgmgr123002.cm6) 06/05/2013

avg-cpu: %user %nice %system %iowait %steal %idle
 18.32 0.02 8.76 0.19 0.00 72.71

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.53 69.68 2.37 82.21 120.00 1213.87 15.77 0.58 6.89 0.14 1.18

从上面可以看到ipstat不仅给出了磁盘的数据,还给出cpu的使用情况,不过这篇文章主要是解释磁盘的各个指标含义:

rrqm/s:该指标是指合并的读请求数目,有些请求操作系统会做一些合并再发给设备;

r/s:最终向io设备发起的读次数,等于合并后的请求和不能合并的请求之和;

rsec/s:每秒读取的扇区数;

rrqm/s和r/s的区别是:它们不是一个层面的东西,rrqm是指在进行最终io之前,操作系统的文件系统根据读请求的特点,将连续的读请求合并成可以向设备一次读取的合并过程中,合并了多少个读请求,而r/s是指最终落到磁盘上的读操作,如果没有能够合并的读操作,那么rrqm/s=0,注意一次系统调用并不一定是一个读请求,假如一次读取1MB的内容,由于io每次buffer一般是256kb,所以一次系统调用可能产生多个读请求。

比如发起了100个read系统调用,每个读4K,假如这100个都是连续的读,由于硬盘通常允许最大的request为256KB,那么block层会把这100个读请求合并成2个request,一个256KB,另一个144KB,rrqpm/s为100,因为100个request都发生了合并,不管它最后合并成几个;r/s为2,因为最后的request数为2。

avgrq-sz:平均每次操作设备读写的扇区数目

avgqu-sz:平均IO队列的长度,是指前面有多少io在排队,队列越长说明io越慢

await:平均每次io需要等待的时间,如果大于10ms,一般就比较差了,跟平均io队列长度和每次io服务时间关系较大

svctm:每次io的服务时间ms,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

%util:每秒有多少时间在进行io操作。该参数代表了设备的繁忙程度,如果单个磁盘到了100%,说明磁盘处理能力不够。

%util=(r/s+w/s)*(svctm/1000)

更多关于io的信息参见:

https://www.kernel.org/doc/Documentation/iostats.txt

http://www.symantec.com/connect/articles/getting-hang-iops-v13

http://www.pythian.com/blog/basic-io-monitoring-on-linux/

本文的评论功能被关闭了.