报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息。
iostat [ -s ] [ -a ] [ -d | -t ] [ -T ][ -m ][ PhysicalVolume ... ] [ Interval [ Count ] ]
iostat 命令用来监视系统输入/输出设备负载,这通过观察与它们的平均传送速率相关的物理磁盘的活动时间来实现。iostat 命令生成的报告可以用来更改系统配置来更好地平衡物理磁盘和适配器之间的输入/输出负载。
由 iostat 命令生成的第一份报告提供了关于自从系统被引导后的时间统计信息。后继的每一份报告都包含自上一次报告以来的时间。每次运行 iostat 命令时,就报告所有的统计信息。报告由紧接着一行 tty 和 CPU 统计信息的 tty 和 CPU 头行组成。在多处理器系统上,CPU 统计信息是系统范围计算的,是所有处理器的平均值。
如果指定 -s 标志,则显示系统头行,随后是一行整个系统的统计信息。系统的主机名被打印在系统头上。
如果指定 -a 标志,就会显示一个适配器头行,随后是一行适配器的统计信息。这后面将回有一个磁盘头行和连接到适配器的所有磁盘/CD-ROM 的统计信息。为所有与系统连接的磁盘适配器生成这种报告。
显示一个磁盘头行,随后是一行配置的磁盘的统计信息。如果指定 PhysicalVolume 参数,则只显示那些指定的名称。
如果指定 PhysicalVolume 参数,那么可以指定一个或者更多的字母或者字母数字的物理卷。如果指定 PhysicalVolume 参数,就会显示 tty 和 CPU 报告并且磁盘报告包含指定驱动器的统计信息。如果没有发现指定逻辑驱动器名,那么报告将列出指定的名称并且显示没有找到驱动器的消息。如果没有指定逻辑驱动器名,报告则包含所有已配置的磁盘和 CD-ROM 的统计信息。如果系统上没有配置驱动器,则不生成磁盘报告。PhysicalVolume 参数中的第一个字符不能为数字型。
Interval 参数指定了在每个报告之间的以秒计算的时间量。第一份报告包含了自系统启动(引导)以来的时间统计信息。每一份后继报告都包含在和前一份报告的时间间隔之间收集的统计信息。Count 参数可被指定来连接 Interval 参数。如果指定了 Count 参数,它的记数值就确定在 Interval 秒间生成的报告数。如果指定了 Interval 参数但没有 Count 参数,iostat 命令就会不断生成报告。
iostat 命令用来确定一个物理卷是否正在形成一个性能瓶颈,以及是否有可能改善这种情况。物理卷的 % 使用率字段表明了文件活动在驱动器中分布多均匀。物理卷的高 % 使用率是表明也许存在这个资源的争用很好的征兆。由于 CPU 使用率的统计信息同样适用于 iostat 报告,CPU 在 I/O 等待队列中的时间的百分比可以在同一时间确定。如果 I/O 等待时间是有效数字并且磁盘使用率不是在卷上均匀分布,那么就要考虑在驱动器上分布数据。
注: 一些系统资源被消耗是为了为 iostat 命令维护磁盘 I/O 的历史记录。使用 sysconfig 子例程,或者系统管理接口工具(SMIT)来停止历史记录账户。
iostat 命令生成四种类型的报告,tty 和 CPU 使用率报告、磁盘使用率报告、系统吞吐量报告和适配器吞吐量报告。
由 iostat 命令生成的第一份报告是 tty 和 CPU 使用率报告。对于多处理器系统,CPU 值是所有处理器的总平均。同时,I/O 等待状态是系统级定义的,而不是每个处理器。报告有以下格式:
每过一定时间间隔,内核就更新这条信息(一般每秒六十次)。tty 报告提供了从系统中所有终端的收到的每秒字符总数,以及和每秒输出到系统所有终端的字符的总数。
操作系统 V4.3.3 和后来的版本包含用来估算 CPU 在磁盘 I/O(wio 时间)等待上的所花时间的百分比的增强方法。用在 AIX 4.3.2 和操作系统的早期版本上的方法在一定条件下,能够给出 SMP 上的 wio 时间的一个放大的视图。wio 时间是根据命令 sar(%wio)、 vmstat(wa)和 iostat(% iowait)报告出来的。
在 AIX 4.3.2 中和早期版本中使用的方法如下:在每个处理器(每处理器一秒一百次)的每个时钟中断上,将确定四个类别(usr/sys/wio/idle)中的哪一个放置在最后的 10ms 内。如果在时钟中断的时刻 CPU 以 usr 模式中处于忙状态,那么 usr 获得这个时间计点并归于此类。如果在时钟中断时刻 CPU 以内核模式中处于忙状态,那么 sys 类别将获得该计时点。如果 CPU 不处于忙状态,将检查是否在进行任何磁盘 I/O。如果在进行任何磁盘 I/O,则 wio 类别将增加。如果磁盘在进行 I/O 操作并且 CPU 不忙,那么 idle 类别将获取计时点。wio 时间的放大视图是由于所有空闲 CPU 被归为 wio 而不管在 I/O 上等待的线程数所导致。例如,仅有一个线程执行 I/O 的系统可以报告超过 90% 的 wio 时间而不管其 CPU 数。
在 AIX 4.3.3 中和后继版本中使用的方法如下:如果在那个 CPU 上启动一个未完成的的 I/O,那么操作系统 V4.3.3 中的更改仅把一个空闲 CPU 标为 wio。当只有少数线程正在执行 I/O 否则系统就空闲的情况下,这种方法可以报告更少的 wio 时间。例如,一个有四个 CPU 且只有一个线程执行 I/O 的系统将报告一个最大值是 25% 的 wio 时间。一个有 12 个 CPU 且仅有一个线程执行 I/O 的系统将报告一个最大值为 8% 的 wio 时间。 NFS 客户机通过 VMM 读/写,并且为了完成一个 I/O 而在 vmm 等待中用的时间现在将被报告为 I/O 等待时间。
由 iostat 命令生成的第二个报告是磁盘使用率报告。磁盘报告提供了在每个物理磁盘基础上的统计信息。这个报告有以下类似的格式:
% tm_act | 表示物理磁盘处于活动状态的时间百分比(驱动器的带宽使用率)。 |
Kbps | 表示以 KB 每秒为单位的传输(读或写)到驱动器的数据量。 |
tps | 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I/O 请求。传输具有中等的大小。 |
Kb_read | 读取的 KB 总数。 |
Kb_wrtn | 写入的 KB 总数。 |
CD-ROM 设备的统计信息也要报告。
对于配置有大量磁盘的大型系统配置,当 iostat 没有执行时,系统可以设置为避免收集物理硬盘的输入/输出数据。如果系统用上述的方式配置,那么第一个磁盘报告将显示消息引导不可用后 的磁盘历史记录而不是磁盘统计信息。由 iostat 命令生成的后继时间间隔报告包含在报告时间间隔期间收集的磁盘统计信息。引导后的任何 tty 和 CPU 都不会影响。如果一个系统管理命令用来重新保留磁盘统计信息,那么第一个 iostat 命令报告会显示从启用磁盘输入/输出统计信息那一刻时间间隔起点起的行为。
如果指定 -s 标志将生成这个报告。这份报告提供了整个系统的统计信息。这份报告有以下格式:
Kbps | 表示了每秒以 KB 为单位的传输(读或写)到整个系统的数据量。 |
tps | 表示每秒传输到整个系统的传输次数。 |
Kb_read | 从整个系统中读取的 KB 总数。 |
Kb_wrtn | 写到整个系统的 KB 总数。 |
如果指定 -a 标志将产生该报告。这份报告提供了适配器上的统计信息。
Kbps | 表示每秒钟以 KB 为单位的传输到(读或写)到适配器的数据量。 |
tps | 表示每秒钟输出到适配器的传输次数。 |
Kb_read | 从适配器读取的 KB 总数。 |
Kb_wrtn | 写到适配器的 KB 总数。 |
要提高性能,已经禁用了磁盘输入/输出统计信息集合。要启用该数据的集合,请输入:
chdev -l sys0 -a iostat=true
要显示当前设置,请输入:
lsattr -E -l sys0 -a iostat
如果禁用了磁盘输入/输出历史记录的集合,那么 iostat 输出的第一个磁盘报告将显示消息引导不可用后 的磁盘历史记录而不是磁盘统计信息。如前,由 iostat 命令生成后继时间间隔报告包含了在报告时间间隔期间收集的磁盘统计信息。
注:
iostat
iostat -d disk1 2
iostat disk1 2 6
iostat -d 2 6
iostat disk1 disk2 disk3 2 6
iostat -s
iostat -a
iostat -sat
iostat -sad hdisk0 hdisk7
iostat -T
/usr/bin/iostat | 包含 iostat 命令。 |
vmstat 命令。
/dev/kmem 特殊文件。
在《AIX 5L V5.2 性能管理指南》中的『监视和调节磁盘 I/O』
Input and Output Handling Programmer's OverviewAIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的输入和输出句柄处理程序员概述描绘了 文件、命令和用于低级别、流、终端和异步 I/O 接口的子例程。