一、Fio基本介绍
Fio介绍:FIO(Flexible I/O Tester)是一个用于测试磁盘、文件系统、块设备和网络设备性能的工具。它可以模拟不同类型的I/O负载,包括随机或顺序读写、混合读写、随机或顺序访问等。FIO提供了丰富的选项和参数,可以对测试进行高度定制化配置,以满足各种应用场景和需求。FIO是开源软件,可在Linux、Unix、Windows等多种平台上运行
二、基本操作
需要在虚拟机里面安装fio文件,但是虚拟机不能直接连接外网,也不能通过rz上传文件,所以想到的办法就是将fio文件在本地下载下来,然后做成iso镜像,之后将这个镜像做成本地盘,将这个本地盘挂载到虚拟机上,就能够查看fio文件了
1、下载fio文件,通过官网获取
2、将fio文件做成iso镜像,需要采用UltralSO工具,将fio.tar.gz文件做成镜像
3、登陆到虚拟机所在的宿主机上,通过rz 将iso镜像文件上传到计算节点上,之后挂载到对应的虚拟机上
4、到虚拟机里面查看对应的fio文件
截止到目前,将fio文件上传到虚拟机里面
5、在进行性能测试的时候,发现fio异步任务的时候,需要安装libaio这个包,所以也需要下载这个包,可以找同事要这个包,也需要上传到虚拟机里面
三、安装fio
1、安装fio之前,需要先安装libaio
rpm -ivh libaio.rpm --nodes --force
2、安装fio文件
tar -zxvf fio.tar.gz
cd fio
./configure
make
make install
在进行make安装的时候可能会报错,报错信息如下,在对应的文件里面添加【#include<sys/sysmacros.h>】
之后执行fio命令是否能够成功来确认fio是否安装成功
四、进行fio性能测试
fio总共有100+个参数,很多参数我们用不到,下面选择性能测试中一些常用的参数进行说明。
首先来看一条fio命令:
fio -name=test -filename=testfile -group_reporting -iodepth=16 -ioengine=gfapi_async -volume=vol_rep2 -nrfiles=1 -rw=randwrite -bs=4k -size=1G -threads -numjobs=1 -direct=1
该命令式在挂载点下随机写一个1G的文件,测试挂载点的性能,具体参数的意义如下:
-name: 用于输出信息用的名字,在上述命令行的使用方法中,表明一个新job的开始,缺省为job name
-filename: 测试文件名称,通常选择需要测试的盘的data目录
-group_reporting:汇总所有的信息,而不是每个job都显示具体的结果
-iodepth:本次测试的队列深度
-ioengine:负载产生的引擎,定义job向文件发起io的方式。Fio的引擎有很多,具体可以网上搜一下,常用的引擎为libaio 和 gfapi_async,测试过程中,如果要模拟api的方式测试挂载点的性能则用gfapi_async,测试裸盘或其他块设备性能时,选用libaio即可。
-nrfiles:每个进程生成的文件数量
-rw: 读写方式,顺序读,顺序写,随机读,随机写,混合读写
-bs: 块大小,一般测试4k, 8k, 64k, 128k, 1M
-size: 测试文件的大小
-threads:fio默认会使用fork()创建job,如果这个选项设置的话,fio将使用pthread_create来创建线程
-numjobs:创建的线程数量
-direct: 测试过程绕过机器自带的buffer,使得测试结果更加真实
-runtime:测试时长
-bssplit=4k/40:64k/30:1M/30: 混合块大小,4k:64k:1M = 4:3:3
bsrange=512-2048:块大小的范围,同bs参数
-rw=randrw, -rwmixread=70:混合读写7:3
五、测试报告
一般关注的指标包括bw、iops、util这些指标,数值越高性能越好