iOSTAT 命令的详解 (可以用作Solaris 查看内存、CPU和磁盘读写速度)

iostat

- 报告 I/O 统计信息

用法概要

/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 实用程序的输出包括以下信息。

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

以描述性格式显示名称。例如,cXtYdZrmt/Nserver:/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-idtarget-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 选项一起使用,以控制器名称标识设备。

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

附注

因为生成百分比数字中的舍入误差,CPU 使用总量可能与 100 略有差别。

I/0 (r/s+w/s) 速度低于 0.5/秒时,svc_t 响应时间不是非常显著。此类情况下,无害峰值相当正常。

mpstat 实用程序报告相同的 wtusr 和 sys 统计信息。有关更多信息,请参见 mpstat(1M)

在 zone 中执行时,并且如果池工具处于活动状态,iostat(1M) 仅提供该 zone 绑定到的池的处理器集合中那些处理器的信息。


展开阅读全文

没有更多推荐了,返回首页