前言

环境:centos7.9 fio-2.1.10.tar.gz
fio是一款优秀的磁盘IO测试工具,在Linux中比较常用于测试磁盘IO,其下载地址:https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz或者登录其官网:http://freshmeat.sourceforge.net/projects/fio/ 进行下载。

fio的安装

下载 fio-2.1.10.tar.gz并上传到服务器
[root@iflytek fio-2.1.10]# tar -xzvf fio-2.1.10.tar.gz -C /usr/local/  #解压文件
[root@iflytek fio-2.1.10]# cd /usr/local/fio-2.1.10
[root@iflytek fio-2.1.10]# ./configure                                 #预编译
[root@iflytek fio-2.1.10]# make -j 4                                   #编译,-j 4表示开启4个内核进行并行编译
[root@iflytek fio-2.1.10]# make install                                    #安装

使用fio进行磁盘I/O测试

先来认识一些概念性的名称:
IOPS (Input/Output Per Second):指单位时间内系统能处理的I/O请求数量,即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。
数据吞吐量(Throughput):指单位时间内可以成功传输的数据数量。

fio 常用参数:

-filename=/opt/test.file #指定需要测试的磁盘或者文件名,可以通过冒号指定多个文件,filename=/dev/sda:/data/fio/test_file,如果指定的是磁盘,只用写磁盘名就可以,不用写分区号
-name=test_fio_randrw   #指定测试任务job名
-direct=1                #表示测试过程绕过机器自带的buffer,使测试结果更真实
-rw=randread|randwrite|randrw|read|write|rw  #表示随机读|随机写|随机读写|顺序读|顺序写|顺序混合读写的I/O
-bs=4k                   #表示单次io的块文件大小为4k
-bsrange=512-2048        #表示同上,提定数据块的大小范围
-size=5g                 #表示本次的测试文件大小为5g,以每次4k的io进行测试
-numjobs=10              #表示开启10个线程进行测试
-runtime=1000            #表示测试时间为1000秒
-ioengine=psync          #表示io引擎使用pync方式
-rwmixread=30            #表示在混合读写的模式下,读占30%
-rwmixwrite=30           #表示在混合读写的模式下,写占30%
-group_reporting         #表示关于显示结果的,汇总每个进程的信息此外
-lockmem=1g              #表示只使用1g内存进行测试
-zero_buffers            #表示用0初始化系统buffer
-nrfiles=8               #表示每个进程生成文件的数量
-iodepth 1               #测试队列深度
[root@iflytek fio-2.1.10]# fio -filename=/opt/test.file -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=100M -numjobs=10 -runtime=100 -group_reporting -name=test_r_w
test_r_w: (g=0): rw=randrw, bs=4K-4K/4K-4K/4K-4K, ioengine=psync, iodepth=1
...
fio-2.1.10
Starting 10 threads
test_r_w: Laying out IO file(s) (1 file(s) / 100MB)
Jobs: 8 (f=8): [mmm__mmmmm] [96.8% done] [25013KB/11297KB/0KB /s] [6253/2824/0 iops] [eta 00m:01s]s]
test_r_w: (groupid=0, jobs=10): err= 0: pid=7591: Sun Dec 12 16:55:19 2021read : io=717120KB, bw=23915KB/s, iops=5978, runt= 29986msec      #IO表示执行了多少M的IO,bw表示平均IO带宽clat (usec): min=162, max=17094, avg=1178.92, stdev=701.84lat (usec): min=162, max=17094, avg=1179.36, stdev=702.21clat percentiles (usec):|  1.00th=[  338],  5.00th=[  462], 10.00th=[  556], 20.00th=[  692],| 30.00th=[  804], 40.00th=[  908], 50.00th=[ 1012], 60.00th=[ 1144],| 70.00th=[ 1304], 80.00th=[ 1528], 90.00th=[ 1960], 95.00th=[ 2384],| 99.00th=[ 3824], 99.50th=[ 4576], 99.90th=[ 6560], 99.95th=[ 7584],| 99.99th=[ 9920]bw (KB  /s): min= 1392, max= 3704, per=10.11%, avg=2418.72, stdev=342.28write: io=306880KB, bw=10234KB/s, iops=2558, runt= 29986msecclat (usec): min=105, max=12777, avg=1072.56, stdev=649.07lat (usec): min=105, max=12777, avg=1073.19, stdev=649.29clat percentiles (usec):|  1.00th=[  262],  5.00th=[  394], 10.00th=[  486], 20.00th=[  620],| 30.00th=[  732], 40.00th=[  836], 50.00th=[  940], 60.00th=[ 1048],| 70.00th=[ 1192], 80.00th=[ 1400], 90.00th=[ 1752], 95.00th=[ 2160],| 99.00th=[ 3536], 99.50th=[ 4256], 99.90th=[ 6432], 99.95th=[ 7520],| 99.99th=[ 9536]bw (KB  /s): min=  560, max= 1728, per=10.10%, avg=1034.10, stdev=167.59lat (usec) : 250=0.31%, 500=7.66%, 750=18.97%, 1000=23.71%lat (msec) : 2=40.85%, 4=7.71%, 10=0.78%, 20=0.01%cpu          : usr=0.17%, sys=27.06%, ctx=263958, majf=0, minf=10IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%issued    : total=r=179280/w=76720/d=0, short=r=0/w=0/d=0latency   : target=0, window=0, percentile=100.00%, depth=1Run status group 0 (all jobs):READ: io=717120KB, aggrb=23915KB/s, minb=23915KB/s, maxb=23915KB/s, mint=29986msec, maxt=29986msecWRITE: io=306880KB, aggrb=10234KB/s, minb=10234KB/s, maxb=10234KB/s, mint=29986msec, maxt=29986msecDisk stats (read/write):dm-0: ios=179171/76705, merge=0/0, ticks=168275/63994, in_queue=233437, util=99.96%, aggrios=59760/25579, aggrmerge=0/2, aggrticks=56858/21618, aggrin_queue=78450, aggrutil=99.82%sda: ios=179281/76739, merge=0/6, ticks=170574/64856, in_queue=235351, util=99.82%sdb: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%sdc: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%
[root@iflytek fio-2.1.10]#

