FIO

文章目录

  • FIO
    • 什么是FIO
    • FIO安装方法
      • git下载安装
      • yum命令
    • fio的使用
      • 常见参数
        • filename
        • direct
        • rw
        • bs
        • bsrange
        • size
        • numjobs
        • runtime
        • name
        • ioengine
          • libaio
        • rwmixwrite
        • group_reporting
        • thread
        • iodepth
        • lockmem
        • zero_buffers
        • nrfiles
    • 磁盘读写常用测试点
      • fio测试顺序写
        • 为什么要测试不同大小的块大小
      • fio随机测试随机写
      • fio测试顺序读
      • fio测试随机读
      • fio混合随机读写
    • 监控磁盘io命令
      • rrqm/s
      • wrqm/s
      • r/s
      • w/s
      • rMB/s
      • wMB/s
      • avgrq-sz
      • avgqu-sz
      • await
      • svctm
      • %util
    • fio测试结果参数说明

什么是FIO

可以在文件上工作,也可以在块上工作 与dd作用相似
FIO可以显示各种IO性能

FIO安装方法

git下载安装

git clone https://github.com/axboe/fio.git
# cd fio/
# ./configure
# make
# make install

yum命令

yum install fio

fio的使用

常见参数

filename

filename=/dev/emcpowerb
支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb

direct

direct=1
测试过程绕过机器自带的buffer,使测试结果更真实

rw

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

bs=4k
单次io的块文件大小为4k

bsrange

bsrange=512-2048
同上,提定数据块的大小范

size

size=5g
本次的测试文件大小为5g,以每次4k的io进行测试

numjobs

numjobs=30
本次的测试线程为30

runtime

runtime=1000
试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止

name

name=jobname
测试的任务名字

ioengine

ioengine=psync
io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel

libaio

libaio是linux本地异步IO

rwmixwrite

rwmixwrite=30
在混合读写的模式下,写占30%

group_reporting

group_reporting
关于显示结果的,汇总每个进程的信息

thread

thread
使用pthread_create创建线程,开销比fork创建进程小

iodepth

iodepth=8
队列深度为8 详解看下面链接blog.csdn.net/qq_40442753/article/details/109848776

lockmem

lockmem=1g
只使用1g内存进行测试

zero_buffers

zero_buffers
用0初始化系统buffer

nrfiles

nrfiles=8
个进程生成文件的数量

磁盘读写常用测试点

  1. Read=100% Ramdon=100% rw=randread (100%随机读)
  2. Read=100% Sequence=100% rw=read (100%顺序读)
  3. Write=100% Sequence=100% rw=write (100%顺序写)
  4. Write=100% Ramdon=100% rw=randwrite (100%随机写)
  5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30
    (70%顺序读,30%顺序写)
  6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30
    (70%随机读,30%随机写)

fio测试顺序写

向/dev/sda 使用顺序写入1100GB块大小2M 使用标准输入 队列深度为8 线程为1 结果输出到/tmp/100S100W 任务名为100S100W 使用异步io引擎

 fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sda -ioengine=libaio -direct=1 -blocksize=2M -size=1100GB -rw=write -iodepth=8 -numjobs=1

参数解释
-output 输出运行结果到/tmp/100s100w
-name 测试名100S00W
-filename 测试的文件名 /dev/sda
-ioengine=libaio io引擎使用 libaio引擎,需要yum install libaio-devel包
-direct=1 测试过程绕过机器自带的buffer,使测试结果更真实
-blocksize=2M 测试块大小2M
-size=1100GB 测试总大小1100GB
-rw=write 测试顺序写
-iodepth=8 测试队列深度
-numjobs=1 每个任务开一个线程

--output-format 输出格式有三个参数:normal terse json 默认是normal,在自动化脚本中使用terse或者json会方便些

为什么要测试不同大小的块大小

为了测试不同大小的写入情况,需要测试出小文件的存储性能以及大文件的存储性能

fio随机测试随机写

向/dev/sdb /dev/sdc /dev/sdd 随机写入1100GB块大小2M 使用标准输入运行时间1800s(半小时) 队列深度为8 线程为1 结果输出到/tmp/100S100W 任务名为100S100W 使用异步io引擎 日志格式为bw_log

