返回列表
如何判断磁盘IO的性能是否满足
发布时间:2025-12-05 03:39
本次的实验是用AWS EC2去实现的
用到的工具有:
- sar:查看io性能
- iotop:找到哪些进程占用IO大
- fio: 用来检测磁盘的性能
1. 检测脚本
cat /opt/dd io.sh
#!/bin/bash
# 确保目标文件系统不要求 0 DIRECT(或使用 buffered I0)
echo“开始制造磁盘高I0负载.."
fio --name=high io test
--filename=/data/fio/fio test file
--rw=randrw
--bs=4k
--ioengine=libaio
--iodepth=64
--numjobs=8
--time based
--runtime=120
--size=2G
--direct=0
--group reporting &
echo "fio PID:$!"
echo“现在可以运行iostat-x1','iotop'观察I0利用率"
echo“使用'kill$!·可中止测试"
2.执行完成之后
使用sar -d 2 去查看IO使用情况

- %util:表示磁盘使用率,经常接近 100%,则说明磁盘几乎没有空闲时间,处于满负荷运行。这通常是磁盘 I/O 不足的一个明显指示
- await 是每个磁盘 I/O 操作的平均等待时间。如果 await 长时间处于较高水平(例如,超过 20 毫秒),通常意味着磁盘在等待 I/O 请求处理,或者磁盘本身性能不足。
- 如果 await 在高负载时不断增加,并且伴随着 %util 占满,说明磁盘的 I/O性能可能已经不足,无法满足负载需求。
- tps 是磁盘每秒的请求数,如果此值异常高,可能表示磁盘需要处理大量的请求,尤其是在磁盘利用率很高时,可能导致瓶颈。
- 高 tps 可以与高 %util 和高 await 一起确认磁盘的性能不足
3.使用iostop来找到哪些进程占用磁盘读写
iotop

可以看到这些红似的就是进程ID,就是这些进程导致IO占满
4.对比AWS性能

我的EBS是3000IOPS,但是开启了自动调整IOPS,所以一瞬间升高了,这里可以理解成TPS等于IOPS
那么3000的IOPS执行4KB的文件的时候,读写一共是12MB/s,
所以当你的IOPS增加时你的读写性能也增加,
4293的IOPS:

3000的IOPS
