返回列表

如何判断磁盘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

顶部