> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man8/iostat.8.md).

# iostat.8

`iostat` — 报告 I/O 统计信息

## 名称

`iostat` — I/O 统计信息

## 概要

`iostat [-CdhIKoTxz] [-c count] [-M core] [-n devs] [-N system] [-t type,if,pass] [-w wait] [drives]`

## 描述

`iostat` 工具显示有关终端、设备和 CPU 操作的内核 I/O 统计信息。第一组打印的统计数据是系统正常运行时间内的平均值（除非指定了 `-I`）。本手册中任何对重复次数的提及都隐含包括第一组统计输出。要获取当前活动的信息，应指定合适的等待时间，以便后续打印的统计数据集将按该时间取平均。

可用选项如下：

**`-C`** 显示 CPU 统计信息。默认开启，除非指定了 `-d` 或 `-x`。

**`-c`** 重复显示 `count` 次。如果未指定 `-c` 但指定了等待间隔，默认重复次数为无穷大。如果未指定等待间隔，默认重复次数为 1。

**`-d`** 仅显示设备统计信息。如果开启此标志，则仅显示设备统计信息，除非同时指定了 `-C` 或 `-T` 以启用 CPU 或 TTY 统计信息的显示。

**`-h`** 将 `iostat` 置于 ‘top’ 模式。在此模式下，`iostat` 将按每个测量周期字节数从高到低的顺序显示设备。

**`-I`** 显示给定时间段内的总统计信息，而不是该时间段内每秒的平均统计信息。

**`-K`** 在旧式块传输显示中（`-I` 和 `-o`），以千字节而非设备本机块大小显示块计数。

**`-M`** 从指定的 core 而非默认的 “`/dev/kmem`” 提取与名称列表关联的值。

**`-N`** 从指定的 system 而非默认的 “`/boot/kernel/kernel`” 提取名称列表。

**`-n`** 显示最多 `devs` 个设备。如果存在的设备少于 `devs` 个，`iostat` 工具将显示较少数量的设备。

**`-o`** 显示旧式 `iostat` 设备统计信息。显示每秒扇区数、每秒传输次数和每次寻道毫秒数。如果指定了 `-I`，则显示总块/扇区数、总传输次数和每次寻道毫秒数。

**`-T`** 显示 TTY 统计信息。默认开启，除非指定了 `-d` 或 `-x`。

**`-t`** 指定要显示的设备类型。设备有三种不同的类别：

设备类型（device type）：

**da** 直接访问设备

**sa** 顺序访问设备

**printer** 打印机

**proc** 处理器设备

**worm** 一次写入多次读取设备

**cd** CD 设备

**scanner** 扫描仪设备

**optical** 光存储设备

**changer** 介质更换设备

**comm** 通信设备

**array** 存储阵列设备

**enclosure** 机箱服务设备

**floppy** 软盘设备

接口（interface）：

**IDE** 集成驱动电子设备

**SCSI** 小型计算机系统接口设备

**NVME** NVM Express 接口设备

**other** 任何其他设备接口

直通（passthrough）：

**pass** 直通设备

用户必须指定至少一种设备类型，并且每个类别最多可指定一种设备类型。单个设备类型语句中的多种设备类型必须以逗号分隔，并进行逻辑与（AND）运算。

命令行上可指定任意数量的 `-t` 参数。所有 `-t` 参数进行逻辑或（OR）运算以形成一个匹配表达式，系统中的所有设备都与之比较。任何完全匹配某个 `-t` 参数的设备都将包含在 `iostat` 输出中，最多可达 80 列可显示的设备数量，或用户指定的最大设备数量（`-n`）。

**`-w`** 每次显示之间暂停 `wait` 秒。如果未指定重复次数（`-c`）但指定了等待间隔，默认重复次数为无穷大。如果未指定 `-w` 但指定了重复次数，默认间隔为 1 秒。`iostat` 命令将接受并遵循非整数秒数。注意，间隔仅具有毫秒粒度。更精细的值将被截断。例如，“`-w1.0001`” 与 “`-w1.000`” 相同。该间隔还会受到 `kern.hz` 修改的影响，因此你的实际情况可能有所不同。

**`-x`** 显示扩展磁盘统计信息。每个磁盘单独显示一行，包含所有可用统计信息。如果开启此标志，则仅显示磁盘统计信息，除非同时指定了 `-C` 或 `-T` 以启用 CPU 或 TTY 统计信息的显示。

**`-z`** 如果指定了 `-x`，则省略没有活动的设备行。

`iostat` 工具按以下格式显示信息：

**tty**

**tin** 从终端读取的字符数

**tout** 写入终端的字符数

**devices** 设备操作。该字段的标题是设备名和单元号。`iostat` 工具将显示能放入标准 80 列屏幕的尽可能多的设备，或系统中的最大设备数，取两者中较小者。如果在命令行上指定了 `-n`，`iostat` 将显示所请求数量的设备与系统中最大设备数中较小的一个。要强制 `iostat` 显示特定驱动器，可在命令行上提供其名称。`iostat` 工具不会显示超过 80 列屏幕可容纳的设备数量，除非在命令行上给出 `-n` 参数以指定要显示的最大设备数量。如果命令行上指定的设备数少于 80 列屏幕可容纳的数量，`iostat` 将仅显示指定的设备。

