iostat
- 报告 I/O 统计信息
用法概要
描述
iostat 实用程序重复报告终端、磁盘和磁带 I/O 活动,以及 CPU 使用情况。输出的第一行针对自引导后的所有时间;随后每一行仅针对前一个时间间隔。
为计算此信息,内核要维护大量计数器。对于每个磁盘,内核都会对读取、写入、位读取和位写入情况进行计数。内核还会取得队列入口点和退出点处的 hi-res 时间戳,使它可以为每个队列跟踪驻留时间以及累积驻留长度。使用这些值,iostat 会得出关于总处理能力、使用情况、队列长度、事务处理速度和服务时间的非常准确的测量值。对于全体终端,内核只对输入和输出字符数进行计数。
内核状态命令执行期间,系统的 state 可以更改。如果相关,状态更改消息会包括在 iostat 输出中,格式为下列之一:
请注意,根据情况,这些状态更改消息中打印的 names 受 -n 和 -m 选项影响。
有关更多常规系统统计信息,请使用 sar(1)、sar(1M) 或 vmstat(1M)。
输出
iostat 实用程序的输出包括以下信息。
-
device
-
磁盘名称
r/s
-
每秒读取次数
w/s
-
每秒写入次数
kr/s
-
每秒读取的千字节数
间隔期间的平均 I/O 大小可以由 kr/s 除以 r/s 计算得出。
kw/s
-
每秒写入的千字节数
间隔期间的平均 I/O 大小可以由 kw/s 除以 w/s 计算得出。
wait
-
等待服务的平均事务数(队列长度)
这是保留在设备驱动器队列中等待设备接受的 I/O 操作的数量。
actv
-
正在处理的平均事务数(已从队列删除但尚未完成)
这是被设备接受但仍未处理的 I/O 操作的数量。
svc_t
-
事务的平均响应时间(以毫秒为单位)
svc_t 输出报告设备的整体响应时间,而不是服务时间。整体时间包括事务在队列中的时间和事务被处理的时间。在队列中花费的时间以 wsvc_t 输出列中的 -x 选项显示。处理事务所花费的时间是真正的服务时间。服务时间也以 -x 选项显示,出现在同一报告的 asvc_t 输出列中。
%w
-
存在等待服务的事务的时间百分比(队列非空)
%b
-
磁盘忙碌的时间百分比(事务在进行中)
wsvc_t
-
等待队列中的平均服务时间(以毫秒为单位)
asvc_t
-
活动事务的平均服务时间(以毫秒为单位)
wt
-
I/O 等待时间不再以 CPU 时间的百分比来计算,该统计将始终返回零。
选项
所支持的选项如下:
-
-c
-
报告系统在用户模式、系统模式下、等待 I/O 和空闲的时间百分比。有关更多信息,请参见“说明”一节。
-C
-
同时也选择了 -x 选项时,报告通过 controller id 聚合的扩展磁盘统计信息。
-d
-
对于每个磁盘,报告每秒传输的千字节数、每秒的传输数量以及平均服务时间(以毫秒为单位)。
-D
-
对于每个磁盘,报告每秒读取次数、每秒写入次数以及磁盘使用百分比。
-e
-
显示设备错误汇总统计信息。显示全部错误、硬错误、软错误以及传输错误。
-M
-
显示全部设备错误统计信息。
-i
-
在 -E 输出中,显示设备 ID,而非序列号。Device Id 是驱动器通过 ddi_devid_register(9F) 注册的唯一标识符。
-I
-
报告每个时间间隔内的计数,而非速度(如适用)。
-l
n
-
将报告中包括的磁盘数量限制为 n;-d 和 -D 的磁盘限制缺省为 4,对 -x 无限制。注意:明确请求的磁盘(请参见下面的 disk)不受此磁盘限制的约束。
-m
-
报告文件系统挂载点。如果还指定了 -P 或 -p 选项或者其与 -Xn 或 -en 一起使用时,该选项最有用。仅当输出中实际列出挂载点时,-m 选项才有用。该选项仅可与 -n 选项共同使用。
-M
-
以 MB/秒(而非 KB/秒)显示数据吞吐量。
-n
-
以描述性格式显示名称。例如,cXtYdZ、rmt/N、server:/export/path。
缺省情况下,通过诸如 ssd23 或 md301 等的实例名来标识磁盘。结合 -n 选项和 -x 选项,会以 cXtYdZsN 格式显示磁盘名称,从而更容易与其物理硬件特性关联。cXtYdZsN 格式在 FibreChannel (FC) 环境中特别有用,其中 FC 全局名称显示在 t 字段中。
-p
-
对于每个磁盘,既按设备也按分区报告统计信息。
-P
-
对每个磁盘,仅按分区报告统计信息,没有按磁盘统计信息。
-r
-
以逗号分隔格式显示数据。
-s
-
取消与 state changes 有关的消息。
-t
-
报告每秒向终端读取和写入的字符数。
-T u | d
-
显示时间戳。
指定 u 表示时间的内部表示形式的印刷表示形式。请参见 time(2)。指定 d 表示标准日期格式。请参见 date(1)。
-X
-
对于 scsi_vhci(7D) 控制下的磁盘,除磁盘 lun 统计信息外,还会报告 lun .controller 的统计信息。
-x
-
报告扩展磁盘统计信息。缺省情况下,通过诸如 ssd23 或 md301 等的实例名来标识磁盘。结合 x 选项和 -n 选项,会以 cXtYdZsN 格式显示磁盘名称,从而更容易与其物理硬件特性关联。使用 cXtYdZsN 格式在 FibreChannel 环境中特别有帮助,其中 FC 全局名称显示在 t 字段中。
如果不请求输出显示(无 -x、-e 或 -E),则暗含 -x。
-Y
-
对于 scsi_vhci(7D) 控制下的磁盘,除磁盘 lun 统计信息外,还会报告 lun .targetport 和 lun.targetport.controller 的统计信息。
在 -n(描述性)模式下,使用路径的 target-port 属性显示 targetport。没有 -n,会使用较短 port-id 显示 targetport。所有具有相同 target-port 属性值的目标端口共享相同 port-id。target-port 到 port-id 关联在重新引导后不会保留。
如果不请求输出显示(无 -x、-e 或 -E),则暗含 -x。
-z
-
不会打印底层数据值都是零的行。
选项设置 -xcnCXTdz interval 对于确定是否存在磁盘 I/O 问题以及识别问题特别有用。
操作数
支持下列操作数:
-
count
-
仅显示 count 报告。
disk
-
明确指定要报告的磁盘;除了任何明确磁盘外,还将报告达到磁盘限制(请见上面的 -l 选项)的任何活动磁盘。
interval
-
每 interval 秒报告一次。
示例
示例 1 使用 iostat 生成用户和系统操作统计信息
以下命令显示通过 controller id 为用户 (us) 和系统 (sy) 操作聚合的扩展设备统计信息的两个报告。因为 -n 选项与 -x 选项一起使用,以控制器名称标识设备。
示例 2 使用 iostat 生成 TTY 统计信息
以下命令显示关于不同操作模式下五个磁盘的活动的两个报告。因为使用了 -x 选项,以实例名称标识磁盘。
示例 3 使用 iostat 生成分区和设备统计信息
以下命令生成每个磁盘的分区和设备统计信息。因为 -n 选项与 -x 选项一起使用,以控制器名称标识磁盘。
示例 4 显示从实例名称向描述性名称的转换
以下示例说明了使用 iostat 将特定实例名称转换成描述性名称。
示例 5 显示特定磁盘的目标端口和控制器活动
以下示例中共有四个控制器,全都连接到同一个目标端口。
附注
因为生成百分比数字中的舍入误差,CPU 使用总量可能与 100 略有差别。
I/0 (r/s+w/s) 速度低于 0.5/秒时,svc_t 响应时间不是非常显著。此类情况下,无害峰值相当正常。
mpstat 实用程序报告相同的 wt、usr 和 sys 统计信息。有关更多信息,请参见 mpstat(1M)。
在 zone 中执行时,并且如果池工具处于活动状态,iostat(1M) 仅提供该 zone 绑定到的池的处理器集合中那些处理器的信息。