iostat
是 Linux 系统中用于监控 CPU 使用情况和磁盘 I/O 活动的工具,它可以帮助你了解系统的 I/O 性能,尤其是在磁盘和存储设备上的读写情况。iostat
是 sysstat
工具包的一部分,通常用于检测系统是否存在 I/O 性能瓶颈。
1. 安装 iostat
在一些 Linux 发行版中,iostat
可能没有默认安装,可以通过以下命令安装:
-
Debian/Ubuntu:
sudo apt update sudo apt install sysstat
-
CentOS/RHEL:
sudo yum install sysstat
-
Fedora:
sudo dnf install sysstat
2. 基本用法
查看所有设备的 I/O 状况
默认情况下,运行 iostat
会显示系统的 CPU 和所有设备的 I/O 活动情况:
iostat
输出将显示两部分:
- CPU 使用情况:显示用户态、系统态、空闲时间等。
- 设备 I/O 使用情况:显示设备名称、每秒读/写请求数量、每次请求的平均块大小等。
只查看设备的 I/O 信息
如果你只对存储设备的 I/O 活动感兴趣,可以使用以下命令忽略 CPU 信息:
iostat -d
-d
:只显示磁盘 I/O 统计信息。
每秒刷新统计信息
可以设置定时刷新统计信息,每隔几秒刷新一次当前的 I/O 使用情况。比如每隔 5 秒刷新一次,并且显示 3 次:
iostat -d 5 3
5
:表示每隔 5 秒刷新一次。3
:表示显示 3 次结果。
查看设备的详细 I/O 信息
使用 -x
选项可以查看每个设备的详细 I/O 统计信息:
iostat -x
这将显示如下指标:
- rrqm/s:每秒合并的读请求数(从操作系统角度)。
- wrqm/s:每秒合并的写请求数。
- r/s:每秒完成的读请求数。
- w/s:每秒完成的写请求数。
- rMB/s:每秒读出的 MB 数。
- wMB/s:每秒写入的 MB 数。
- avgrq-sz:平均每个 I/O 请求的大小(以块为单位)。
- avgqu-sz:平均 I/O 队列长度。
- await:I/O 操作的平均等待时间(毫秒)。
- svctm:平均服务时间(毫秒)。
- %util:设备的使用率,表示在某个时间段内设备忙碌的百分比。
查看特定设备的 I/O
可以通过指定设备名来查看单个设备的 I/O 情况:
iostat -d -x /dev/sda
/dev/sda
:指定的设备名称。
只显示某个设备的统计信息
如果你只想查看某个设备的统计数据,可以使用:
iostat -p sda
这将显示与 sda
相关的 I/O 活动。
3. 常用选项
-c
:只显示 CPU 使用情况。-d
:显示磁盘 I/O 统计信息。-k
:将结果单位显示为 KB(默认单位是块)。-m
:将结果单位显示为 MB。-p
:显示指定设备及其分区的 I/O 统计信息。-t
:显示统计信息时,附带时间戳。-x
:显示设备的详细统计信息。
4. 示例
每隔 2 秒显示一次所有设备的详细 I/O 信息
iostat -x 2
查看特定设备每秒的读写速率
iostat -d -m /dev/sda 1
- 这将每秒刷新一次
/dev/sda
的读写速率,单位为 MB。
查看设备的读写等待时间和队列长度
iostat -x -p sda
await
:设备的平均等待时间,通常越小越好。avgqu-sz
:设备的平均队列长度,显示等待处理的请求数量。
5. 结果解读
以下是一些常见的指标及其含义:
- %util:设备的利用率,100% 表示设备始终在忙碌。如果 %util 接近 100%,表示设备可能已经成为系统的性能瓶颈。
- await:I/O 请求的平均等待时间,通常该值越小越好。如果该值过高,表示 I/O 瓶颈较为严重。
- r/s, w/s:每秒的读写请求数,显示磁盘的读写频率。
- rMB/s, wMB/s:每秒读写的 MB 数,显示磁盘的读写带宽。
6. 总结
- 基本使用:直接运行
iostat
可以查看 CPU 和设备的 I/O 状态。 - 定时监控:可以设置定时刷新,比如每 5 秒刷新一次 I/O 统计数据。
- 详细统计:通过
-x
参数可以查看详细的 I/O 指标,包括设备利用率和等待时间。 - 指定设备:可以通过指定设备名来查看某一设备的性能。
iostat
是一个非常有用的工具,特别是在诊断磁盘 I/O 性能问题和检测系统瓶颈时。