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 |

相关推荐
佳児素花痴╮20 分钟前
C语言链接库
linux·运维·服务器
雷电小将军31 分钟前
诡秘之主手游占卜家序列加点 诡秘之主手游占卜家怎么加点
服务器·网络·游戏·电脑·玩游戏
云飞云共享云桌面35 分钟前
苏州昆山精密机械加工厂研发部门10个SolidWorks可以部署云飞云共享云桌面吗?
大数据·运维·服务器·自动化·汽车·制造
聚美智数36 分钟前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
wWYy.1 小时前
Linux发送数据包的过程
linux·网络
小嵌同学1 小时前
Linux 内核中的 Per-CPU 机制详解
linux·运维·arm开发·嵌入式
云飞云共享云桌面1 小时前
自动化设备厂 10 人研发团队,如何共用一台服务器做 SolidWorks 建模?
运维·服务器·网络·3d·自动化·制造
筝筝ba2 小时前
Configure IP Address Via Different User Roles And Verify(1)
服务器
QH139292318802 小时前
NVIDIA H200 H300服务器
运维·服务器·开发语言·网络·信息与通信
xixiaoyunya2 小时前
中小微企业轻量组网方案的技术选型与实践:从传统专线到软定义隧道的成本与效能分析
服务器·php·apache