1. 概述
iostat主要用于输出磁盘IO和CPU的统计信息,是一个实时监控的命令。
2. 用法
-
命令格式:
iostat [选项] [时间间隔] [次数] -
比如:
iostat [选项] 1 5
,意思是每秒输出5次执行选项的结果。 -
选项参数:
- -c: 显示CPU使用情况
- -d: 显示磁盘使用情况
- -N: 显示磁盘阵列(LVM) 信息
- -n: 显示NFS 使用情况
- -k: 以 KB 为单位显示
- -m: 以 M 为单位显示
- -t: 报告每秒向终端读取和写入的字符数和CPU的信息
- -V: 显示版本信息
- -x: 显示详细信息
- -p:显示磁盘和分区的情况
3. 示例
3.1 不加选项
不加任何选项和时间,执行iostat
命令,执行结果如下所示,命令执行结果是系统开机到现在各项性能指标的平均值。
[root@localhost01 ~]# iostat
Linux 3.10.0-957.el7.x86_64 (localhost01) 2021年07月10日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.21 0.00 0.72 0.13 0.00 98.94
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
scd0 0.00 0.05 0.00 1050 0
sda 1.64 34.05 2.98 722346 63264
介绍一下每一部分的意义:
- 第一部分:系统版本、主机名、当前日期、CPU数;
- 第二部分
avg-cpu
:表示总体CPU使用情况统计信息,对于多核CPU,这里为所有CPU的平均值,时间范围为从开机到当前时刻的系统CPU信息,具体每列意义如下:-
%user
CPU在用户态执行进程的时间百分比 -
%nice
CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比 -
%system
CPU处在内核态执行进程的时间百分比 -
%iowait
CPU用于等待I/O操作占用CPU总时间的百分比 -
%steal
管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比 -
%idle
CPU空闲时间百分比
-
- 第三部分:
-
device
磁盘名称 -
tps
每秒钟发送到的I/O请求数 -
kB_read/s
每秒读的数量,以KB为单位 -
kB_wrtn/s
每秒写的数量,以KB为单位 -
kB_wrtn/s
取样时间间隔内读的总数量,以KB为单位 -
kB_read
取样时间间隔内写的总数量,以KB为单位
-
注意:
- (kb_writn+kb_read)/tps=每个IO大小,如果计算值大于60K,一般认为属于大IO;
- 小IO用IOPS(每秒处理IO数目)衡量,大IO用带宽衡量;
- 一般情况下,若user%+sys%<70%,认为系统性能较好,若>=90%则认为性能非常不好,若处于中间范围,认为系统性能不好。
3.2 指定采样信息、采样时间间隔与次数
-
iostat 1 5
间隔1秒,总共显示5次 -
iostat -d 2
每隔2秒,显示一次磁盘使用情况统计信息 -
iostat -x sda 2 3
每隔2秒显示一次sda设备的扩展统计信息,共输出3次 -
iostat -m
以M为单位显示所有信息 -
iostat -d -x -k 1 1
每隔1秒采样,共采样1次,输出磁盘的详细信息,以KB为单位,查询信息如下:
上图的每列属性如下; - 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操作的数据大小 (扇区);
- avgqu-sz: 平均I/O队列长度;
- 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百分比。