iostat 概述
iostat 是 Linux 系统监控工具的一部分,用于报告 CPU 使用情况和设备(磁盘、分区等)的 I/O 统计信息。通过分析这些数据,可以诊断系统性能瓶颈,尤其是磁盘 I/O 相关的性能问题。
基本语法
iostat [选项] [间隔时间] [次数]
- 间隔时间:两次报告之间的时间间隔(秒)。
- 次数:生成报告的次数。若未指定次数,则持续输出。
常用选项
-c:仅显示 CPU 使用情况。-d:仅显示设备 I/O 统计信息。-x:显示扩展统计信息(包括更详细的磁盘指标)。-k:以 KB/s 为单位显示数据(默认单位为块/s)。-m:以 MB/s 为单位显示数据。-p:显示指定设备或分区的统计信息(如-p sda)。-t:在输出中包含时间戳。
输出字段解析
CPU 统计部分
- %user:用户进程消耗的 CPU 百分比。
- %nice:低优先级进程(nice 值调整)消耗的 CPU 百分比。
- %system:内核进程消耗的 CPU 百分比。
- %iowait:CPU 等待 I/O 操作的时间百分比。高值可能表示磁盘瓶颈。
- %steal:虚拟化环境下被其他虚拟机占用的 CPU 时间。
- %idle:CPU 空闲时间百分比。
设备 I/O 统计部分
- Device:设备名称(如
sda)。 - tps:每秒传输次数(I/O 请求数)。
- kB_read/s:每秒读取的数据量(KB)。
- kB_wrtn/s:每秒写入的数据量(KB)。
- kB_read:读取的总数据量(KB)。
- kB_wrtn:写入的总数据量(KB)。
扩展统计(-x 选项)
- await:平均每次 I/O 操作的等待时间(毫秒)。高值表示磁盘响应慢。
- svctm:平均每次 I/O 操作的服务时间(毫秒)。
- %util:设备带宽利用率百分比。接近 100% 表示磁盘饱和。
使用示例
查看 CPU 和设备 I/O 统计
iostat 2 3
每 2 秒输出一次,共输出 3 次。
仅显示磁盘 I/O 统计
iostat -d 1
每 1 秒输出一次磁盘 I/O 数据。
显示扩展磁盘统计
iostat -x 1 5
每 1 秒输出一次扩展统计,共 5 次。
监控特定磁盘(如 sda)
iostat -p sda 2
每 2 秒输出 sda 的统计信息。
常见问题排查
磁盘瓶颈
- 高 %iowait:CPU 因等待磁盘 I/O 而空闲,可能磁盘负载过高。
- 高 await 低 svctm:可能是磁盘队列过长,需检查请求并发数。
- %util 接近 100%:磁盘带宽已饱和,需优化或升级磁盘。
性能优化建议
- 使用 SSD 替换机械硬盘。
- 调整 I/O 调度器(如
deadline或noop)。 - 检查是否有频繁读写的小文件,优化文件系统或应用逻辑。
通过合理使用 iostat,可以快速定位系统 I/O 性能问题并采取针对性优化措施。
217

被折叠的 条评论
为什么被折叠?