fio -output=/tmp/100R100W -name=100R100W -write_bw_log=bw_log -filename=/dev/sdb:/dev/sdc:/dev/sdd  -ioengine=libaio -direct=1 -blocksize=2M -size=1100GB -runtime=1800 -rw=randwrite -iodepth=8 -numjobs=1

参数解释:
-output输出结果到/tmp/100R100W
-name 任务名100R100W
-write_bw_log=bw_log 日志个bw_log
-filename=/dev/sdb:/dev/sdc:/dev/sdd 测试文件/dev/sdb:/dev/sdc:/dev/sdd 不同文件用:隔开
-runtime=1800 运行时间1800s,如果程序执行超过1800s就停止 一般是预测时间,,在不知道测试设备时,要写入大文件时可能耗时特别长,在超时没写完时候退出也可以拿到性能指标
-ioengine=libaio io引擎
-direct=1 直接写u人
-blocksize=2M 块大小2M
-size=3356GB 总写入大小3356GB
-rw=randwrite 随机写
-iodepth=8 队列深度8
-numjobs=1 每个线程运行1个任务

fio测试顺序读

向/dev/sda顺序读取 读取块大小2M 测试时间为1800s 输出日志是/tmp/100S100W 任务名称100S100W 使用标准输入 使用异步io 文件深度为8 线程数1

fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sda -ioengine=libaio -direct=1 -blocksize=2M  –runtime=1800 -rw=read -iodepth=8 -numjobs=1

fio测试随机读

向/dev/sdb /dev/sdc /dev/sdd 随机读取 读取块大小2M 测试时间为1800s 输出日志是/tmp/100S100Wsdbsdcsdd 任务名称100S100W 使用标准输入 使用异步io 文件深度为32 线程数1 开启bw_log lat_log日志记录

fio -output=/tmp/100S100Wsdbsdcsdd -name=100S100W -write_bw_log=bw_log -write_lat_log=lat_log -filename=/dev/sdb:/dev/sdc:/dev/sdd -ioengine=libaio -direct=1 -blocksize=2M -runtime=1800 -rw=randread -iodepth=32 -numjobs=1

fio混合随机读写

向/dev/sdb /dev/sdc /dev/sdd 混合随机读取 读取或写入块大小2M 读取占比70 写入占比30 测试时间为1800s 输出日志是/tmp/100S100W 任务名称100S100W 使用标准输入 使用异步io 文件深度为32 线程数1 开启bw_log lat_log日志记录

fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sdb:/dev/sdc:/dev/sdd -ioengine=libaio -direct=1 -blocksize=2M -runtime=300 -rw=randrw -rwmixread=70 -rwmixwrite=30 -iodepth=32 -numjobs=1

监控磁盘io命令

监控磁盘IO命令:

iostat –mx 1

iostat的安装方法:yum install sysstat
参考:blog.csdn.net/MrSate/article/details/104421383

avg-cpu: %user %nice %system %iowait %steal %idle
12.74 0.00 8.95 0.04 0.00 78.27
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 0.18 10.05 0.31 7.67 0.01 0.07 18.77 0.00 0.28 0.14 0.11
sdb 0.69 0.10 15.74 11.21 0.17 2.45 190.77 0.34 12.10 0.23 0.63
sdc 0.43 0.06 9.58 5.94 0.13 1.20 176.32 0.03 1.70 0.16 0.25

rrqm/s

rrqm/s
每秒合并读操作的次数

wrqm/s

wrqm/s
每秒合并写操作的次数

r/s

r/s
每秒读操作的次数

w/s

w/s
每秒写操作的次数

rMB/s

rMB/s
每秒读取的MB字节数

wMB/s

wMB/s
每秒写入MB字节数

avgrq-sz

avgrq-sz
每个IO的平均扇区(512字节)数 块大小

avgqu-sz

avgqu-sz
平均未完成的IO请求数量

await

await
平均每个IO所需要的时间

svctm

已经废弃, 没有实际参考价值

%util

%util
工作时间或者繁忙时间占总时间的百分比

fio测试结果参数说明

io=执行了多少M的IO
bw=平均IO带宽
iops=IOPS每秒执行了多少次IO操作(读写都算内)吞吐量单位是MB,而IOPS是次数,在测试小文件时候要频繁打开(文件响应时间),会导致数值低,这个值比重大
runt=线程运行时间
slat=提交延迟
clat=完成延迟
lat=响应时间
文件响应时间:是用户从下放请求到,处理请求所响应时间,单位一般是ms,单个文件不好测试,一般用多个文件一起测试
bw=带宽
cpu=利用率
IO depths=io队列
IO submit=单个IO提交要提交的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=磁盘利用率
样例:

