iostat命令介绍

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为单位,查询信息如下:
    iostat命令介绍
    上图的每列属性如下;
  • 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百分比。
上一篇:阳哥讲面试题(四)生产调优


下一篇:150个常用的Linux命令汇总