fio使用good blog

2023-10-27

【Linux应用】磁盘IO读写测试工具-FIO详解_协议森林的博客-CSDN博客_fio读写测试

编译安装,常用参数,实例,结果说明

SSD测试第一神器——FIO

磁盘IO体系架构与存储解决方案-pudn.com

磁盘性能指标——IOPS与吞吐量

 

 

 

线程指的是同时有多少个读或写任务在并行执行,一般来说,CPU里面的一个核心同一时间只能运行一个线程。如果只有一个核心,要想运行多线程,只能使用时间切片,每个线程跑一段时间片,所有线程轮流使用这个核心。Linux使用Jiffies来代表一秒钟被划分成了多少个时间片,一般来说Jiffies是1000或100,所以时间片就是1毫秒或10毫秒。

为了提高并行性,大部分情况下SSD读写采用的是异步模式。就是用几微秒发送命令,发完线程不会傻傻的在那里等,而是继续发后面的命令。如果前面的命令执行完了,SSD通知会通过中断或者轮询等方式告诉CPU,CPU来调用该命令的回调函数来处理结果。这样的好处是,SSD里面几十上百个并行单元大家都能分到活干,效率暴增。

不过,在异步模式下,CPU不能一直无限的发命令到SSD。比如SSD执行读写如果发生了卡顿,那有可能系统会一直不停的发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫做队列深度。举个例子,队列深度64就是说,系统发的命令都发到一个大小为64的队列,如果填满了就不能再发。等前面的读写命令执行完了,队列里面空出位置来,才能继续填命令。

Linux读写SSD等块设备使用的是BIO,Block-IO,这是个数据结构,包含了数据块的逻辑地址LBA,数据大小和内存地址等。

–numjobs=1:每个job是1个线程,这里用了几,后面每个用-name指定的任务就开几个线程测试。所以最终线程数=任务数* numjobs。

–output TestResult.log:日志输出到TestResult.log。

用FIO可以检验写入数据是否出错。用-verify=str来选择校验算法,有md5 crc16 crc32 crc32c crc32c-intel crc64 crc7 sha256 sha512 sha1等。为了校验,需要用do_verify参数。如果是写,那么do_verify=1就意味着写完再读校验,这种会很占内存,因为FIO会把每个数据块的校验数据保存在内存里。do_verify=0时只写校验数据,不做读校验。

 

读的时候do_verify=1,那么读出来的数据都会做校验值检查,do_verify=0的话,只读数据,不做检查。

另外,verify=meta时,fio会在数据块内写入时间戳、逻辑地址等,此时还能verify_pattern指定写入数据pattern。

可以多个-name来并行执行多个task

ipdepth vs numjobs

fio工具中的iodepth参数与numjobs参数-对测试结果的影响_半遮雨的博客-CSDN博客_fio numjobs

此次测试结果中,使用numjobs参数测试出的效果要好,更能够增加集群客户端测试压力,使测试结果更准确。而iodepth参数设置后,集群带宽值几乎不变,反而延时随着iodepth增加而成倍增加。混合设置后也同样如此,随着iodepth的值增加,带宽值没有增加,反而延时成倍增加。所有延时增加的倍数刚好是iodepth增加的倍数。

一般情况下,为了达到磁盘的最高性能,通常会选择较高的iodepth(128或256)。对于P4XXX的硬盘,通常可能一个CPU core无法达到满IOPS,此时并不是由于一个core的能力不够,而是由于硬盘中硬件队列本身限制的问题。因此,通常需要使用两个CPU core才能够达到specification中的满IOPS。此外,对于以3D Xpoint为介质的Optane(Intel P4800X),通常只需要一个core并使用较小的iodepth即可达到满IOPS,此时已经达到硬盘的上限,若再次增大iodepth只会是latency变大而IOPS不再增长。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fio使用good blog 的相关文章

  • Linux用户与群组管理

    用户账户与群组概念 Linux操作系统是多用户多任务的操作系统 系统依据账户来区分属于每个用户的文件 进程 任务 并给每个用户提供特定的工作环境 例如 用户的工作目录 shell版本以及图形化的环境配置等 Linux系统下的用户分为三种 1