任务的名称是perf
groupid=0 进程组 0
jobs=1 线程 1
err=0 错误数 0
pid=2992 进程号 2992

写入测试结果

最快响应时间min
最慢响应时间max
平均响应时间avg

bw带宽

lat:
2ms响应占0.01%
1ms站0.01%

合并起来求平均值得出响应时间

CPU:
用户占用情况 系统占用情况

深度设置看所设置参数,图中参数设置深度为5 所以深度4之后的文件分布情况都是0%

文件系统性能测试工具 FIO工具相关推荐

  1. 磁盘测试工具FIO工具安装和使用方法

    一.FIO工具安装: 1.查看fio是否安装 rpm –qa|grep fio 2.源码安装(2.3.4任选一个,推荐方法:3.rpm 的二进制安装) 官网地址:http://freecode.com ...

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

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

  3. 性能测试工具_磁盘性能测试工具fio

    1.磁盘性能测试工具FIO FIO是常见的磁盘性能测试工具,使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试. 一般使用以下指标衡量硬盘的性能: IOPS:每秒读/写次数,单位为 ...

  4. Linux文件系统性能测试工具fdtree和iozone

    Linux Magazine用了四篇文章(第一部分,第二部分)介绍了两个Linux文件系统性能测试工具,fdtree和iozone.fdtree比较少听说,它可以测ext3, ext4, nilfs2 ...

  5. 磁盘性能测试工具-FIO的安装及使用

    文章目录 FIO介绍 FIO安装 在线安装 离线安装 磁盘测试 命令行方式 测试结果说明 命令参数说明 配置文件方式 dd命令介绍 使用方法 FIO介绍 FIO是一款测试IOPS的工具,用于对磁盘进行 ...

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

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

  7. Linux IO 测试工具 fio命令

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

  8. 1 Linux系统性能测试与监测工具汇总

    综合能力 性能测试([Unixbench]) [root@localhost] $ ./Run 计算 查看当前CPU负载(uptime) [root@localhost] $ uptime 测试单cp ...

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

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

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

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

最新文章

  1. sar sensor传感器的作用_传感器攻防战-惯导IMU
  2. “国家使命”图书第一批权威发布
  3. 度量学习_使用Dropwizard度量标准监视和测量无功应用
  4. Python 多进程/Event 重复使用唤醒
  5. 通用扩展函数--类型转换
  6. 矩阵的特征值、特征向量
  7. Tomcat Filter 自己动手实现
  8. linux内存的优化大师,Linux性能优化大师(调整操作系统参数)
  9. 营销理论模型:4P、STP理论、SWOT图解
  10. PHP实现DES加密、解密
  11. 【HTML】人生苦短, 快卷快卷 第二课 HTML 基础
  12. 安装Photoshop后,打开方式里没有“Photoshop”选项的解决办法
  13. JavaScript原型链实现继承
  14. TM4C12x学习笔记(1)-初识TM4C12x
  15. 数据库服务的运行与登录
  16. python数据挖掘课程 十.Pandas、Matplotlib、PCA绘图实用代码补充
  17. 市场分析-全球与中国纳米复合太阳能电池市场现状及未来发展趋势
  18. 【雷达通信】合成孔径雷达(SAR)的点目标仿真matlab源码
  19. 企业专属人才库的建立
  20. Python全栈开发零基础学习通关秘籍:2018新手入门指南

热门文章

  1. LAYUI 树形表格(tree table)
  2. 怎么用计算机算钱,亚马逊fba费用计算器要怎么使用?
  3. C++ 模拟鼠标键盘操作
  4. Ubuntu 18.04 LTS版本 GoldenDict安装与配置
  5. java+mysq 基于jsp825幼儿园管理系统(java,web)
  6. Java基础—封装继承多态(详细)
  7. 怎么把flac转换成ogg格式
  8. 消费贷之京东白条、蚂蚁花呗和银行信用卡的那些分期“低费率”套路
  9. 电路分析之《变压器》
  10. 粒子群算法求解二元函数极值-附带800字程序说明