简介
一般我们测试硬盘或者存储的性能的时候,会用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,mmap, libaio, 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思路。文章来源:https://www.toymoban.com/news/detail-771289.html
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://www.toymoban.com/news/detail-771289.html
到了这里,关于FIO磁盘性能测试工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!