标准的 `iostat` 设备显示包含以下统计信息：

**KB/t** 每次传输的千字节数

**tps** 每秒传输次数

**MB/s** 每秒兆字节数

指定了 `-I` 标志的标准 `iostat` 设备显示包含以下统计信息：

**KB/t** 每次传输的千字节数

**xfrs** 总传输次数

**MB** 传输的总兆字节数

指定了 `-x` 标志的扩展 `iostat` 设备显示包含以下统计信息：

**r/s** 每秒读操作数

**w/s** 每秒写操作数

**kr/s** 每秒读取的千字节数

**kw/s** 每秒写入的千字节数

**qlen** 事务队列长度

**ms/r** 读事务的平均持续时间（毫秒）

**ms/w** 写事务的平均持续时间（毫秒）

**ms/o** 所有其他事务的平均持续时间（毫秒）

**ms/t** 所有事务的平均持续时间（毫秒）

**%b** 设备有一个或多个未完成事务的时间百分比

指定了 `-x` 和 `-I` 标志的扩展 `iostat` 设备显示包含以下统计信息：

**r/i** 每时间段的读操作数

**w/i** 每时间段的写操作数

**kr/i** 每时间段读取的千字节数

**kw/i** 每时间段写入的千字节数

**qlen** 事务队列长度

**tsvc\_t/i** 每时间段事务的总持续时间（秒）

**sb/i** 每时间段设备有一个或多个未完成事务的总时间（秒）

使用 `-o` 的旧式 `iostat` 显示包含以下统计信息：

**sps** 每秒传输的扇区数

**tps** 每秒传输次数

**msps** 每次事务的平均毫秒数

指定了 `-I` 标志的旧式 `iostat` 显示包含以下统计信息：

**blk** 传输的总块/扇区数

**xfr** 总传输次数

**msps** 每次事务的平均毫秒数

**cpu**

**us** 处于用户模式的 CPU 时间百分比

**ni** 处于用户模式运行 niced 进程的 CPU 时间百分比

**sy** 处于系统模式的 CPU 时间百分比

**in** 处于中断模式的 CPU 时间百分比

**id** 处于空闲模式的 CPU 时间百分比

## 文件

**`/boot/kernel/kernel`** 默认内核名称列表。

**`/dev/kmem`** 默认内存文件。

## 实例

```sh
iostat -w 1 da0 da1 cd0
```

每秒显示前两个直接访问设备和第一个 CDROM 设备的统计信息，无限循环。

```sh
iostat -c 2
```

显示系统中前四个设备的统计信息两次，显示间隔为一秒。

```sh
iostat -t da -t cd -w 1
```

每秒显示所有 CDROM 和直接访问设备的统计信息，无限循环。

```sh
iostat -t da,scsi,pass -t cd,scsi,pass
```

为所有提供对直接访问或 CDROM 设备访问的 SCSI 直通设备显示一次统计信息。

```sh
iostat -h -n 8 -w 1
```

每秒显示最多 8 个 I/O 最多的设备，无限循环。

```sh
iostat -dh -t da -w 1
```

省略 TTY 和 CPU 显示，按性能顺序显示设备，并且每秒仅显示直接访问设备，无限循环。

```sh
iostat -Iw 3
```

每三秒显示一次总统计信息，无限循环。

```sh
iostat -odICTw 2 -c 9
```

使用旧式输出格式显示总统计信息 9 次，每次测量/显示之间间隔两秒。`-d` 标志通常会禁用 TTY 和 CPU 显示，但由于给出了 `-T` 和 `-C` 标志，TTY 和 CPU 显示仍将显示。

## 参见

fstat(1), [netstat(1)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man1/netstat.1.md), nfsstat(1), [ps(1)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man1/ps.1.md), [systat(1)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man1/systat.1.md), devstat(3), ctlstat(8), gstat(8), pstat(8), [vmstat(8)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man8/vmstat.8.md)

《Installing and Operating 4.3BSD》中以 “Interpreting system activity” 开头的章节。

## 历史

此版本的 `iostat` 首次出现于 FreeBSD 3.0。

## 作者

Kenneth Merry <ken@FreeBSD.org>

## 缺陷

将 `iostat` 用作崩溃转储的调试工具可能有限，因为目前无法获取仅覆盖崩溃前一段时间的统计信息。

每个 `drives` 参数都会传递给 isdigit()。如果 isdigit() 返回 true，`iostat` 会切换到未记录的传统语法，后续参数（如果有）将不会被解释为驱动器名称。此行为与本手册中记录的行为冲突，并阻止指定以数字开头的驱动器名称。例如，以下命令：

```sh
iostat ada0 ada1 2 3 cd0
```

本文档对 “设备类型”（device type）一词的使用具有误导性。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man8/iostat.8.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
