iostat工具
介绍
iostat是调查磁盘IO问题使用最频繁的工具。它汇总了所有在线磁盘统计信息,为负载特征归纳,使用率和饱和度提供了指标。它可以由任何用户执行,统计信息直接来源于内核,因此这个工具的开销基本可以忽略不计。
安装方式
iostat一般会随系统安装。如果没有,以CentOS为例,可以使用以下命令安装:
# yum -y install sysstat
使用方式
命令格式:直接使用命令+参数,例如
# iostat -d -k -x 1 100
常用参数如下:
参数 |
说明 |
---|---|
-c |
显示CPU使用情况。 |
-d |
显示磁盘使用情况。 |
-k |
以KB为单位显示。 |
-m |
以M为单位显示。 |
-p |
显示磁盘单个的情况。 |
-t |
显示时间戳。 |
-x |
显示详细信息。 |
我们也可以在最后添加统计周期和统计时长,比如上面的样例中,是要求以1s为周期统计,总共统计100s。
输出格式:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.02 7.25 0.04 1.90 0.74 35.47 37.15 0.04 19.13 5.58 1.09 dm-0 0.00 0.00 0.04 3.05 0.28 12.18 8.07 0.65 209.01 1.11 0.34 dm-1 0.00 0.00 0.02 5.82 0.46 23.26 8.13 0.43 74.33 1.30 0.76 dm-2 0.00 0.00 0.00 0.01 0.00 0.02 8.00 0.00 5.41 3.28 0.00
参数含义如下:
参数 |
说明 |
---|---|
rrqm/s |
每秒合并放入请求队列的读操作数。 |
wrqm/s |
每秒合并放入请求队列的写操作数。 |
r/s |
每秒磁盘实际完成的读I/O设备次数。 |
w/s |
每秒磁盘实际完成的写I/O设备次数。 |
rkB/s |
每秒从磁盘读取KB数。 |
wkB/s |
每秒写入磁盘的KB数。 |
avgrq-sz |
平均请求数据大小,单位为扇区(512B)。 |
avgqu-sz |
平均I/O队列长度(操作请求数)。 |
await |
平均每次设备I/O操作的等待时间(毫秒)。 |
svctm |
平均每次设备I/O操作的响应时间(毫秒)。 |
%util |
用于I/O操作时间的百分比,即使用率。 |
重要参数详解:
- rrqm/s和wrqm/s,每秒合并后的读或写的次数(合并请求后,可以增加对磁盘的批处理,对HDD还可以减少寻址时间)。如果值在统计周期内为非零,也可以看出数据的读或写操作的是连续的,反之则是随机的。
- 如果%util接近100%(即使用率为百分百),说明产生的I/O请求太多,I/O系统已经满负荷,相应的await也会增加,CPU的wait时间百分比也会增加(通过TOP命令查看),这时很明显就是磁盘成了瓶颈,拖累整个系统。这时可以考虑更换更高性的能磁盘,或优化软件以减少对磁盘的依赖。
- await(读写请求的平均等待时长)需要结合svctm参考。svctm的和磁盘性能直接有关,它是磁盘内部处理的时长。await的大小一般取决于svctm以及I/O队列的长度和。svctm一般会小于await,如果svctm比较接近await,说明I/O几乎没有等待时间(处理时间也会被算作等待的一部分时间);如果wait大于svctm,差的过高的话一定是磁盘本身IO的问题;这时可以考虑更换更快的磁盘,或优化应用。
- 队列长度(avgqu-sz)也可作为衡量系统I/O负荷的指标,但是要多统计一段时间后查看,因为有时候只是一个峰值过高。
父主题: 常用性能监测工具