随机推荐

  • Centos7 离线安装kafka

    Centos7 离线安装kafka 1 准备 1 提前下载kafka与jdk rpm包 2 开始 1 将rpm包导入到服务器 2 执行 rpm ivh kafka 1 1 1 20200608 x86 64 rpm 下载 https dow
  • 华为OD机试-喊7游戏

    题目描述 喊7 是一个传统的聚会游戏 N个人围成一圈 按顺时针从1 7编号 编号为1的人从1开始喊数 下一个人喊得数字是上一个人喊得数字 1 但是当将要喊出数字7的倍数或者含有7的话 不能喊出 而是要喊过 假定N个人都没有失误 当喊道数字k
  • IDEA 编译时 报 “常量字符串过长” 解决办法

    在编译项目时 出现错误为 常量字符串过长 java constant string too long 解决 File gt gt Settings gt gt Build Execution Deployment gt gt Compile
  • @font-face 加载字体引用字体之后不起作用

    如题 最近在学习css的时候遇到如下情况 使用 font face加载多种字体不起作用 反思 是我搞错了 字体加载可能就是要一条一条的写 文件结构目录 代码如下
  • Android 报错:Call requires API level 26/设置SDK最小的版本

    报错如下图所示 我尝试了升级Android Studio 到新版本 报错仍然存在 原因是某些控件仅仅支持一些较高SDK的版本 所以修改模块的gradle文件的SDK的最小版本 改完之后报错消失 备注 SDK Software Develop
  • in和=无法查出为NULL的值

    select from base persons x where x pname in null select from base persons x where x pname null 以上两句查询结果为空 虽然表里有相应的值 Id N
  • PAT 1152 Google Recruitment

    原题链接 1152 Google Recruitment 20分 题意 从任一给定的长度为 L 的数字中 找出最早出现的 K 位连续数字所组成的素数 关键词 字符串 判断质数 输入格式 输入在第一行给出 2 个正整数 分别是 L 和 K 接
  • python机器学习之数据的预处理(五种方式数据处理案例详解)

    数据的预处理 数据下载地址 gt 点这里下载 到入文件时可以直接复制地址然后用r 包裹起来 例如 data pd read cav r C work data csv 或者也可以以直接将 换成 也可以导入 1 归一化 在sklearn当中
  • Nginx四层代理和7层反向代理

    Nginx四层代理和7层反向代理 文章目录 Nginx四层代理和7层反向代理 Nginx四层代理配置 Nginx四层代理配置步骤 配置好两台Nginx七层代理服务器 在四层代理的Nginx服务器上做相关配置 测试结果 Nginx四层代理配置
  • vscode设置选项卡换行

    ctrl shift p打开命令输入窗口 输入preference 选择打开工作区设置 输入wrap tabs 勾选wrap tabs 可以多行显示了
  • Vue应用方法、实例属性、实例方法$refs、vm.$nextTick等

    应用方法 实例属性 实例方法 Vue 中对部分特殊的属性和功能方法进行特殊指代定义 用于提供独立的执行和 获取方式 应用方法 mount 所提供 DOM 元素的 innerHTML 将被替换为应用根组件的模板渲 染结果 unmount 卸载
  • java prepare_java中prepareStatement与createStatement的区别

    首先来看两段代码 第一个使用createStatement 1 public void delete intid 2 try 3 Connection c DBUtil getConnection 4 Statement s c creat
  • Nginx之location匹配规则

    什么是location nginx就是通过拦截到的请求去对配置好的location块 location block 进行请求代理的 被代理的URL去对location后边的字符串 或正则 根据一定的规则进行匹配 然后执行对应location
  • 你是否曾质疑过DB-Engine的数据库排名?

    在谈论数据库的最新趋势时 我们习惯了参考DB Engine上所提供的排名信息 每当新的报告出来时 我们也时常看到各个媒体网站争先发布关于最新排名的分析内容 如标题所言 你是否曾质疑过DB Engine所给出的这份排名 如下是2018年3月份
  • php后台接收blob文件流,php – 我们如何访问服务器中的文件blob?

    在上传大于maxChunkSize的文件时 我们如何在服务器中单独访问每个上传的文件blob 我的问题是我需要使用后端api将上传的文件在单独的blob中转发到不同的服务器 到目前为止 看看wiki 对于1 mb的块 我在js中添加了以下内
  • Python logging将日志输出到Kafka

    Python logging用于输出Python程序运行的日志 现实中往往一个项目会部署在多台机器之上 这种情况下 为了方便对各主机运行日志进行收集 往往会使用消息队列 通过消息队列将各台机器上的日志收集并写入日志文件 本文使用Python
  • linux库概念及其编程

    分文件编程案例 好处 分文件编程思想 功能责任划分 方便调试 主程序简洁 例子 demo c include
  • 在外包做了3年,离职后成功入职字节跳动....

    最近换了份工作 当时和群里的朋友也聊过换工作的话题 他们都觉得这是一次非常冒险的行为 说我这是一次豪赌 成了会有更好的职业发展 没成可能就会出现两三年的发展断层 甚至影响职业生涯路径 一步错 步步错 我当时也仔细的考虑过了 的确有很大的风险
  • STM32标准IIC驱动

    IIC Inter Integrated Circuit 总线是一种由 PHILIPS 公司开发的两线式串行总线 用于连接 微控制器及其外围设备 也是目前很流行的通讯总线 使用IIC总线做产品能够很大程度上降低PCB的布线难度 以及布线数量
  • fio使用good blog

    Linux应用 磁盘IO读写测试工具 FIO详解 协议森林的博客 CSDN博客 fio读写测试 编译安装 常用参数 实例 结果说明 SSD测试第一神器 FIO 磁盘IO体系架构与存储解决方案 pudn com 磁盘性能指标 IOPS与吞吐量