在Linux中,最好用的一款磁盘性能测试工具便是fio,提供多种方式测试IOPS等重要磁盘性能指标,与iostat不同的是,iostat只能监控当前性能数据,并不能用于测试(另顺带一句Windows中的磁盘性能测试工具推荐iometer)。
访问官方项目链接
安装fio
yum -y install fio
参数说明
参数 | 说明 |
filename=/dev/sda | 测试目录为/dev/sda |
direct=1 | 测试时绕过buffer,测试结果更真实 |
rw=read | 测试顺序读I/O |
rw=write | 测试顺序写I/O |
rw=rw, readwrite | 测试顺序读写I/O |
rw=randread | 测试随机读I/O |
rw=randwrite | 测试随机写I/O |
rw=randrw | 测试随机读写I/O |
bs=8k | 单次IO的块文件大小为8k |
bsrange=512-4096 | 单次IO的块文件大小范围为512-2048 |
size=5g | 测试文件总大小为5G |
numjobs=50 | 测试线程为50 |
runtime=120 | 测试时间为120秒,优先级比size高 |
ioengine=psync | 使用psync作为IO引擎 |
rwmixwrite=60 | 测试读写性能时,写占60% |
group_reporting | 汇总每个进程的结果信息 |
lockmem=1g | 只使用1G内存进行测试 |
zero_buffers | 用0初始化系统buffer |
nrfiles=5 | 每个进程生成文件的数量为5 |
举例
# 100%随机,100%写, 4K fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=5G -numjobs=50 -group_reporting -name=rd_write_4k # 100%顺序,100%写,4K,180秒 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=5G -numjobs=50 -runtime=180 -group_reporting -name=sq_read_4k # 100%随机,60%读,40%写,8K fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -rwmixread=60 -bs=8k -size=5G -numjobs=50 -group_reporting -name=rd_60r_8k # 100%顺序,100%读,8K,120秒 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=8k -size=5G -numjobs=50 -runtime=120 -group_reporting -name=io-vda
更多可参照官方提供的样例。
解读结果
字段 | 说明 |
slat | 提交延迟 |
clat | 完成延迟 |
lat | 响应时间 |
bw | 带宽 |
iops | IOPS |
cpu | CPU使用情况 |
IO depths | 队列 |
IO submit | 单个IO提交的IO数 |
IO complete | 单个IO完成的IO数 |
IO issued rwts | 读写请求 |
IO latency | 延迟分布 |
Run status group * (all jobs) | |
io= | IO总数据 |
run= | IO总时间 |
aggrb= | 组总带宽 |
minb= | 最小平均带宽 |
maxb= | 最大平均带宽 |
mint= | 组中线程的最短运行时间 |
maxt= | 组中线程的最长运行时间 |
Disk stats (read/write) | |
ios= | 所有组总共执行的IO数 |
merge= | 总共发生的IO合并数 |
ticks= | 磁盘忙时次数 |
io_queue= | 花费在队列的总时间 |
util= | 磁盘利用率 |
原创文章禁止转载:技术学堂 » Linux磁盘性能测试工具fio详解