FIO

作者: jaymz明 | 来源:发表于2021-03-23 10:43 被阅读0次

FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。
常用参数:

filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 是否使用directIO,测试过程绕过OS自带的buffer,使测试磁盘的结果更真实。Linux读写的时候,内核维护了缓存,数据先写到缓存,后面再后台写到SSD。读的时候也优先读缓存里的数据。这样速度可以加快,但是一旦掉电缓存里的数据就没了。所以有一种模式叫做DirectIO,跳过缓存,直接读写SSD。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
bsrange=512-2048 同上,提定数据块的大小范围
size=5G 每个线程读写的数据量是5GB。
numjobs=1 每个job(任务)开1个线程,这里用了几,后面每个用-name指定的任务就开几个线程测试。所以最终线程数=任务数(几个name=jobx)* numjobs。
name=job1:一个任务的名字,重复了也没关系。如果fio -name=job1 -name=job2,建立了两个任务,共享-name=job1之前的参数。-name之后的就是job2任务独有的参数。
thread 使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=libaio 指定io引擎使用libaio方式。libaio:Linux本地异步I/O。请注意,Linux可能只支持具有非缓冲I/O的排队行为(设置为“direct=1”或“buffered=0”);rbd:通过librbd直接访问CEPH Rados
iodepth=16 队列的深度为16.在异步模式下,CPU不能一直无限的发命令到SSD。比如SSD执行读写如果发生了卡顿,那有可能系统会一直不停的发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫做队列深度。
Block Devices(RBD),无需使用内核RBD驱动程序(rbd.ko)。该参数包含很多ioengine,如:libhdfs/rdma等
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
此外
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
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%随机写)
    io=执行了多少M的IO

bw=平均IO带宽
iops=IOPS
runt=线程运行时间
slat=提交延迟,提交该IO请求到kernel所花的时间(不包括kernel处理的时间)
clat=完成延迟, 提交该IO请求到kernel后,处理所花的时间
lat=响应时间
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=磁盘利用率

一般说fdatasync第99个百分位数是否小于10ms,如果小于则表明存储速度够快。但是如果表现为略低于10ms,则也不能说存储好,因为还有其他的IO会消耗资源。

这意味着,至少由产生的负载 fio 必须是对文件的一系列顺序写入,其中每个写入都由 写入 系统调用和 fdatasync 系统调用组成。要获得顺序写入,您必须提供 fio flag --rw=write。要确保fio 使用write 系统调用(而不是其他系统调用(例如pwrite))进行 写操作, 请 使用 --ioengine=sync。最后,要确保每次 write fio 调用后都带有一个 fdatasync,请使用 --fdatasync=1。示例中的--size 和 两个其他参数 --bs可能会根据您的特定情况而有所不同。

相关文章

  • Win10 安装及使用 fio

    1. 啥叫 fio fio is an I/O tool meant to be used both for be...

  • linux使用FIO测试磁盘的iops

    FIO安装 wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gzy...

  • FIO

    FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情...

  • fio使用记录

    前文:理解FIO各项参数,为后续使用做准备经过:fio - flexible I/O testerFIO - 灵活...

  • Fio工具业余性研究(一)

    1.Fio背景 最近研究了一下fio工具的使用方法,主要针对2.2.9的使用方法做一些笔记。Fio是业内知名的io...

  • Android PGO Guide

    Part 1 采集数据 在fio的Android.bp加入下面的code. make fio ANDROID_PG...

  • 【转载】SSD测试第一神器——FIO

    转自:[http://www.ssdfans.com] 对于SSD性能测试来说,最好的工具莫过于FIO了。 FIO...

  • 使用 fio 进行 IO 性能测试

    网上关于 fio 的介绍已经太多了,要用的时候都是直接拿来就跑了,我们通常使用 fio -ioengine=li...

  • Fio工具业余性研究(三)

    1、背景 fio涉及到随机读、随机写的参数有这么几个,他们对fio的randwrite和randread时候随机的...

  • fio笔记

    fio安装 fio 3.21下载地址下载之后解压tar -xzvf,打开解压后的文件夹 CentOS 7 make...

网友评论

      本文标题:FIO

      本文链接:https://www.haomeiwen.com/subject/hnpkcltx.html