iostat
是 Linux 系统中用于监控 CPU 和磁盘 I/O 使用情况的工具,它可以帮助分析系统的 I/O 瓶颈。
1. 基本语法
iostat [选项] [间隔时间] [次数]
2. 选项参数说明
参数 | 说明 | 示例 |
---|---|---|
-c |
显示 CPU 统计信息 | iostat -c |
-d |
显示设备 I/O 统计信息(默认启用) | iostat -d |
-h |
以人类可读的格式显示数据 | iostat -h |
-k |
以 KB 为单位显示吞吐量(默认) | iostat -k |
-m |
以 MB 为单位显示吞吐量 | iostat -m |
-N |
显示 LVM 逻辑卷的设备名称 | iostat -N |
-t |
在输出中显示时间戳 | iostat -t |
-V |
显示 iostat 版本信息并退出 |
iostat -V |
-x |
显示扩展 I/O 统计信息 | iostat -x |
-y |
仅显示自上次运行 iostat 以来的数据,不显示启动时的平均值 |
iostat -y 1 5 |
-z |
省略所有活动为零的设备 | iostat -z |
-j {ID |LABEL|PATH|UUID|...} |
指定如何标识设备(如 UUID、设备路径等) | iostat -j UUID |
-H |
以可读格式显示设备统计数据,仅与 -g 结合使用 |
iostat -H -g my_group |
-g <group_name> |
指定设备分组名称,需配合 -H 使用 |
iostat -H -g my_group |
-p [<device>[,...] | ALL] |
显示设备及其分区的统计信息 | iostat -p sda |
<device> |
仅显示指定设备的统计信息 | iostat sdc |
<interval> |
设定统计数据刷新时间间隔(秒) | iostat 1 |
<count> |
设定统计数据刷新的次数 | iostat 1 10 |
ALL |
显示所有设备的统计信息 | iostat -d ALL |
3. 返回信息中字段说明
-
CPU 统计字段解释;在
avg-cpu
部分:
字段 | 说明 |
---|---|
%user |
用户态 CPU 占用率(不包括 nice 优先级调整) |
%nice |
低优先级进程(nice 值 > 0)占用的 CPU 比例 |
%system |
内核态(系统进程)CPU 占用率 |
%iowait |
CPU 等待 I/O 完成的时间占比,高值可能意味着 I/O 瓶颈 |
%steal |
虚拟机等待 hypervisor 处理其他虚拟 CPU 的时间 |
%idle |
CPU 空闲时间 |
-
磁盘 I/O 统计字段解释;在
Device
(磁盘)统计部分:
字段 | 说明 |
---|---|
Device |
设备名称(如:sda, sdb, nvme0n1) |
r/s |
每秒读请求数(Reads per Second) |
w/s |
每秒写请求数(Writes per Second) |
rkB/s |
每秒读的数据量(单位:KB/s) |
wkB/s |
每秒写的数据量(单位:KB/s) |
rrqm/s |
每秒被合并的读请求数(Read requests merged per second) |
wrqm/s |
每秒被合并的写请求数(Write requests merged per second) |
%rrqm |
合并读请求数在所有读请求中的比例 = rrqm/s ÷ (r/s + rrqm/s)
|
%wrqm |
合并写请求数在所有写请求中的比例 = wrqm/s ÷ (w/s + wrqm/s)
|
r\_await |
读请求的平均等待时间(毫秒) |
w\_await |
写请求的平均等待时间(毫秒) |
aqu-sz |
平均队列长度(Average Queue Size)——等待 I/O 的请求数 |
rareq-sz |
平均每次读请求的数据大小(KB) |
wareq-sz |
平均每次写请求的数据大小(KB) |
svctm |
每个 I/O 请求的平均处理时间(毫秒) |
%util |
设备使用率(100% 表示设备满负荷运行) |
tps |
每秒 I/O 传输次数,即每秒执行的 I/O 操作(读取或写入)。 一个传输通常是一个块 I/O 请求,可能涉及多个扇区。 |
kB_read/s |
每秒读取的节数(kB/s)。 |
kB_wrtn/s |
每秒写入的节数(kB/s)。 |
kB_read |
自系统启动以来,读取的总 KB 数。 |
kB_wrtn |
自系统启动以来,写入的总 KB 数。 |
4. 常用命令示例
iostat
基本磁盘 I/O 统计iostat -xz
省略无活动设备,显示扩展信息
# iostat -xz
Linux 4.4.0-131-generic (A04) 03/03/2025 _x86_64_ (56 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.20 0.00 0.19 0.10 0.00 99.51
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
loop0 0.00 0.00 0.00 0.00 0.00 0.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.07 1.98 0.35 2.78 6.23 39.27 29.06 0.00 0.61 0.34 0.64 0.11 0.03
sdb 0.00 0.00 0.00 77.63 0.01 3331.36 85.82 0.01 0.17 0.09 0.17 0.05 0.37
sdc 0.07 3.71 39.80 69.78 7933.43 4294.60 223.17 0.00 0.02 0.33 0.18 0.02 0.26
iostat -x sdc 1 5
仅查看 sdc 的信息且每秒刷新一次 5 次后退出