0


FIO磁盘性能测试工具

简介

一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。

但是用dd命令来测试性能,有如下问题:

\1. dd命令的IO模型单一,只能测试顺序IO,不能测试随机IO。

\2. dd命令可设置的参数较少,并且测试结果不一定能反映出磁盘的真实性能。

\3. dd命令的设计初衷就不是用例测试性能的,在dd的手册中可以看到。

\4. 无法设置队列深度,因此不推荐用dd命令来测试最大读IOPS。

因此,我们要使用更专业的磁盘性能测试工具来测试,目前主流的第三方IO测试工具有fio、iometer和Orion。

iometer 是Windows下使用方便,Orion是Oracle的IO测试软件,而FIO是我们比较常用的在Linux系统下(当然在Windows下安装cygwin也可以运行FIO)的IO系统Benchmark和压力测试工具,可以模拟不同IO场景下的IO负载。

FIO支持 13种不同的 I/O 引擎, 包括:sync,mmaplibaio, posixaio, SG v3, splice, null, network,syslet,guasi,solarisaio 等等。

根据实际业务的场景,一般将 I/O 的表现分为四种场景,随机读、随机写、顺序读、顺序写。FIO 工具允许指定具体的应用模式,配合多线程对磁盘进行不同深度的测试。

安装

FIO默认已经存在于yum仓库里,所以我们yum安装即可

yum install -y libaio-devel
yum install -y fio-3.7-2.el7.x86_64

运行格式

fio [options] [job options] <job file(s)>

工作原理

使用 FIO 工具测试硬盘性能,首先确定待模拟IO负载的IO参数,如I/O type,Block size,I/O engine,I/O depth,Target file/device等

然后需要编写一个作业(命令行或者脚本job file)来预定义 FIO 将要以什么样的模式来执行任务。

作业中可以包含任意数量的线程或文件,一个作业的典型模式是定义一部分的全局共享参数global 段和一个(或多个)作业的job 段实体对象(即硬盘)。

运行 FIO 作业时,FIO 会自上而下解析作业中的配置,并做相应的调整去执行任务。

测试完成后,输出测试结果,对FIO测试结果进行分析,评估IO系统的设计或优化方案或确定debug思路。

FIO 中的常用选项如下 filename: 支持文件系统或者裸设备(硬盘或分区),-filename=/dev/sda2 或 -filename=/tmp/fio_read_test.txt 或 -filename=/dev/sda direct: 1表示测试过程绕过机器自带的buffer,相当于o_direct,0表示使用bufferio runtime:测试时长,单位秒,如果不写则直接写5GB文件 time_based: 如果在runtime指定的时间还没到时文件就被读写完成,将继续重复直到runtime时间结束,加上这个参数防止job提前结束。 size: 向硬盘中写入/读取测试文件的大小,可以是绝对值MB,KB,GB,也可以是百分比,占所测磁盘的百分比%, group_reporting:汇总所有的信息,而不是每个job都显示具体的结果 thread:fio默认会使用fork()创建job进程,如果这个选项设置的话,fio将使用pthread_create来创建线程 numjobs:创建的线程或进程数量,建议等于 CPU 的 core 值,,如果要测试吞吐量,那么numjobs要设置小一点 rw: 读写方式,顺序读read,顺序写write,随机读randread ,随机写randwrite,混合读写randrw,如果要测试吞吐量,需要设为顺序读read,顺序写write rwmixread:70,混合读写7:3 ,配合rw = randrw rwmixwrite:30 在混合读写的模式下7:3 bs: 单次io的块大小,一般测试4k, 8k, 64k, 128k, 1M bsrange: =512-2048 同上,提定数据块的大小范围 allow_mounted_write:允许虚拟机写入 ioengine:FIO 工作时使用的引擎。引擎决定了使用什么样的 I/O,同步模式、异步模式,如果要使用libaio引擎,需要yum install -y libaio-devel包,要使用异步模式引擎才能设置iodepth iodepth:I/O 引擎如果使用异步模式,要保持多少的队列深度,没有设置则使用操作系统默认队列深度,如果要测试吞吐量,那么iod


本文转载自: https://blog.csdn.net/lingshengxiyou/article/details/128839575
版权归原作者 lingshengxiyou 所有, 如有侵权,请联系我们删除。

“FIO磁盘性能测试工具”的评论:

还没有评论