linux测试系统性能
硬盘IO测试 fio
fio 是最强大的 IO 测试工具,可模拟顺序/随机、读/写、多线程、不同队列深度。
安装
# Debian/Ubuntu
apt install fio
# CentOS/RHEL
yum install fio
常见测试场景
随机读 IOPS(4K,模拟数据库)
fio --name=randread --ioengine=libaio --iodepth=32 \
--rw=randread --bs=4k --direct=1 --size=1G \
--numjobs=4 --runtime=60 --time_based --group_reporting
随机写 IOPS
fio --name=randwrite --ioengine=libaio --iodepth=32 \
--rw=randwrite --bs=4k --direct=1 --size=1G \
--numjobs=4 --runtime=60 --time_based --group_reporting
顺序读带宽
fio --name=seqread --ioengine=libaio --iodepth=32 \
--rw=read --bs=1M --direct=1 --size=4G \
--runtime=60 --time_based --group_reporting
顺序写带宽
fio --name=seqwrite --ioengine=libaio --iodepth=32 \
--rw=write --bs=1M --direct=1 --size=4G \
--runtime=60 --time_based --group_reporting
混合读写(70%读 30%写)
fio --name=mix --ioengine=libaio --iodepth=32 \
--rw=randrw --rwmixread=70 --bs=4k --direct=1 \
--size=1G --numjobs=4 --runtime=60 --time_based --group_reporting
使用配置文件(推荐复杂场景)
新建 test.fio:
[global]
ioengine=libaio
direct=1
runtime=60
time_based
group_reporting
size=1G
directory=/data
[4k-randread]
rw=randread
bs=4k
iodepth=32
numjobs=4
[1M-seqwrite]
rw=write
bs=1M
iodepth=16
运行:fio test.fio
关键参数
| 参数 | 说明 |
|---|---|
--rw | read/write/randread/randwrite/randrw |
--bs | 块大小,4k 测 IOPS,1M 测带宽 |
--iodepth | 队列深度,越大越能压满盘 |
--numjobs | 并发任务数 |
--ioengine | libaio(异步)/ sync / io_uring |
--direct=1 | 绕过缓存 |
--runtime | 测试时长 |
结果解读
- IOPS:随机小块的每秒操作数(数据库关键指标)
- BW(带宽):顺序大块的吞吐量 MB/s
- lat(延迟):
clat完成延迟,看 avg / p99 / max
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生


