Linux性能测试分析命令_iostat
iostat用于输出CPU和磁盘I/O相关的统计信息
iostat语法
用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]]
常用选项说明:
-c:只显示系统CPU统计信息,即单独输出avg-cpu结果,不包括device结果 -d:单独输出Device结果,不包括cpu结果 -k/-m:输出结果以kB/mB为单位,而不是以扇区数为单位 -x:输出更详细的io设备统计信息 interval/count:每次输出间隔时间,count表示输出次数,不带count表示循环输出
说明:更多选项使用使用man iostat查看
常用实例
1、iostat,结果为从系统开机到当前执行时刻的统计信息
$ iostat Linux 3.10.0-514.26.2.el7.x86_64 (VM_17_110_centos) 2017年10月22日 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 1.49 0.00 0.65 0.29 0.00 97.58 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 3.27 6.38 48.27 7044109 53255704 vdb 0.00 0.00 0.00 944 0 vdc 12.22 145.74 120.85 160792201 133326268
输出含义:
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。
Device: 各磁盘设备的IO统计信息。各列含义如下:
Device: 以sdX形式显示的设备名称 tps: 每秒进程下发的IO读、写请求数量 Blk_read/s: 每秒读扇区数量(一扇区为512bytes) Blk_wrtn/s: 每秒写扇区数量 Blk_read: 取样时间间隔内读扇区总数量 Blk_wrtn: 取样时间间隔内写扇区总数量
2、iostat -x -k -d 1 2。每隔1S输出磁盘IO的详细详细,总共采样2次。
$ iostat -x -k 1 2 Linux 3.10.0-514.26.2.el7.x86_64 (VM_17_110_centos) 2017年10月22日 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 1.49 0.00 0.65 0.29 0.00 97.58 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 6.85 0.67 2.60 6.38 48.27 33.39 0.02 5.72 5.46 5.78 0.27 0.09 vdb 0.00 0.00 0.00 0.00 0.00 0.00 14.75 0.00 1.55 1.55 0.00 1.55 0.00 vdc 0.06 14.87 6.91 5.31 145.72 120.84 43.62 0.11 9.04 9.92 7.89 0.89 1.09 avg-cpu: %user %nice %system %iowait %steal %idle 0.50 0.00 0.25 0.00 0.00 99.25 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 14.00 0.00 7.00 0.00 84.00 24.00 0.03 3.57 0.00 3.57 0.71 0.50 vdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 vdc 0.00 2.00 0.00 27.00 0.00 124.00 9.19 0.32 11.67 0.00 11.67 0.48 1.30
以上各列的含义如下:
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并 wrqm/s: 每秒对该设备的写请求被合并次数 r/s: 每秒完成的读次数 w/s: 每秒完成的写次数 rkB/s: 每秒读数据量(kB为单位) wkB/s: 每秒写数据量(kB为单位) avgrq-sz:平均每次IO操作的数据量(扇区数为单位) avgqu-sz: 平均等待处理的IO请求队列长度 await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位) svctm: 平均每次IO请求的处理时间(毫秒为单位) %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率
重点关注参数
1、iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题。
2、avgqu-sz 表示磁盘IO队列长度,即IO等待个数。
3、await 表示每次IO请求等待时间,包括等待时间和处理时间
4、svctm 表示每次IO请求处理的时间
5、%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态。