iostat 命令
是I/O statistics(输入/输出统计) 的缩写,该命令需要安装 sysstat 工具集:
yum install sysstat -y
输出解析
命令不接参数可以直接执行:
[root@test1 ~]# iostatLinux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle6.18 0.00 4.76 0.03 0.00 89.03Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnvda 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 2Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle6.18 0.00 4.76 0.03 0.00 89.04Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnvda 1.32 3.11 11.72 11780969 44433048----------------------------------------------------------------------------------------avg-cpu: %user %nice %system %iowait %steal %idle2.04 0.00 1.02 0.00 0.00 96.94Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnvda 0.00 0.00 0.00 0 0
-x 选项,**表示extended info,输出扩展信息
[root@test1 ~]# iostat -xLinux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle6.18 0.00 4.76 0.03 0.00 89.04Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilvda 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 sdbLinux 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_wrtnsdb 0.02 0.14 0.02 3377 580[root@localhost ~]# iostat -d sdb2Linux 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_wrtnsdb2 0.01 0.04 0.00 1024 0
-p 选项,直接列出所有分区,示例:
[root@localhost ~]# iostat -pLinux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.29 0.01 0.16 0.01 0.00 99.52Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 0.68 13.16 8.33 328013 207660sda1 0.01 0.23 0.81 5628 20116sda2 0.62 12.90 7.52 321585 187544sdb 0.02 0.14 0.02 3377 580sdb1 0.01 0.06 0.02 1545 580sdb2 0.01 0.04 0.00 1024 0
