[ops@ip ~]$ iostat --help
Usage: iostat [ options ] [ <interval>[ <count>] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } [ [...] | ALL ] ]
[ [...] | ALL ] [ -p [ [,...] | ALL ] ]
命令参数:
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
常用方法:
iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)
iostat -c 1 10 #查看cpu状态
案例分析:
[user@ip ~]$ iostat -d -k 2 5
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.15 0.03 0.87 107088 3435228
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 1.00 0.00 4.00 0 8
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.50 0.00 2.00 0 4
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.00 0.00 0.00 0 0
分析:
输出结果一KB为单位,每2秒收集一次信息,一共收集5次,xvda每秒传输次数为0.15,每秒读磁盘0.03KB,写磁盘0.87KB,取样读磁盘总数107088KB,写磁盘总数为3435228KB
[user@ip ~]$ iostat -d -x -k 3 5
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.06 0.00 0.15 0.03 0.87 12.04 0.00 0.38 0.28 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.67 0.00 0.67 0.00 5.33 16.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
分析:
输出结果以KB为单位,每3秒收集一次,一共收集5次,每秒向磁盘上写5KB左右数据(wkB/s值),每秒约有1次IO操作(r/s+w/s),其中以写操作为主体,平均每次IO请求等待处理的时间为0.38毫秒,处理耗时为0.28 毫秒,等待处理的IO请求队列中,平均有0个请求驻留
[user@ip ~]$ iostat -c 3 5
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
3.96 0.00 1.21 0.00 0.11 94.71
avg-cpu: %user %nice %system %iowait %steal %idle
4.06 0.00 1.27 0.00 0.08 94.59
avg-cpu: %user %nice %system %iowait %steal %idle
3.65 0.00 1.19 0.00 0.17 95.00
avg-cpu: %user %nice %system %iowait %steal %idle
4.06 0.00 1.10 0.00 0.17 94.67
avg-cpu: %user %nice %system %iowait %steal %idle
3.81 0.00 1.10 0.00 0.08 95.00
分析:
用户CPU利用率约4%,优先级CPU利用率为0,系统CPU利用率约1.2%,IO挂起空闲百分比为0,虚拟CPU百分比约0.17,IO没有挂起空闲百分比约95%
单独使用
[user@ip ~]$ iostat
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
3.96 0.00 1.21 0.00 0.11 94.71
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 0.15 0.05 1.75 214177 6868520
单独执行iostat,显示的结果为从系统开机到当前执行时刻的统计信息
案例分析:
用户CPU利用率为3.96%,优先级用户CPU利用率为0,系统CPU利用率为1.21%,IO挂起空闲时间百分比为0,虚拟CPU时间百分比为0.11%,IO没有挂起空闲时间百分比为94.71,xvda每秒传输次数为0.15,每秒读磁盘0.05,写磁盘1.75,取样读磁盘总数为214177,写总数为6868520
最上面指示系统版本、主机名和日期
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
%user : 显示了在执行用户(应用)层时的CPU利用率
%nice : 显示了在以nice优先级运行用户层的CPU利用率
%system : 显示了在执行系统(内核)层时的CPU利用率
%iowait : 显示了CPU在I/O请求挂起时空闲时间的百分比
%steal : 显示了当hypervisor正服务于另外一个虚拟处理器时无意识地等待虚拟CPU所占有的时间百分比。
%idle : 显示了CPU在I/O没有挂起请求时空闲时间的百分比
Device: 各磁盘设备的IO统计信息
Device: 设备名称
tps: 设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
Blk_read/s: 每秒读扇区数量(一扇区为512bytes)
Blk_wrtn/s: 每秒写扇区数量
Blk_read: 取样时间间隔内读扇区总数量
Blk_wrtn: 取样时间间隔内写扇区总数量
如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
指定采样时间间隔与采样次数
指定iostat命令的采样间隔和采样次数:每2秒采集一次,一共采集3次
[user@ip ~]$ iostat -d 2 3
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (4 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 0.15 0.05 1.75 214177 6869944
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 0.00 0.00 0.00 0 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 0.00 0.00 0.00 0 0
案例分析:
xvda每秒传输次数为0.15,每秒读磁盘为0.05,写磁盘为1.75,取样读磁盘总数为214177,写磁盘为6869944
以kB为单位显示读写信息(-k选项)
使用-k选项,指定iostat的部分输出结果以kB为单位,而不是以扇区数为单位:
[ops@ip ~]$ iostat -d -k
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (8 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 55.11 0.08 6979.67 149976 13936026432
以上输出中,kB_read/s、kB_wrtn/s、kB_read和kB_wrtn的值均以kB为单位,相比以扇区数为单位,这里的值为原值的一半(1kB=512bytes*2)
(-m选项)以M为单位
[ops@ip ~]$ iostat -m
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.75 0.00 0.19 0.86 0.08 97.13
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
xvda 55.06 0.00 6.81 146 13609407
更详细的io统计信息(-x选项)
为显示更详细的io设备统计信息,我们可以使用-x选项,在分析io瓶颈时,一般都会开启-x选项:
[ops@ip ~]$ iostat -d -k -x 3 3
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (8 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.85 0.01 55.10 0.08 6978.66 253.30 1.02 18.52 0.94 5.20
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.00 2.00 0.00 1.00 0.00 13.33 26.67 0.00 0.00 0.00 0.00
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队列非空的时间比率
对于以上示例输出,我们可以获取到以下信息:
每秒向磁盘上写7M左右数据(wkB/s值)
每秒有55次IO操作(r/s+w/s),其中以写操作为主体
平均每次IO请求等待处理的时间为18.52毫秒,处理耗时为0.94 毫秒
等待处理的IO请求队列中,平均有1.02个请求驻留
util = (r/s+w/s) * (svctm/1000)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有大量io在等待。
获取cpu部分状态值 (-c选项)
[ops@ip ~]$ iostat -c 2 3
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.75 0.00 0.19 0.86 0.08 97.13
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
显示tty和Cpu信息 (-t选项)
[ops@ip ~]$ iostat -t
Linux 3.14.48-33.39.amzn1.x86_64 08/14/2017 _x86_64_ (8 CPU)
08/14/2017 09:19:28 AM
avg-cpu: %user %nice %system %iowait %steal %idle
1.75 0.00 0.19 0.86 0.08 97.13
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 55.05 0.15 13944.15 299952 27872069752