FIO 是一款 用于对磁盘进行性能测试的工具。可以测试IOPS,吞吐量,IO延迟等主要性能指标,而且支持多种IO引擎。FIO支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。由于目前主要做ceph的项目,所有搜索引擎主要使用rbd,下面的例子也主要针对ceph集群的测试使用。
FIO的下载与安装
FIO可以在yum上直接下载安装,也可以在http://brick.kernel.dk/snaps/下载对应的版本进行编译安装。使用编译安装的步骤如下:
1 | 下载按包装包 |
使用yum方式的可以直接yum安装
1 | yum install fio-2.1.2-1.el6.rf.x86_64.rpm |
FIO参数说明
1 | filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。 |
fio的读写模式
1 | rw=read 顺序读 |
FIO文件
我们可以需要进行的测试的fio参数写入到*.fio文件中
1 | [global] |
[global]为通用配置项,stonewall是几个测试任务的分隔符
FIO测试实例
在ceph集群中进行测试
1 | fio -ioengine=rbd -rbdname=disk01 -clientname=admin -pool=rbd -rw=write -bs=400k -size=2G -iodepth=32 -numjobs=1 -group_reporting -name=file |
随机写测试
1 | fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest |
顺序写测试
1 | fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytes |
画图
fio安装完后自带有一个高级脚本fio_generate_plots能够根据fio输出的数据进行画图。
fio的输出日志主要包含三种:bw,lat和iops,设置这三种的参数如下:
1 | write_bw_log=rw |
后面接的参数rw,是输出日志文件名的prefix,如最终会生成的日志文件如下
1 | rw_iops.log |
如果生成的文件名为rw_bw.1.log,可以执行下面语句:
1 | for i in clat lat slat bw iops;do mv rw_$i.1.log rw_$i.log;done |
使用下面的命令即可自动画图:
1 | fio_generate_plots bw |