iostat指令介绍
文章目录
- 1. 功能介绍
- 2. 语法介绍
- 3. 应用场景
- 4. 示例分析
1. 功能介绍
iostat (input/output statistics),是 Linux/Unix 系统中用于监控 CPU 使用率和 磁盘 I/O 性能的核心工具,可实时展示设备负载、吞吐量、队列状态等关键指标。
可以使用 man iostat
查看详细介绍。
-
核心监控维度
- CPU 使用率:用户态(%user)、内核态(%system)、空闲(%idle)及 I/O 等待时间(%iowait)。
- 磁盘 I/O:每秒读写请求数(tps)、数据量(kB_read/s/kB_wrtn/s)。
-
数据模式
首次报告:第一次
iostat
指令指示了系统启动以来的累计数据(需注意可能包含历史干扰)。
持续监控:通过 iostat 间隔秒数 次数(如 iostat 2 5)动态刷新数据。
2. 语法介绍
使用 help 可以看到用法如下:
-sh-4.4$ iostat --help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
相关选项介绍如下:
选项 | 功能描述 | 示例命令 |
---|---|---|
-c | 仅显示 CPU 统计信息(与 -d 互斥) | iostat -c 1 5 |
-d | 仅显示磁盘统计信息(与 -c 互斥) | iostat -d sda |
-x | 输出扩展 I/O 详情(如 await 、svctm ) | iostat -x 1 |
-k/-m | 以 KB/MB 为单位显示数据(默认块单位) | iostat -k |
-p | 指定监控的磁盘分区(如 sda ) | iostat -p sda 2 |
-t | 添加时间戳(格式 HH:MM:SS ) | iostat -t |
-z | 跳过零 I/O 活动设备,仅显示活跃设备 | iostat -z |
-
-x 扩展IO详细介绍
-
iostat -x
的输出分为两部分:CPU 统计信息(默认显示,可通过-d
隐藏)和磁盘设备统计信息。以下重点解析磁盘部分的扩展字段(以设备sda
为例):
字段 含义 Device 磁盘设备名称(如 sda
、nvme0n1
)。r/s 每秒完成的读请求数(实际发送到磁盘的读操作数)。 w/s 每秒完成的写请求数。 rkB/s 每秒读千字节数(需结合 -k
选项,或通过rsec/s * 512 / 1024
计算)。wkB/s 每秒写千字节数。 rrqm/s 每秒合并的读请求数(内核将相邻的读请求合并以提高效率)。 wrqm/s 每秒合并的写请求数。 %rrqm 在发送到设备之前合并在一起的读请求的百分比。 %wrqm 在发送到设备之前,写请求合并在一起的百分比。 r_await 发送到要服务的设备的读请求的平均时间(以毫秒为单位)。这包括队列中请求所花费的时间和为它们服务所花费的时间。 w_await 发送到要服务的设备的写请求的平均时间(以毫秒为单位)。这包括队列中请求所花费的时间和服务所花费的时间。 aqu-sz 平均等待处理的 IO 请求队列长度(值越高表示 IO 队列积压越严重)。老版本是 avgqu-sz
rareq-sz 发送到设备的读请求的平均大小(单位为千字节)。 wareq-sz 发送给设备的写请求的平均大小(单位为千字节)。 svctm 平均每个 IO 请求的设备处理时间(不包括队列等待时间),单位:毫秒。 %util 磁盘设备的利用率(即磁盘忙于处理 IO 请求的时间百分比,接近 100% 表示磁盘饱和)。
-
3. 应用场景
-
性能瓶颈分析
- CPU 瓶颈
- %iowait >20% 表示 I/O 等待时间长,可能磁盘成为瓶颈。
- %user + %sys >70% 提示 CPU 处理能力不足,需优化代码或扩容。
- 磁盘瓶颈(
iostat -x
):- 高 %util(>80%):设备接近满载,需优化存储或升级硬件。
- 高 await 与低 svctm:I/O 队列堆积,检查并发读写。
- CPU 瓶颈
-
数据库与存储调优
- 数据库负载:
- 监控事务日志盘(如
/dev/sdb
)的tps
和rkB/s
,确保读写均衡。
- 监控事务日志盘(如
- 数据库负载:
-
存储设备评估
- SSD 与 HDD 对比:
- SSD 的
svctm
通常 <1ms,若 HDD 的svctm
持续 >10ms,建议升级存储介质。
- SSD 的
- SSD 与 HDD 对比:
4. 示例分析
- 高 %util 但低吞吐量:
- 可能频繁小文件随机读写,导致磁盘频繁寻道。优化方法:合并 I/O 请求或改用 SSD。
- await 远高于 svctm:
- 表明 I/O 队列积压严重。需检查 avgqu-sz,若队列过长,需降低并发或提升磁盘性能。
- rkB/s 突增:
- 可能发生大规模数据读取(如数据库全表扫描)。需结合业务逻辑判断是否正常。