iostat 命令
是I/O statistics(输入/输出统计) 的缩写,该命令需要安装 sysstat 工具集:
yum install sysstat -y
输出解析
命令不接参数可以直接执行:
[root@test1 ~]# iostat
Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6.18 0.00 4.76 0.03 0.00 89.03
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.32 3.11 11.72 11780633 44424356
其中4-5行是CPU版块
avg-cpu: CPU平均负载
- %user:用户模式下的进程,占用的CPU时间百分比,一般来说,正常的 <60%
- %system:系统内核进程所花费的CPU时间,如系统进程+用户进程 > 80% 则认为可能有异常
- %iowait:IO等待所占用的CPU时间,一般不会超过30%,否则可能异常
- %idle:CPU空闲时间 = 100 - %system - %user >20 一般认为正常
7-8行是磁盘IO版块
Device:设备名
- tps:transfers per second,每秒接受的IO传输请求(不管传输大小还是读写都统计)
- kB_read/s:每秒读速率
- kB_wrtn/s:每秒写速率
- kB_read:总读取量
- kB_wrtn:总写入量
注意:是系统自上次启动以来的一个统计量,并不是当前的实时状态。
选项参数
iostat 提供如下选项帮助查看当前IO实时状态统计:
iostat 1 2
1,是指我们要求iostat每1秒输出一次记录
2,是让iostat一共输出2次,后面一次将显示前面一次的增量,如果增量比较大,意味着可能有高负载或性能瓶颈。
[root@test1 ~]# iostat 1 2
Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6.18 0.00 4.76 0.03 0.00 89.04
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.32 3.11 11.72 11780969 44433048
----------------------------------------------------------------------------------------
avg-cpu: %user %nice %system %iowait %steal %idle
2.04 0.00 1.02 0.00 0.00 96.94
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
-x 选项,**表示extended info,输出扩展信息
[root@test1 ~]# iostat -x
Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6.18 0.00 4.76 0.03 0.00 89.04
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 1.59 0.16 1.16 3.11 11.72 22.43 0.00 0.87 1.12 0.84 0.58 0.08
其中:
rrqm/s wrqm/s r/s w/s 代表每秒读写请求,区别不大
rkB/s wkB/s 代表读写速率
avgrq-sz:(average request size)平均IO数据大小, 平均每个请求的数据量大小
avgqu-sz:(average queue size)平均队列长度,就是这么多请求在排队,等待IO设备处理
await:平均等待时间,单位是毫秒,对固态硬盘应该在2ms内,机械硬盘也不应超过10ms,否则会认为高负载、性能瓶颈或故障。
svctm:(service time)IO平均服务时间
%util:磁盘利用率
注:svctm,%util 因为使用串行计算方式,没有考虑新式硬盘的并行处理能力,可能不准确。
-d 选项,表示device,指定设备名(可以是分区),示例:
[root@localhost ~]# iostat -d sdb
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.02 0.14 0.02 3377 580
[root@localhost ~]# iostat -d sdb2
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb2 0.01 0.04 0.00 1024 0
-p 选项,直接列出所有分区,示例:
[root@localhost ~]# iostat -p
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.29 0.01 0.16 0.01 0.00 99.52
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.68 13.16 8.33 328013 207660
sda1 0.01 0.23 0.81 5628 20116
sda2 0.62 12.90 7.52 321585 187544
sdb 0.02 0.14 0.02 3377 580
sdb1 0.01 0.06 0.02 1545 580
sdb2 0.01 0.04 0.00 1024 0