/usr/bin/iostat [-cCdDeEiImMnpPrstxXYz] [-l n] [-T u | d] [disk]... [interval [count]]
iostat 实用程序重复报告终端、磁盘和磁带 I/O 活动,以及 CPU 使用情况。输出的第一行针对自引导后的所有时间;随后每一行仅针对前一个时间间隔。
为计算此信息,内核要维护大量计数器。对于每个磁盘,内核都会对读取、写入、位读取和位写入情况进行计数。内核还会取得队列入口点和退出点处的 hi-res 时间戳,使它可以为每个队列跟踪驻留时间以及累积驻留长度。使用这些值,iostat 会得出关于总处理能力、使用情况、队列长度、事务处理速度和服务时间的非常准确的测量值。对于全体终端,内核只对输入和输出字符数进行计数。
内核状态命令执行期间,系统的 state 可以更改。如果相关,状态更改消息会包括在 iostat 输出中,格式为下列之一:
<<device added: sd0>> <<device removed: sd0>> <<partition added: sd0,a>> <<partition removed: sd0,a>> <<NFS mounted: nfs1>> <<NFS unmounted: nfs1>> <<multi-path added: ssd4>> <<multi-path removed: ssd4>> <<controller added: c1>> <<controller removed: c1>> <<processors added: 1, 3>> <<processors removed: 1, 3>>
请注意,根据情况,这些状态更改消息中打印的 names 受 –n 和 –m 选项影响。
有关更多常规系统统计信息,请使用 sar(1)、sar(1M) 或 vmstat(1M)。
iostat 实用程序的输出包括以下信息。
磁盘名称
每秒读取次数
每秒写入次数
每秒读取的千字节数
间隔期间的平均 I/O 大小可以由 kr/s 除以 r/s 计算得出。
每秒写入的千字节数
间隔期间的平均 I/O 大小可以由 kw/s 除以 w/s 计算得出。
等待服务的平均事务数(队列长度)
这是保留在设备驱动器队列中等待设备接受的 I/O 操作的数量。
正在处理的平均事务数(已从队列删除但尚未完成)
这是被设备接受但仍未处理的 I/O 操作的数量。
事务的平均响应时间(以毫秒为单位)
svc_t 输出报告设备的整体响应时间,而不是服务时间。整体时间包括事务在队列中的时间和事务被处理的时间。在队列中花费的时间以 wsvc_t 输出列中的 –x 选项显示。处理事务所花费的时间是真正的服务时间。服务时间也以 –x 选项显示,出现在同一报告的 asvc_t 输出列中。
存在等待服务的事务的时间百分比(队列非空)
磁盘忙碌的时间百分比(事务在进行中)
等待队列中的平均服务时间(以毫秒为单位)
活动事务的平均服务时间(以毫秒为单位)
I/O 等待时间不再以 CPU 时间的百分比来计算,该统计将始终返回零。
支持以下选项:
报告系统在用户模式、系统模式下、等待 I/O 和空闲的时间百分比。有关更多信息,请参见“附注”部分。
同时也选择了 –x 选项时,报告通过 controller id 聚合的扩展磁盘统计信息。
对于每个磁盘,报告每秒传输的千字节数、每秒的传输数量以及平均服务时间(以毫秒为单位)。
对于每个磁盘,报告每秒读取次数、每秒写入次数以及磁盘使用百分比。
显示设备错误汇总统计信息。显示全部错误、硬错误、软错误以及传输错误。
显示全部设备错误统计信息。
在 –E 输出中,显示设备 ID,而非序列号。Device Id 是驱动器通过 ddi_devid_register(9F) 注册的唯一标识符。
报告每个时间间隔内的计数,而非速度(如适用)。
将报告中包括的磁盘数量限制为 n;–d 和 –D 的磁盘限制缺省为 4,对 –x 无限制。注意:明确请求的磁盘(请参见下文的 disk)不受此磁盘限制的约束。
报告文件系统挂载点。如果还指定了 –P 或 –p 选项或者其与 –Xn 或 –en 一起使用时,该选项最有用。仅当输出中实际列出挂载点时,–m 选项才有用。该选项仅可与 –n 选项共同使用。
以 MB/秒(而非 KB/秒)显示数据吞吐量。
以描述性格式显示名称。例如,cXtYdZ、rmt/N、server:/export/path。
缺省情况下,通过诸如 ssd23 或 md301 等的实例名来标识磁盘。结合 –n 选项和 –x 选项,会以 cXtYdZsN 格式显示磁盘名称,从而更容易与其物理硬件特性关联。cXtYdZsN 格式在 FibreChannel (FC) 环境中特别有用,其中 FC 全局名称显示在 t 字段中。
对于每个磁盘,既按设备也按分区报告统计信息。
对每个磁盘,仅按分区报告统计信息,没有按磁盘统计信息。
以逗号分隔格式显示数据。
取消与 state changes 有关的消息。
报告每秒向终端读取和写入的字符数。
显示时间戳。
指定 u 表示时间的内部表示形式的印刷表示形式。请参见 time(2)。指定 d 表示标准日期格式。请参见date(1)。
对于 scsi_vhci(7D) 控制下的磁盘,除磁盘 lun 统计信息外,还会报告 lun .controller 的统计信息。
报告扩展磁盘统计信息。缺省情况下,通过诸如 ssd23 或 md301 等的实例名来标识磁盘。结合 x 选项和 –n 选项,会以 cXtYdZsN 格式显示磁盘名称,从而更容易与其物理硬件特性关联。使用 cXtYdZsN 格式在 FibreChannel 环境中特别有帮助,其中 FC 全局名称显示在 t 字段中。
如果不请求输出显示(无 –x、–e 或 –E),则暗含 –x。
对于 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。
不会打印底层数据值都是零的行。
选项设置 –xcnCXTdz interval 对于确定是否存在磁盘 I/O 问题以及识别问题特别有用。
支持下列操作数:
仅显示 count 个报告。
明确指定要报告的磁盘;除了任何明确磁盘外,还将报告达到磁盘限制(请参见上面的 –l 选项)的任何活动磁盘。
每 interval 秒报告一次。
以下命令显示通过 controller id 为用户 (us) 和系统 (sy) 操作聚合的扩展设备统计信息的两个报告。因为 –n 选项与 –x 选项一起使用,以控制器名称标识设备。
example% iostat –xcnCXTdz 5 Mon Nov 24 14:58:36 2003 cpu us sy wt id 14 31 0 20 extended device statistics r/s w/s kr/s kw wait actv wsvc_t asvc_t %w %b device 3.8 29.9 145.8 44.0 0.0 0.2 0.1 6.4 0 5 c0 666.3 814.8 12577.6 17591.1 91.3 82.3 61.6 55.6 0 2 c12 180.0 234.6 4401.1 5712.6 0.0 147.7 0.0 356.3 0 98 d10 Mon Nov 24 14:58:41 2003 cpu us sy wt id 11 31 0 22 extended device statistics r/s w/s kr/s kw wait actv wsvc_t asvc_t %w %b device 0.8 41.0 5.2 20.5 0.0 0.2 0.2 4.4 0 6 c0 565.3 581.7 8573.2 10458.9 0.0 26.6 0.0 23.2 0 3 c12 106.5 81.3 3393.2 1948.6 0.0 5.7 0.0 30.1 0 99 d10示例 2 使用 iostat 生成 TTY 统计信息
以下命令显示关于不同操作模式下五个磁盘的活动的两个报告。因为使用了 –x 选项,以实例名称标识磁盘。
example% iostat –x tc 5 2 extended device statistics tty cpu device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id sd0 0.4 0.3 10.4 8.0 0.0 0.0 36.9 0 1 0 10 0 0 0 99 sd1 0.0 0.0 0.3 0.4 0.0 0.0 35.0 0 0 sd6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs2 0.0 0.0 0.0 0.1 0.0 0.0 35.6 0 0 extended device statistics tty cpu device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 155 0 0 0 100 sd1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0示例 3 使用 iostat 生成分区和设备统计信息
以下命令生成每个磁盘的分区和设备统计信息。因为 –n 选项与 –x 选项一起使用,以控制器名称标识磁盘。
example% iostat -xnp extended device statistics r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 0.4 0.3 10.4 7.9 0.0 0.0 0.0 36.9 0 1 c0t0d0 0.3 0.3 9.0 7.3 0.0 0.0 0.0 37.2 0 1 c0t0d0s0 0.0 0.0 0.1 0.5 0.0 0.0 0.0 34.0 0 0 c0t0d0s1 0.0 0.0 0.0 0.1 0.0 0.0 0.6 35.0 0 0 fuji:/export/home/user3示例 4 显示从实例名称向描述性名称的转换
以下示例说明了使用 iostat 将特定实例名称转换成描述性名称。
example% iostat -xn sd1 extended device statistics r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c8t1d0示例 5 显示特定磁盘的目标端口和控制器活动
以下示例中共有四个控制器,全都连接到同一个目标端口。
# iostat -Y ssd22 extended device statistics device r/s w/s kr/s kw/s wait actv svc_t %w %b ssd22 0.2 0.0 1.5 0.0 0.0 0.0 0.7 0 0 ssd22.t2 0.2 0.0 1.5 0.0 0.0 0.0 0.0 0 0 ssd22.t2.fp0 0.0 0.0 0.4 0.0 0.0 0.0 0.0 0 0 ssd22.t2.fp1 0.0 0.0 0.4 0.0 0.0 0.0 0.0 0 0 ssd22.t2.fp2 0.0 0.0 0.4 0.0 0.0 0.0 0.0 0 0 ssd22.t2.fp3 0.0 0.0 0.4 0.0 0.0 0.0 0.0 0 0
有关下列属性的说明,请参见 attributes(5):
|
调用正在发展中。用户可读的输出不稳定。
date(1)、sar(1)、sar(1M)、mpstat(1M)、vmstat(1M)、time(2)、attributes(5)、scsi_vhci(7D)
因为生成百分比数字中的舍入误差,CPU 使用总量可能与 100 略有差别。
I/0 (r/s+w/s) 速度低于 0.5/秒时,svc_t 响应时间不是非常显著。此类情况下,无害峰值相当正常。
mpstat 实用程序报告相同的 wt、usr 和 sys 统计信息。有关更多信息,请参见 mpstat(1M)。
在 zone 中执行时,并且如果池工具处于活动状态,iostat(1M) 仅提供该 zone 绑定到的池的处理器集合中那些处理器的信息。