1、简介
iostat工具主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。
2、使用说明
2.1、命令介绍
主要分为4个部分:iostat [ 选项 ] [<时间间隔> <次数> ]
常用参数说明:
- -c: 仅显示CPU统计信息,与-d选项互斥
- -d:仅显示磁盘统计信息,与-c选项互斥
- -k:以 kb 为单位显示,默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以kb作为计量单位显示。
- -m:以 mb 为单位显示
- -p:[ { device [,…] | ALL } ] 显示磁盘分区的相关统计信息(默认粒度只到磁盘,没有显示具体的逻辑分区)
- -y:跳过不显示第一次报告的数据,因为iostat使用的是采样统计,所以iostat的第一次输出的数据是自系统启动以来的累计的数据,所以如果做数据统计时,计入了统计,会影响最终数据结果。
- -x:显示更详细的磁盘报告信息,默认只显示六列,加上该参数后会显示更详细的信息(该参数仅在linux内核版本2.4以后数据才是准确的)
- -t:输出报告时显示系统时间
- -z:只显示在采样周期内有活动的磁盘
2.2、iostat使用
1)iostat命令默认输出结果如下
它不仅展示了磁盘信息(Device),还展示了CPU信息(avg-cpu)
这些列的具体信息如下:
%usr:CPU在用户模式下的时间百分比
%nice:CPU处在带NICE值的用户模式下的时间百分比
%system:CPU在系统模式下的时间百分比
%iowait:CPU等待输入输出完成时间的百分比
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle:CPU空闲时间百分比
tps:该设备每秒传输次数
kB_read/s:每秒从设备读取的数据量
kB_wrtn/s:每秒向设备写入的数据量
kB_read:读取的总数据量
kB_wrtn:写入的总数据量
注意:
- %iowait值过高:硬盘存在io瓶颈
- %idle高但是系统响应慢:有可能是CPU等待分配内存,此时内存容量是瓶颈;
- %idle持续低于CPU核数:表明CPU一直比较繁忙,此时CPU资源是瓶颈
2)iostat磁盘详细输出
使用iostat -x可以输出磁盘更详细信息
明显看出来此时Device行有更多信息输出,我们来看下每列的含义
- r/s:每秒读次数,r/s+w/s就是磁盘IOPS
- w/s:每秒写次数
- rkB/s:每秒读数据量(KB单位),rkB/s+wkB/s就是磁盘吞吐量
- wkB/s:每秒写数据量(KB单位)
- rrqm/s:每秒merge的读数据量
- wrqm/s:每秒merge的写数据量
- %rrqm:读请求merge发送到磁盘的百分比
- %wrqm:写请求merge发送到磁盘的百分比
- r_await:读请求处理完成平均等待时间(ms单位),包含请求在队列中的等待时间和设备实际处理的时间,r_await+w_await就是磁盘对请求响应时间
- w_await:写请求处理完成平均等待时间(ms单位)
- 包含请求在队列中的等待时间和设备实际处理的时间
- aqu-sz:平均请求队列长度
- rareq-sz:平均读请求大小(KB单位)
- wareq-sz:平均写请求大小(KB单位)
- svctm:io请求平均处理时间(ms单位)
- %util:磁盘处理IO请求的事件百分比,磁盘IO使用率
3)定时刷新信息
同vmstat一样,定时刷新在我们实际查看问题是比较有意义的结果
- -d 指定只输出磁盘信息
- -x 展示磁盘信息扩展项
- 2秒输出一次
iostat -d -x 2
4)指定展示单位
iostat输出项我们可以指定输出单位,以M、KB均可
指定以MB为单位展示
iostat -m
指定以KB为单位展示
iostat -k
指定以human 可视化结果
常用-h即可