iostat 被常用于 分析 linux 磁盘IO的使用情况
下面我来 分享一下 iostat 的 日常使用
[root@localhost ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ] [ --human ] [ -o JSON ]
[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]
[ <device> [...] | ALL ]
其中
options 为操作项
interval 指定统计时间间隔
count 总共输出次数
-c 参数, 可以用来查看 cpu 状态信息
[root@localhost ~]# iostat -c
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 12/22/18 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.19 0.00 0.79 0.48 0.00 98.54
其中
%user CPU 在用户态执行进程的时间 百分比
%nice CPU 在用户态模式下,用于nice 操作,所占用CPU总时间的百分比
%system CPU处在内核态执行进程的时间百分比
%iowait CPU用于等待I/O操作占用CPU总时间的百分比
%steal 管理程序(hy)为另一个虚拟进程提供服务而等待虚拟CPU的百分比
%idle CPU空闲时间百分比
-k 参数 ,是将 block 为单位 的 列 强制 转化为 kb单位
相隔2 秒 时间 输出一次,一共5次
iostat -k 2 5
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 12/22/18 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.16 0.00 0.65 0.39 0.00 98.80
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 7.98 182.93 9.17 117530 5888
sdb 0.67 19.99 0.00 12846 0
dm-0 4.45 137.56 5.98 88380 3840
dm-1 0.15 3.47 0.00 2228 0
-d 参数 , 显示磁盘 使用状态
iostat -d -k 1 3
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 12/22/18 _x86_64_ (2 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 6.84 156.81 7.86 117530 5888
sdb 0.58 17.14 0.00 12846 0
dm-0 3.81 117.91 5.12 88380 3840
dm-1 0.13 2.97 0.00 2228 0
其中:
tps : 该设备 每秒 IO 的次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;kB_wrtn:写入的总数量数据量;
这些单位都为Kilobytes。
-x 参数,输出更多详细信息
iostat -x -k 1 3
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 12/22/18 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.10 0.00 0.43 0.25 0.00 99.22
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.02 0.02 4.91 0.17 115.92 5.90 48.00 0.02 3.48 3.54 1.81 1.39 0.71
sdb 0.00 0.00 0.42 0.00 12.65 0.00 59.61 0.00 0.29 0.29 0.00 0.25 0.01
dm-0 0.00 0.00 2.66 0.19 87.22 3.88 64.08 0.02 5.94 6.23 1.68 2.38 0.68
dm-1 0.00 0.00 0.09 0.00 2.19 0.00 47.40 0.00 0.16 0.16 0.00 0.07 0.00
其中
rrqm/s : 每秒这个设备相关的读取请求有多少被merge(merge 的意思是 读取相同位置的多个请求被合并为一个请求)
wrqn/s : 每秒这个设备相关的写请求有多少被merge
rsec/s: 每秒读取的扇区数
wsec/s: 每秒写入的扇区数
await : 每一个IO请求的处理的平均时间(单位是毫秒), 这里可以理解为IO的响应时间
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
参考 资料
https://www.cnblogs.com/xiuluo--angel/p/7086637.html
https://blog.youkuaiyun.com/xusensen/article/details/73080887