Linux的IO性能监控工具iostat详解
目录
iostat 是用来监控磁盘 IO 性能的工具,可显示设备使用状态和 CPU 统计数据。
基本使用
iostat -d -k 1 10
参数说明:
-d:显示设备(磁盘)使用状态-k:强制使用 Kilobytes 为单位1 10:每隔 1 秒刷新一次,共显示 10 次
输出字段解释
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 39.29 21.14 1.44 441339807 29990031
tps:每秒的传输次数(I/O 请求数)kB_read/s:每秒从设备读取的数据量kB_wrtn/s:每秒向设备写入的数据量kB_read:读取的总数据量kB_wrtn:写入的总数据量
扩展信息(-x 参数)
iostat -d -x -k 1 10
扩展输出:
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.80 31.49 42.51 2.92 21.26 1.46 1.16 0.03 0.79 2.62 10.28
rrqm/s:每秒合并的读请求数wrqm/s:每秒合并的写请求数r/s:每秒读请求数w/s:每秒写请求数rsec/s:每秒读扇区数wsec/s:每秒写扇区数rkB/s:每秒读 KB 数wkB/s:每秒写 KB 数avgrq-sz:平均每次 I/O 操作的数据大小(扇区)avgqu-sz:平均 I/O 队列长度await:平均 I/O 响应时间(毫秒),建议 < 5mssvctm:平均 I/O 服务时间(毫秒)%util:一秒中用于 I/O 操作的时间百分比。接近 100% 表示设备满负荷
CPU 统计
iostat -c 1 10
输出 CPU 使用率(user, nice, sys, iowait, idle)。
常见用法
# 查看 TPS 和吞吐量
iostat -d -k 1 10
# 查看设备使用率和响应时间
iostat -d -x -k 1 10
# 查看 CPU 状态
iostat -c 1 10
性能分析
- %util 接近 100%:设备已经满负荷,磁盘可能是瓶颈
- idle < 70%:IO 压力较大,通常有较多 wait
- await 远大于 svctm:IO 队列太长,应用响应时间会变慢
- svctm 接近 await:基本没有队列等待,磁盘性能充足
如果响应时间过高可考虑:更换更快的磁盘、调整内核 elevator 算法、优化应用、升级 CPU。