下面对fio的输出结果进行详细讲解:

  read : io=717120KB, bw=23915KB/s, iops=5978, runt= 29986msec#这一行表示读#io表示执行了多少M的io,bw表示平均io带宽,iops表示每秒的输入输出量,runt表示线程运行时间clat (usec): min=162, max=17094, avg=1178.92, stdev=701.84lat (usec): min=162, max=17094, avg=1179.36, stdev=702.21clat percentiles (usec):|  1.00th=[  338],  5.00th=[  462], 10.00th=[  556], 20.00th=[  692],| 30.00th=[  804], 40.00th=[  908], 50.00th=[ 1012], 60.00th=[ 1144],| 70.00th=[ 1304], 80.00th=[ 1528], 90.00th=[ 1960], 95.00th=[ 2384],| 99.00th=[ 3824], 99.50th=[ 4576], 99.90th=[ 6560], 99.95th=[ 7584],| 99.99th=[ 9920]#io延迟包括三种:slat,clat,lat,关系是lat=slat+clat;#slat表示fio submit某个I/O的延迟,称slat为提交延迟;#clat表示fio complete某个I/O的延迟,称clat为提交延迟;#lat表示从fio将请求提交给内核,再到内核完成这个I/O为止所需的相应时间,称lat为响应时间;#usec:微妙,msec:毫秒cpu          : usr=0.17%, sys=27.06%, ctx=263958, majf=0, minf=10#usr表示用户空间进程;#sys表示内核空间进程;

bw=带宽
cpu=利用率
IO depths=io队列
IO submit=单个IO提交要提交的IO数
IO complete=Like the above submit number, but for completions instead.
IO issued=The number of read/write requests issued, and how many of them were short.
IO latencies=IO完延迟的分布

io=总共执行了多少size的IO
aggrb=group总带宽
minb=最小平均带宽.
maxb=最大平均带宽.
mint=group中线程的最短运行时间.
maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.
merge=总共发生的IO合并数.
ticks=Number of ticks we kept the disk busy.
io_queue=花费在队列上的总共时间.
util=磁盘利用率

