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 |

相关推荐
Mr_Xuhhh几秒前
C语言字符串与内存操作函数模拟实现详解
java·linux·算法
新缸中之脑7 分钟前
Nanobot:轻量级OpenClaw
java·运维·网络
yqcoder12 分钟前
uni-app 之 设置 tabBar
运维·服务器·uni-app
宴之敖者、15 分钟前
Linux——git和gdb
linux·运维·git
码刘的极客手记17 分钟前
vSphere 4.1 隐藏技术全解析:esxcli API 调用、Kickstart 部署优化及 DCUI 界面定制
服务器·网络·esxi·vmware·虚拟机
China_Yanhy23 分钟前
入职 Web3 运维日记 · 第 5 日:硬分叉倒计时 —— 给飞行中的飞机换引擎
运维·web3
TangDuoduo000525 分钟前
【Linux字符设备驱动】
linux·驱动开发
代码游侠26 分钟前
学习笔记——Linux内核与嵌入式开发2
linux·运维·arm开发·嵌入式硬件·学习·架构
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.29 分钟前
Nginx性能调优与压测实战指南
运维·nginx
郝学胜-神的一滴30 分钟前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生