iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况,iostat,它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
安装iostat
yum -y install sysstat.x86_64
命令详解
语法:
Usage: iostat [ options ] [ <时间间隔> [ <次数> ] ]
//不带次数 表示循环输出
常用选项说明:
-c :只输出统计CPU信息
-d :只输出统计磁盘信息
-x :输出更详细信息
-k/m :输出结果以KB/MB为单位,而不是以扇区数为单位
CPU参数详解:
avg-cpu:总体cpu使用情况统计信息,对于多核cpu,这里所谓的就是cpu的平均使用情况,而不是单单一核cpu的平均使用情况。
重点关注iowait值,表示cpu用于等待io请求的完成时间,这个值越大表示等待时间越长!
%user: CPU处在用户模式下的时间百分比。
%nice: CPU处在带NICE值的用户模式下的时间百分比。
%system: CPU处在系统模式下的时间百分比。
%iowait: CPU等待输入输出完成时间的百分比。 重点关注!!
%steal: 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle: CPU空闲时间百分比。
如果%iowait的值过高,表示硬盘存在I/O瓶颈
如果%idle值高,表示CPU较空闲
如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。
磁盘参数详解
tps: 该设备每秒的传输次数
kB_read/s: 每秒从设备(drive expressed)读取的数据量 默认单位K
kB_wrtn/s: 每秒向设备(drive expressed)写入的数据量 默认单位K
kB_read: 读取的总数据量 默认单位K
kB_wrtn: 写入的总数量数据量 默认单位K
磁盘:-x选项输出信息详解
[root@shell ~]# iostat -d -x
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s(读合并请求)
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s(写合并请求)
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。 每个请求平均大小,单位是扇区数,一般在200~400之间算是正常和理想的状态,如果这个值比较小,比方说只在100左右,说明太多的IO请求没有被合并,或者大的IO请求被"打散",在写操作时,过多小的请求会造成磁盘磁头的频繁移动,降低IO性能。
avgqu-sz: 平均I/O队列长度。 avgqu-sz 平均请求队列长度,这个值在正常的系统中不应超过113太多,如果在200左右,甚至上千那说明发生了IO拥塞,而系统还在向IO请求队列中放请求(有一个例外是在执行sync,fsync操作时,该值到达最大值8192是正常的)
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
r_await: 每个读操作平均所需的时间不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await: 每个写操作平均所需的时间不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O
队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。
小技巧
1.只查看sda磁盘统计信息
[root@shell ~]# iostat -d sdc
Linux 3.10.0-1160.el7.x86_64 (shell) 09/25/2021 _x86_64_ (1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdc 1.68 1.74 833.48 15102 7247483
2.每3秒输出一次
[root@shell ~]# iostat -d 3
Linux 3.10.0-1160.el7.x86_64 (shell) 09/25/2021 _x86_64_ (1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.28 32.31 148.77 284291 1308860
sdc 1.66 1.72 823.79 15102 7247483
sdb 0.02 0.88 0.00 7748 0
dm-0 2.09 30.95 148.54 272314 1306792
dm-1 0.01 0.25 0.00 2204 0
3.每3秒输出一次 共输出5次
[root@shell ~]# iostat -d 3 5
Linux 3.10.0-1160.el7.x86_64 (shell) 09/25/2021 _x86_64_ (1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.27 32.11 147.85 284291 1308862
sdc 1.65 1.71 818.66 15102 7247483
sdb 0.02 0.88 0.00 7748 0
dm-0 2.07 30.76 147.61 272314 1306794
dm-1 0.01 0.25 0.00 2204 0