使用 iostat 命令评估磁盘性能

在您的系统处于工作负载高峰时期或者运行一个关键应用程序用来最小化 I/O 延迟时,运行带一个时间间隔参数的 iostat 命令来开始评估。

以下 shell 脚本在后台运行 iostat 命令时,前台有一个大文件的副本在运行以便可以测量一些 I/O:
# iostat 5 3 >io.out &
# cp big1 /dev/null
AIX® 操作系统维护磁盘活动历史记录。 如果禁用了磁盘 I/O 历史记录,那么当您运行 iostat 命令时会显示以下消息:
Disk history since boot not available.

The interval disk I/O statistics are unaffected by this.
要启用磁盘 I/O 历史记录,请从命令行输入 smit chgsys ,然后从 持续维护 DISK I/O 历史记录 字段中选择 true
以下示例显示必须考虑系统上的所有可用数据才能对问题进行故障诊断。
  1. 以下命令将三个数据样本存储在一个系统上,该系统在 io.out 文件中有三个磁盘。 在两次采样之间的时间间隔为 5 秒收集这些样本。
    # iostat -T 5 3 > /tmp/io.out &
    
    # cp bigfile /dev/null
    
    System configuration: lcpu=4 drives=4 ent=1.00 paths=3 vdisks=2
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              1.2          9.6                0.6   1.4   98.0      0.0   0.0    2.7  13:26:46
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:26:46
    hdisk1            0.0       0.0       0.0          0         0  13:26:46
    hdisk0            0.0       0.0       0.0          0         0  13:26:46
    hdisk2            0.0       0.0       0.0          0         0  13:26:46
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              0.2          3.6                0.3  13.8   75.1     10.8   0.2   16.8  13:26:51
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:26:51
    hdisk1            0.0       0.0       0.0          0         0  13:26:51
    hdisk0           62.8   52428.8     205.4     262144         0  13:26:51
    hdisk2            0.0       0.0       0.0          0         0  13:26:51
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              0.0          0.0                0.5   1.5   97.9      0.1   0.0    2.8  13:26:56
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:26:56
    hdisk1            0.0       0.0       0.0          0         0  13:26:56
    hdisk0            0.4       0.8       0.2          0         4  13:26:56
    hdisk2            2.6      33.6       7.8          0       168  13:26:56
    注: 如果在未指定时间间隔的情况下运行 iostat 命令,那么输出将指示自上次系统重新引导以来的系统数据摘要,而不是当前值。
    • 第一次和第三次间隔显示,这三个磁盘大多是空闲的,还有 CPU 利用率,这也表现为空闲在tty报告。
    • 第二个时间间隔显示使用针对此测试启动的 cp 命令生成的活动。 可以在两个 CPU 活动上查看此活动 (tty报告) 显示13.9% sysCPU 以及磁盘报告上的 CPU。 在此时间间隔内, cp 命令需要 3.14 秒才能运行。 在报告中,第二个时间间隔显示 62.8 %hdisk0磁盘 (在 tm_act 度量下)。 此示例表示hdisk0磁盘忙碌了 62.8 % 的时间间隔 (5 秒)。 如果 cp 命令是生成对 hdisk0的磁盘 I/O 的唯一进程,那么 cp 命令花费了 5 秒时间间隔的 62.8% ,即 3.14 秒,这是 cp 命令运行所花费的总时间。
  2. 以下命令以 2 秒时间间隔存储系统上的五个数据样本,该系统在 io.out2 文件中有三个磁盘:
    # iostat -T 2 5 > /tmp/io2.out &
    
    # cp bigfile /dev/null
    System configuration: lcpu=4 drives=4 ent=1.00 paths=3 vdisks=2
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              3.0         24.0                0.4   0.8   98.8      0.0   0.0    1.8  13:29:51
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:29:51
    hdisk1            0.0       0.0       0.0          0         0  13:29:51
    hdisk0            0.0       0.0       0.0          0         0  13:29:51
    hdisk2            0.0       0.0       0.0          0         0  13:29:51
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              0.5          1.0                0.2   8.2   85.5      6.1   0.1   10.1  13:29:53
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:29:53
    hdisk1            0.0       0.0       0.0          0         0  13:29:53
    hdisk0           39.5   30464.0     120.5      60928         0  13:29:53
    hdisk2            0.0       0.0       0.0          0         0  13:29:53
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              0.0          0.0                0.2  21.5   62.9     15.4   0.3   25.7  13:29:55
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:29:55
    hdisk1            0.0       0.0       0.0          0         0  13:29:55
    hdisk0          100.0   83712.0     327.0     167424         0  13:29:55
    hdisk2            0.0       0.0       0.0          0         0  13:29:55
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              0.0          8.0                1.3   7.2   87.5      4.0   0.1   10.4  13:29:57
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:29:57
    hdisk1            0.0       0.0       0.0          0         0  13:29:57
    hdisk0           20.9   16898.0      66.5      33792         4  13:29:57
    hdisk2           10.4      82.0      19.0          0       164  13:29:57
    
    tty:      tin         tout    avg-cpu: % user % sys % idle % iowait physc % entc  time
              0.0          0.0                0.2   0.6   99.2      0.0   0.0    1.3  13:29:59
    
    Disks:         % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time
    cd0               0.0       0.0       0.0          0         0  13:29:59
    hdisk1            0.0       0.0       0.0          0         0  13:29:59
    hdisk0            0.0       0.0       0.0          0         0  13:29:59
    hdisk2            0.0       0.0       0.0          0         0  13:29:59
  • 第一次和第五次间隔显示,这三个磁盘大多处于空闲状态,还有 CPU 利用率,这也表现为空闲在tty报告。
  • 第二个时间间隔显示使用针对此测试启动的 cp 命令生成的活动。 在此时间间隔内, cp 命令需要 3.14 秒才能运行。 在报告中,第二个时间间隔显示 39.5 %hdisk0磁盘 (在 tm_act 度量下)。 在第三个和第四个区间中,分别显示 100% 和 20.9 %hdisk0磁盘 (在 tm_act 度量下)。 这意味着hdisk0在第三个时间间隔 (2 秒) 内的 100% 时间间隔内,磁盘处于忙碌状态。hdisk0在第四个时间间隔 (2 秒) 内,磁盘忙碌了 20.9 % 的时间间隔。
这两个示例都显示 %tm_act 变量仅指示磁盘处于繁忙状态。 不能使用 %tm_act 变量来评估性能问题。 要排除故障,您可能需要考虑其他选项,如运行 iostat -D 标志,它可提供系统上磁盘的真实服务时间(读写)和队列信息。