fio 磁盘I/O测试工具相关推荐

  1. Linux下磁盘IO读写测试工具-FIO详解

    FIO简介 FIO是Linux下开源的一款IOPS测试工具,主要用来对磁盘进行压力测试和性能验证. 它可以产生许多线程或进程来执行用户特定类型的I/O操作,通过编写作业文件(类似于k8s的yaml)或 ...

  2. fio模拟mysql写入速度_fio 测试工具

    一 何为fio 总之就是一个磁盘io的测试工具,支持多引擎和多系统测试,非常灵活和强大. 二 安装 Linux:yum install libaio-devel  依赖包安装 解压tar包 然后mak ...

  3. fio 是测试磁盘性能的最佳工具

    磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. fio 是测试磁盘性能的最佳工具: ddif=/dev/zero  of=/root/test bs=4kcount ...

  4. 【测试】linux FIO命令详解(一):磁盘IO测试工具 fio (并简要介绍iostat工具)

    目录 随看随用 FIO介绍 FIO 工具常用参数: fio工作参数可以写入配置文件 IO状态监控: Iostat介绍 与FIO相似的工具 fio测试脚本 提取iops和bw gunplot画图 Fio ...

  5. 【测试】 FIO:ceph/磁盘IO测试工具 fio(iodepth深度)

    目录 随看随用 NAS文件系统测试 块系统测试 FIO用法 FIO介绍 FIO 工具常用参数: FIO结果说明 I/O 的重放('录'下实际工况的IO,用fio'重放') fio工作参数可以写入配置文 ...

  6. linux FIO命令详解(一):磁盘IO测试工具 fio (并简要介绍iostat工具)

    FIO介绍 FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类.FIO是一个可以产生很多线程或进程并执行 ...

  7. Linux IO 测试工具 fio命令

    fio是测试IO的非常好的工具,用来对磁盘进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类.fio是一个可以产生很多线程或进程并执行用户指定的特定类 ...

  8. linux磁盘fio压力测试,fio命令 – 对磁盘进行压力测试和验证

    fio是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类.FIO是一个可以产生很多线程或进程并执行用户指定的特 ...

  9. fio 全称是flexible I/O tester(灵活的I/O测试工具)。可以根据用户指定I/O类型进行多线程/进程的I/O负载模拟。

    介绍 fio 全称是flexible I/O tester(灵活的I/O测试工具).可以根据用户指定I/O类型进行多线程/进程的I/O负载模拟. 安装部署 fio 是系统ISO自带的基础安装安装包,直 ...

  10. 服务器io测试工具-fio

    Fio 是一个 I/O 工具,旨在用于基准测试和压力/硬件验证.它支持 19 种不同类型的 I/O 引擎(sync.mmap.libaio.posixaio.SG v3.splice.null.net ...

最新文章

  1. Android开发之Navigationdrawer导航抽屉功能的实现(源代码分享)
  2. 【BZOJ3262】 陌上花开
  3. TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率
  4. Dirichlet Process and Stick-Breaking(DP的Stick-breaking 构造)
  5. 由于供不应求 部分新款Apple Watch机型推迟至11月交付
  6. springBoot操作数据库方式
  7. 多人麻将源码 html5,新版大众麻将 H5版
  8. 自定义网站地址栏图标
  9. 详解KITTI数据集
  10. 《沉默的大多数》 - 王小波
  11. windows10 安装php-cgi.exe为服务
  12. 【BZOJ3572】【Hnoi2014】世界树 虚树
  13. 视频教程-C语言核心编程-C/C++
  14. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制
  15. MATLB|基于粒子群算法的能源管理系统EMS(考虑光伏、储能 、柴油机系统)
  16. 斐讯N1安装armbian
  17. label标签 的使用与作用
  18. 八种酒吧里最IN喝酒法PartyOK版
  19. Bootstrap 响应式布局模板
  20. OpenStack Victoria搭建(一)简介

热门文章

  1. linux下安装共享软件,Linux 系统下各种包的安装方法分享
  2. [Swift]Array(数组)扩展
  3. 用双十一的故事串起碎片的网络协议(中)
  4. MYSQL SHOW VARIABLES简介
  5. jquery鼠标右键事件
  6. 数据结构学习笔记-树
  7. 面试题之请描述一下Java类加载过程
  8. String、StringBuilder、StringBuffer、StringConcatFactory
  9. SpringBoot项目文件上传
  10. Android开发之内容提供者ContentProvider