性能测试工具-fio

简介

作用:测试云硬盘的IOPS、吞吐量和时延

特点:

参数

-direct:设置为1时表示测试时忽略I/O缓存,测试结果更真实

-iodepth:测试的IO深度,即每次会给磁盘的IO请求数,如1

-rw:测试时的读写策略,可以设置为:随机写(randwrite)、随机读(randread)、顺序读(read)、顺序写(write)、混合随机读写(randrw)

-ioengine:设置值为libaio时,表示测试方式为libaio(Linux AIO,异步I/O)。应用程序使用I/O通常有两种方式: 同步(psync):同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用16−32根线程同时工作将iodepth塞满。异步 (libaio) :异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。

-bs:表示单次I/O的块文件大小,,如4k,未指定该参数时的默认大小是4 KB。测试IOPS时,建议将bs设置为一个比较小的值,如4k。测试吞吐量时,建议将bs设置为一个较大的值,如本示例中的1024k

-size:表示测试文件大小,如1G

-numjobs:表示测试线程数,如1

-runtime:表示测试时间,如600s。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完

-group_reporting:不需要设置值,表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息

-filename:指定测试文件的名称,比如iotest。测试裸盘可以获得真实的硬盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份

-name:表示测试任务名称g,可以随意设定,比如IOPS_Test

使用

安装

fio官网下载地址下载,下载后安装两个依赖包

yum下安装

yum -y install libaio*
yum -y install zilb*
若有使用gfio,则
yum -y install gtk2
yum -y install gtk2-devel
并在./configure加入–enable-gfio

编译安装

tar -xvf fio-2.x.x.tar.gz
cd fio-2.x.x
./configure
make
make install

执行

如测试文件创建在/home/下,单词I/O块大小为4k,总共测试数据为10G,并发数为10,测试时间为10分钟

fio -filename=/home/ -direct=1 -iodepth 1 -rw=read -ioengine= libaio -bs=4k -size=10G -numjobs=10 -runtime=600 -group_reporting -name=read-4k >read-4k.log

fio脚本

待补充,可参考