一、FIO工具简介
FIO测试是一种比较复杂的一项工具,可以设置的参数较多,也是测试人员常用的工具。注意:FIO 适用于所有型号的硬盘,但是测试时需要将客户的业务停止。
一般常见的FIO测试我们重点关注的是磁盘的IOPS、BMps、响应时间等,某些客户可能还关注IOPS的稳定性。对于通常情况下客户反馈过来的性能测试问题,如是单盘测试的情况,可以直接使用FIO测试与规格书来做相关的比对。
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
二、FIO工具下载
注意如果支持引擎是libaio,需要安装相应的支持包。点击如下工具下载;注意下载后先解压zip包,再上传linux环境下安装
libaio-devel-0.3.109-13.el7.x86_64.zip
三、FIO安装步骤
解压后进入目录,执行如下命令安装
./configure make && make install |
常用参数
fio -v #查看版本 fio –enghelp #查看fio支持的引擎,常用的libaio和rbd |
参数名 | 释义 | 取值 | 备注 |
–name | 测试用例名,命令行测试时必须指定 | ||
–filename | 测试文件、目录、设备名 | 多个目录或文件用:分隔 | |
–directory | 测试文件路径前缀,不指定时默认为当前目录 | 示例: /mntdir/seq_read/1M | |
–ioengine | 测试所用的io引擎 | 文件系统测试一般为libaio;卷测试一般为rbd | |
–direct | 是否禁用缓存 | 1,不使用缓存 | |
–rw | 读写模式, | read,顺序读 write,顺序写 rw,顺序混合 randwrite,随机写 randrw,随机混合 | |
— rwmixwrite –rwmixread | 随机读写时的读或写比例 | 混合读写时,2个参数只用其一 | |
–bs | 测试块大小,可接k,m单位 | 示例: 8k 1m | |
–size | 测试文件大小或比例,可接k,m,g,t单位 | 示例: 1M 1G 100% | 仅适用于文件系统测试 |
–numjobs | 测试线程数 | 不建议超过物理核心数 | |
–iodepth | io队列深度 | 示例: 16 | 超过32后性能提升不大,但时延会明显增加 |
— runtime | 测试运行时间,单位秒 | 300 | |
— ramp_time | 测试开始前的预热时间,单位秒 | 10 | |
–time_based | 是否以时间为基准 | 1,强制以时间为基准,即使未达到size大小测试也结束 | |
— group_reporting | 汇总报告结果 | 无 | |
— thread | 使用线程,减少系统开销 | 无 | |
–output | 结果输出目录,指定后不在屏幕输出 | ||
–pool | Ioengine=rbd时,指定存储池名 | ||
–rbdname | Ioengine=rbd时,指定卷名 |
四、测试要点
1.fio测试产生的文件需要手动清除。
2.读写混合测试时,读写测试结果是分开的,建议单次只测顺序或随机或混合情形下的读写。
3.fio也可以使用nohup后台执行,若通过output指定结果文件,则查看nohup.out查看测试结果。
4.numjobs和iodepth根据测试类型及测试机实际配置调整,并非越大越好。在性能已达瓶颈后,调高这2个参数,可能会导致时延明显增大。
未明确要求版本时,可使用fio-3.7版本。
命令示例:
fio -filename=/root/iopstest/test -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k
fio -filename=/root/iopstest/test -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k
五、测试结果
本次测试为NF5280M5本地SSD硬盘测试结果
读 135714 写16049
1.将测试的IOPS和BMps值与规格书中的做对比
规格书中的IOPS值是使用4k随机读写进行衡量的,这样可以最大程度的保证随机IO的并发,测试出更加准确的值。
2.规格书中BMps代表的是理论带宽值,此值是在顺序读写的时候进行的测试,所以理论上随机读写测试时的带宽会小于顺序读写。
注:IOPS:Input/Output Operations Per Second,即每秒的输入输出量(或读写次数),是一个用于存储设备性能测试的主要量测方式。
带宽:粗略的讲可以使用bs(条带宽度)与IOPS的值相乘即带宽值。