IO使用率
IO 使用率可以通过 iostat 获取,重点关注 %util 表示磁盘空闲情况
Usage: iostat [ options ] [ <interval> [ <count> ] ]
参数选项
1) -x:输出更详细的io设备统计信息
2) -d:单独输出Device结果,不包括cpu结果
3) -k/-m:输出结果以kB/mB为单位,而不是以扇区数为单位
4) -c:只显示系统CPU统计信息,即单独输出avg-cpu结果,不包括device结果
5) interval/count:每次输出间隔时间,count表示输出次数,不带count表示循环输出
[mysql@ip131 ~]$ iostat -xd 2 1
Linux 3.10.0-957.el7.x86_64 (ip131) 05/26/2020 _x86_64_ (2 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.01 0.86 0.59 41.81 5.11 64.45 0.00 0.79 0.86 0.69 0.51 0.07
dm-0 0.00 0.00 0.77 0.61 34.76 4.67 57.10 0.00 0.85 0.93 0.76 0.53 0.07
dm-1 0.00 0.00 0.02 0.00 0.53 0.00 54.67 0.00 0.13 0.13 0.00 0.04 0.00
输出项说明
%util: IO队列非空的时间比率
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请求的处理时间(毫秒为单位)
[mysql@ip131 ~]$ iostat
Linux 3.10.0-957.el7.x86_64 (ip131) 05/26/2020 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.07 0.00 0.25 0.00 0.00 99.68
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.23 32.90 4.46 201941 27407
dm-0 1.18 27.54 4.13 169074 25359
dm-1 0.01 0.40 0.00 2460 0
输出项说明
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。
Device: 各磁盘设备的IO统计信息。各列含义如下:
tps: 每秒进程下发的IO读、写请求数量
KB_read/s: 每秒从驱动器读入的数据量,单位为K。
KB_wrtn/s: 每秒从驱动器写入的数据量,单位为K。
KB_read: 读入数据总量,单位为K。
KB_wrtn: 写入数据总量,单位为K。
重点关注
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%表示该磁盘可能处于繁忙状态。