iostat 命令

是I/O statistics(输入/输出统计) 的缩写,该命令需要安装 sysstat 工具集:
yum install sysstat -y

输出解析

命令不接参数可以直接执行:

  1. [root@test1 ~]# iostat
  2. Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 6.18 0.00 4.76 0.03 0.00 89.03
  5. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  6. 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次,后面一次将显示前面一次的增量,如果增量比较大,意味着可能有高负载或性能瓶颈。

  1. [root@test1 ~]# iostat 1 2
  2. Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 6.18 0.00 4.76 0.03 0.00 89.04
  5. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  6. vda 1.32 3.11 11.72 11780969 44433048
  7. ----------------------------------------------------------------------------------------
  8. avg-cpu: %user %nice %system %iowait %steal %idle
  9. 2.04 0.00 1.02 0.00 0.00 96.94
  10. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  11. vda 0.00 0.00 0.00 0 0


-x 选项,**表示extended info,输出扩展信息

  1. [root@test1 ~]# iostat -x
  2. Linux 3.10.0-1160.45.1.el7.x86_64 (test1) 03/03/2022 _x86_64_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 6.18 0.00 4.76 0.03 0.00 89.04
  5. Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
  6. 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,指定设备名(可以是分区),示例:

  1. [root@localhost ~]# iostat -d sdb
  2. Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)
  3. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  4. sdb 0.02 0.14 0.02 3377 580
  5. [root@localhost ~]# iostat -d sdb2
  6. Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)
  7. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  8. sdb2 0.01 0.04 0.00 1024 0

-p 选项,直接列出所有分区,示例:

  1. [root@localhost ~]# iostat -p
  2. Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 03/02/2022 _x86_64_ (1 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 0.29 0.01 0.16 0.01 0.00 99.52
  5. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  6. sda 0.68 13.16 8.33 328013 207660
  7. sda1 0.01 0.23 0.81 5628 20116
  8. sda2 0.62 12.90 7.52 321585 187544
  9. sdb 0.02 0.14 0.02 3377 580
  10. sdb1 0.01 0.06 0.02 1545 580
  11. sdb2 0.01 0.04 0.00 1024 0