fio performance test

fio参数解释

可以使用fio -help查看每个参数,具体的参数左右可以在官网查看how to文档,如下为几个常见的参数描述

|--------------------------|-----------------------------------------------------------------------------|
| filename=/dev/emcpowerb  | 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb 或 -filename=/dev/nvme0n1 |
| direct=1 | 测试过程绕过机器自带的buffer,使测试结果更真实 |
| rw=randwread | 测试随机读的I/O |
| rw=randwrite | 测试随机写的I/O |
| rw=randrw | 测试随机混合写和读的I/O |
| rw=read | 测试顺序读的I/O |
| rw=write | 测试顺序写的I/O |
| rw=rw | 测试顺序混合写和读的I/O |
| bs=4k | 单次io的块文件大小为4k |
| bsrange=512-2048 | 同上,提定数据块的大小范围 |
| size=5g | 本次的测试文件大小为5g,以每次4k的io进行测试 |
| numjobs=30 | 本次的测试线程为30 |
| runtime=1000 | 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止 |
| ioengine=psync | io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包 |
| rwmixwrite=30 | 在混合读写的模式下,写占30% |
| group_reporting | 关于显示结果的,汇总每个进程的信息 |
| 此外 | |
| lockmem=1g | 只使用1g内存进行测试 |
| zero_buffers | 用0初始化系统buffer |
| nrfiles=8 | 每个进程生成文件的数量 |

ioengine= psync io 引擎使用 psync 方式

  • psync 是使用同步方式,用多线程模拟同时批量给内核提交IO请求。
  • libaio 采用Kernel Native AIO可以达到单次批量给内核提交IO请求的目的,相比 psync 的多线程,libaio的开销更小,性能更好,更加合适评估内 核块子系统的性能。
  • iodepth 队列深度,只有使用 libaio 时才有意义。这是一个可以影响IOPS的参数。一次提交要提交多少个I/O请求,不过这个只对异步I/O引擎有用,因为同步I/O总是会等待提交的I/O请求返回了再提交下一个I/O请求,所以iodepth总是1。
    应用使用IO通常有二种方式:同步和异步。 同步的IO一次只能发出一个IO请求,等待内核完成才返回,这样对于单个线程iodepth总是等于1,但是可以透过多个线程并发执行来解决,通常我们会用16-32根线程同时工作把iodepth塞满。 异步的话就是用类似libaio这样的linux native aio一次提交一批,然后等待一批的完成,减少交互的次数,会更有效率。

pysnc 模式多线程测试场景:

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 100%随机,100%读, 4K  fio -filename=/dev/nvme0n1-direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k |
| 100%随机,100%写, 4K  fio -filename=/dev/nvme0n1-direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k |
| 100%顺序,100%读 ,4K  fio -filename=/dev/nvme0n1-direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k |
| 100%顺序,100%写 ,4K  fio -filename=/dev/nvme0n1-direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k |
| 100%随机,70%读,30%写 4K  fio -filename=/dev/nvme0n1-direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k |

相关推荐
ITOWARE_SAPer6 小时前
选择SAP实施公司能否兼得官方授权与高性价比?
运维·能源·制造·零售
开压路机6 小时前
进程控制
linux·服务器
香蕉鼠片6 小时前
跨平台开发到底是什么
linux·windows·macos
Elastic 中国社区官方博客6 小时前
Elasticsearch:快速近似 ES|QL - 第一部分
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
2401_873479406 小时前
如何从零搭建私有化IP查询平台?数据采集、清洗、建库到API发布全流程
服务器·网络·tcp/ip
AC赳赳老秦7 小时前
OpenClaw生成博客封面图+标题,适配CSDN视觉搜索,提升点击量
运维·人工智能·python·自动化·php·deepseek·openclaw
Eric.Lee20217 小时前
docker 启动停止命令
运维·docker·容器
samson_www8 小时前
EC2的GRUB引导程序问题
运维·ai
bukeyiwanshui8 小时前
20260417 DNS实验
linux
代码中介商8 小时前
Linux 帮助手册与用户管理完全指南
linux·运维·服务器