fio是一种I / O工具,用于基准测试和压力/硬件验证。它支持19种不同类型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),I / O优先级(适用于较新的Linux内核) ,评估I / O,分叉或线程作业等等。它可以在块设备和文件上工作。fio以简单易懂的文本格式接受职位描述。包含几个示例作业文件。fio显示各种I / O性能信息,包括完整的IO延迟和百分位数。Fio广泛用于许多地方,包括基准测试,QA和验证目的。它支持Linux,FreeBSD,NetBSD,OpenBSD,OS X,OpenSolaris,AIX,HP-UX,Android和Windows。

下载地址:

http://freshmeat.sourceforge.net/urls/3aa21b8c106cab742bf1f20d60629e3f

安装:

1. wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz

2. yum install libaio-devel

3. tar -zxvf fio-2.0.7.tar.gz

4. cd fio-2.0.7

5. yum install gcc

6. yum install librbd*

7. make

8. make install

用法:

fio的运行分为两种方式:1、fio  option   2、fio jobfile

方式一:

fio -filename=/dev/sdx -iodepth=1 -numjobs=1 -thread -rw=randwrite -bs=4k -ioengine=libaio -group_reporting -name=mytest

-randrepeat=0 -time_based -runtime=300 -direct=1

fio -direct=1 -iodepth=12 -rw=rw -ioengine=rbd -bs=4K -group_reporting -name=test -numjobs=4 -runtime=600

clientname=admin -pool=pool-4f54c712d0fc4ae494d924031cb0f81f -rbdname=volume-b54cffb2fe31417695d819bb40af4c6f

fio -thread -ioengine=libaio -group_reporting -name=mytest -randrepeat=0 -time_based -runtime=300 -direct=1

rwmixread=70 -filename=/dev/sdi:/dev/sdj -rw=randrw -bs=4k -numjob=1 --iodepth=128

参数解释:

-rw=read(100%顺序读) -rw=write(100%顺序写) -rw=randread(100%随机读) -rw=randwrite(100%随机写),

-rw=rw -rwmixread=70,混合顺序70%读30%写

-direct=1绕过内存 -iodepth 1队列长度

-thread -numjobs=30 线程,如果没有thread就是进程。

-runtime=10秒

-name=mytest 作业名称

-filename=指定测试设备

group_reportig 开启报告,要不然得单独统计每个线程 跑的结果

bs=4k ,指定测试粒度。

size=200GB,指定测试数据量。也可以不指定。

ioengine=libaio,指定测试引擎。

bssplit=blocksize/percentage;blocksize/percentage

bssplit=4k/10:64k/50;32k/40

­random_generator=str

方式二:

fio job_file

job_file内容:

job file格式采用经典的ini文件,[ ]中的值表示job name,可以采用任意的ASCII字符,‘global’除外,global有特殊的意义。Global section描述了job file中各个job的默认配置值。一个job section可以覆盖global section中的参数,一个job file可以包含几个global section.一个job只会受到它上面的global section的影响。‘;’和‘#’可以用作注释

两个进程,分别从一个从128MB文件中,随机读的job file.

[global]

rw=randread

size=128m

[job1]

[job2]

;–end job file–

job1和job2 section是空的,因为所有的描述参数是共享的。没有给出filename=选项,fio会为每一个job创建一个文件名,如果用命令写,则是:

$fio –name=global –rw=randread –size=128m –name=job1 –name=job2

环境变量

在job file中支持环境变量扩展。类似于${VARNAME}可以作为选项的值(在=号右边)。

实例:

$SIZE=64m  NUMJOBS=4 fio jobfile,fio

;–start job files–

[random-writers]

rw=randwrite

size=${SIZE}

numjobs=${NUMJOBS}

;–end job file–

一个job包含的基本的参数

1)IO类型

向文件发起的IO类型。

<1>readwrite=str,rw=str

read 顺序读

write 顺序写

randwrite 随机写

randread 随机读

rw,readwrite 顺序混合读写

randrw 随机混合读写

server/client

这两个参数涉及到fio的client/server模式

fio --server

然后此台fio进入server模式,默认打开8765端口,在另一台机器执行

fio --client=host jobfile

fio进入client模式,host指向server模式的机器,就可以实现将jobfile发送到server机器执行fio测试的任务。执行结果将返回client的机器。

verify数据校验

verify=meta     只verify header的crc32校验,不去verify后面的data区域,这是执行最快的一种verify。

verify = crc32   如果使用verify=crc32,整个4kb的数据会分为两个部分:

header部分:前40字节,其中最后4个字节是header的crc32校验

data部分:41~4096字节,其中最开始4个字节是data区域的crc32校验

在verify的时候,header是默认校验的,就是校验header的内容和header的crc校验,如果指定的verify=crc32,那么在校验header之后,还会校验data区域内容和data区域的crc

生成性能结果图片

fio_generate_plots 可以直接生成IO性能图片,通过yum可以直接安装该插件:yum install gnuplot

