当前位置: 首页 > article >正文

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


http://www.kler.cn/a/106758.html

相关文章:

  • 【C#设计模式(11)——外观模式(Facade Pattern)】
  • Cellebrite VS IOS18Rebooting
  • 【NLP】医学搜索Query相关性判断【阿里云:天池比赛】
  • 玩转ChatGPT:文献阅读 v2.0
  • sealos部署K8s,安装docker时master节点突然NotReady
  • 驱动开发系列13 - Linux tasklet用法介绍
  • 设计模式(2)-创建型模式
  • 一些k8s集群操作命令
  • 【httpd】 Apache http服务器目录显示不全解决
  • 【0基础学Java第一课】-- 初始Java
  • 读高性能MySQL(第4版)笔记21_读后总结与感想兼导读
  • 如何查看所有员工电脑访问网站记录?
  • 优咔科技创新连接方案助力高质量5G车联服务
  • Windows-Oracle19c 安装详解-含Navicate远程连接配置 - 同时连接Oracle11g和Oracle19c
  • Spark UI中Shuffle dataSize 和shuffle bytes written 指标区别
  • Go实现MapReduce
  • RPA除了和OCR、NLP技术结合,还能和什么技术结合?
  • 39.B树,B+树(王道第7章查找补充知识)
  • APP自动化测试 ---- Appium介绍及运行原理
  • 刷题笔记day02-数组快慢指针
  • Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (三)
  • Hbase基本使用,读写原理,性能优化学习
  • 纵行科技携ZETA亮相世界物联网博览会,助力全球物联网生态合作
  • vue3 项目搭建教程整理
  • 前端 JS 经典:宏任务、微任务、事件循环(EventLoop)
  • 数据结构与算法之矩阵: Leetcode 48. 旋转矩阵 (Typescript版)