利用iozone和fio跑分工具进行ITSS标准存储设备性能测试

Posted on

利用iozone和fio跑分工具进行ITSS标准存储设备性能测试。

什么是ITSS

ITSS(Information Technology Service Standards)信息技术服务标准,是在工业和信息化部、国家标准化委的领导和支持下,由ITSS工作组研制的一套IT服务领域的标准库和一套提供IT服务的方法论。

ITSS标准存储测试指标

  • 使用iozone benchmark工具测试存储的随机读写速度
  • 使用fio benchmark工具测试存储的随机IOPS(I/O per second)

测试工具安装

为了达到最优测试效果,所有工具推荐使用编译安装。

安装iozone

1. 下载iozone源码包:http://www.iozone.org/src/current/iozone3_484.tar(当前版本V3.484)

2. 上传源码并解压:

$ tar -xvf iozone3_484.tar

3. 进入安装目录,在其中新建一个results文件夹,用于存放测试结果:

$ mkdir results

4. 编译安装:

$ cd src/current
$ make linux

此处编译的版本为Linux-amd64,需要根据测试机的操作系统选择不同的版本。

安装fio

1. 下载fio源码包:https://github.com/axboe/fio/releases(当前版本V3.12)

2. 上传源码并解压:

$ tar -xvzf fio-3.12.tar.gz

3. 编译配置文件:

$ ./configure

4. 编译安装:

$ make
$ make install

测试方式

iozone测试随机读写速度

进入到./src/current目录中,执行如下跑分命令:

$ ./iozone -Rab /results/results.xls -i 0 -i 2 -s 16g -r 16m -f /test/tmpfile

参数说明:

  • -Rab:生成excel文件。“-a”表示自动模式,“-b”指定生成的excel报告文件名(即results.xls,位于../../results中)
  • -i:测试类别。此处指定了两轮随机读写测试
  • -s:测试文件的大小。建议为16GB以上,过小的测试文件可能会直接命中读写缓存,造成数值偏高
  • -r:测试文件的块大小。此处为16MB(大文件块,小文件块测试为1024K)
  • -f:测试文件的存放路径。根据实际磁盘挂载情况修改
fio测试随机IOPS

发起随机写操作:

$ fio -name=/mnt/sdc/tmpfile -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=16k -size=16G -numjobs=1 -group_reporting -runtime=600

发起随机读操作:

$ fio -name=/mnt/sdc/tmpfile -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=16k -size=16G -numjobs=1 -group_reporting -runtime=600

参数说明:

  • -direct:是否跳过缓存直接进行IO操作。测试时应选择“1”,以免造成数值偏高
  • -iodepthIO:队列深度。范围为1~32,默认为32
  • -ioengine=libaio:使用libaio异步IO库作为引擎
  • -bs:测试文件的块大小。默认为16K
  • -size:测试文件的大小。此处为16G
  • -rw:指定测试类别。支持的模式有:write/read/rw/randwrite/randread/randrw(即:顺序读写及随机读写)。

注:对于实际业务场景而言,一般随机读写性能更具有参考价值。

测试结果数据说明

1. 对于iozone的测试结果,需要关注项目:random readrandom write(单位为KB/s)。数值越高性能越好。

2. 对于fio的测试结果,需要关注项目:Jobs:1 ... write/read: io= ... iops=XXXX(单位为个)。数值越高性能越好。

END