1.写成一个配置文件

使用方法如下:

[global]

runtime=60

time_based

group_reporting

write_bw_log=test_fio_statistics

[test]

filename=/dev/zd16

bs=4k

ioengine=libaio

rw=rw

numjobs=1

iodepth=160

rwmixread=0

fsync=10

通过write_bw_log 生成一个test_fio_statistics的文件。

2.第二步运行fio的作图工具:

fio_generate_plots test_fio_statistics.log

linux上安装fio教程,fio工具安装及使用相关推荐

  1. 2022年Android官方模拟器安装Xposed教程+测试工具PatDroid安装教程

    碎碎念:截至笔者写此教程的2022.10.10,xposed官网貌似已经G了(?),网上有的教程已经过时,有的是针对奇怪的商用的Android模拟器的教程(以科研工作者的角度来说),在此环境下出一篇A ...

  2. linux上常用命令及通用软件安装

    linux上常用命令及通用软件安装记录. 1, 查询检索 1.1 根据安装包的名字检索安装 rpm 命令: rmp 全称:redhat package manager 参数说明: -a 查询所有套件 ...

  3. ssh开启图形界面_分享|3 个 Linux 上的 SSH 图形界面工具

    了解一下这三个用于 Linux 上的 SSH 图形界面工具. 在你担任 Linux 管理员的职业生涯中,你会使用 Secure Shell(SSH)远程连接到 Linux 服务器或桌面.可能你曾经在某 ...

  4. linux命令行恢复回收站,Trash-Cli:Linux 上的命令行回收站工具

    原标题:Trash-Cli:Linux 上的命令行回收站工具 编译自: https://www.2daygeek.com/trash-cli-command-line-trashcan-linux-s ...

  5. 介绍linux上两种rootkits检测工具: Rootkit Hunter和Chkrootkit

    原贴:http://blog.csdn.net/linkboy2004/archive/2007/03/22/1537890.aspx 介绍linux上两种rootkits检测工具: Rootkit ...

  6. Anaconda:Anaconda安装图文教程及其tensorflow安装、运行、测试之最强详细攻略

    Anaconda:Anaconda安装图文教程及其tensorflow安装.运行.测试之最强详细攻略 导读 能够在进行深度学习之前把这些辅助工具Python.Anaconda.GPU.Tensorfl ...

  7. 【Fiddler Everywhere】史上最强抓包工具(安装 修改教程)

    一.Fiddler简介 Fiddler Everywhere 是啥? 从名称上来看,就大概能猜出它的寓意,官方也通过一段话,解释了Fiddler Everywhere的作用: Fiddler Ever ...

  8. 黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料

    图文教程悦享地址:点击打开链接 视频教程 B站地址:点击打开链接​ 一.准备工作 一个8G以上的U盘(有的U盘标的是8G,实际只有X,实际容量小于7.5G的会失败) MacOS镜像.TransMac( ...

  9. Ubuntu Linux 3D桌面完全教程 显卡驱动安装方法 compiz特效介绍

    [2011年5月7日更新] Ubuntu Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答. 本教程的从2008年至今,经历了三个重大版本的修改: 最早是一善鱼编写并 ...

最新文章

  1. IOS版添加phonegap-视频播放插件教程
  2. Access库的小问题
  3. curator分布式锁的基本使用
  4. Codeforces Round #673 (Div. 2)——待补 E
  5. 从青铜到王者的路线,java不同系统间数据同步
  6. Java DataInputStream skipBytes()方法与示例
  7. asp.net中有关URL的信息
  8. mysql和mongodb存储时间_MongoDB存储时间
  9. Python中 '==' 与'is' 以及它们背后的故事
  10. app传输数据到php,安卓app客户端和使用php的服务器端数据交互
  11. sammon映射 matlab实现,matlab编写的 32个降维程序
  12. C++类中的static数据成员,static成员函数
  13. python c++ socket 通信一个示例
  14. AHA加速器测试,安卓、IOS、windos、mac测试正常
  15. VS2013配置OpenGL
  16. TensorFlow-gpu安装和测试(TensorFlow-gpu1.14+Cuda10)
  17. Day2--安装MediaWiki搭建自己的个人百科
  18. 计算机网络按覆盖地域分为,计算机网络按其所覆盖的地域范围一般可分为________ 。...
  19. Open Judge 百练 1003 宿醉(C语言)
  20. 基于windows7的usb多点触控设备

热门文章

  1. iOS开发人员不容错过的10大工具
  2. ThreadLocal的练习代码
  3. HTML5简易在线画图工具
  4. BNUOJ 4358 左手定则 搜索
  5. 计算机网络读书笔记(1)
  6. springboot 整合 mongodb实现 批量更新数据
  7. 用 Python 语言来写游戏
  8. 微软Scott CIO也要代表公司拜访客户
  9. Atititi tesseract使用总结
  10. SharePoint 2013 Nintex Workflow 工作流帮助(六)