前提条件
已创建了文件系统,并已挂载至云主机。
说明
本文旨在指导性能测试方法,若要达到官网性能指标,建议使用多台云服务器进行测试。性能指标参见产品规格。
注意事项
不同云主机规格带宽限制不同,测试不同存储规格的文件系统要注意选择合适带宽的云主机,否则无法达到官网性能指标。建议规格如下:
参数
建议规格 CPU >=16核 内存 >=32GB 最大带宽 >=10Gbps 如果您所在资源池的云主机最大带宽无法达到文件系统带宽官网规格上限,需要开通多台云主机,并将测得结果求和即为最终的结果。
操作步骤
以root 用户登录云主机。
安装FIO测试工具。
Linux:
yum install fio -y
Windows: 可从FIO官网下载,建议安装到C盘,“C:\Program Files\ ”路径下。
3. 根据要测试的性能指标运行相应测试命令。
fio参数说明
参数 | 参数说明 |
---|---|
-name | 测试名称,用于在输出结果中区分不同的测试任务。例如-name=test - read - write 可以定义一个名为“test - read - write”的测试任务。 |
-ioengine | I/O引擎,用于指定产生I/O操作的底层机制。如-ioengine=libaio (Linux异步I/O库),不同的引擎会以不同的方式处理I/O请求,影响测试的效率和准确性。 |
-rw | 读写模式,用于确定测试是进行读操作、写操作还是混合读写操作。例如-rw=randwrite 表示随机写,-rw=randread 表示随机读,-rw=read 表示顺序读,-rw=write 表示顺序写,-rw=rw 表示混合读写。 |
-bs | 块大小,指定I/O操作的数据块大小,单位可以是字节(如4096表示4KB)。例如-bs=4k 表示数据块大小为4KB,它会影响测试的性能表现,不同的应用场景通常有对应的合适块大小。通常测试带宽时设置为1M,测试时延和IOPS时设置为4k。 |
-size | 测试文件大小,定义了测试所涉及的数据量大小。例如-size=1G 表示测试文件大小为1GB,用于评估存储设备在不同数据量下的性能。 |
-numjobs | 作业数量,指定同时运行的I/O作业数量。例如-numjobs=4 表示同时有4个I/O作业在运行,用于模拟多线程或多进程应用对存储设备的并发I/O操作。 |
-runtime | 运行时间,规定了测试的运行时长。例如-runtime=60 表示测试将持续运行60秒,可用于在不同时间尺度下评估存储设备的性能。 |
-group_reporting | 分组报告,当有多个作业(由-numjobs参数指定)同时运行时,会将所有作业的性能结果汇总报告,方便查看整体性能。 |
-directory | 测试文件所在目录,用于指定测试文件存放的位置。例如-directory=/data/test_dir 表示测试文件将在/data/test_dir目录下进行操作,可针对特定存储路径进行性能评估。 |
-rwmixwrite | 在混合读写(rw)模式下,指定写操作所占的比例,范围是0 - 100。例如-rwmixwrite=70 表示在混合读写测试中,写操作占总I/O操作的70%。 |
Linux性能测试
说明
性能测试命令中“-directory” 参数用于指定测试文件所在的目录,如“- directory=/data/test_dir”表示测试文件将会在/data/test_dir这个目录下生成并进行相关的 I/O 操作测试,请根据实际情况进行替换该目录。
顺序读带宽
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=read -bs=1M -size=1G -time_based -runtime=60 -name=fio-bands -directory=/mnt/sfs/test_fio -rate=150M -ramp_time=10
测试结果示例:
随机读带宽
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=1M -size=1G -time_based -runtime=60 -name=fio-bands -directory=/mnt/sfs/test_fio -rate=150M -ramp_time=10
测试结果示例:
顺序写带宽
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=write -bs=1M -size=1G -time_based -runtime=60 -name=fio-bands -directory=/mnt/sfs/test_fio -rate=150M -ramp_time=10
测试结果示例:
随机写带宽
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=1M -size=1G -time_based -runtime=60 -name=fio-bands -directory=/mnt/sfs/test_fio -rate=150M -ramp_time=10
测试结果示例:
混合读写带宽
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=rw –rwmixwrite=30 -bs=1M -size=1G -time_based -runtime=60 -name=fio-bands -directory=/mnt/sfs/test_fio -rate=150M -ramp_time=10
测试结果示例:
顺序读IOPS
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=read -bs=4k -size=1G -time_based -runtime=60 -name=fio-iops -directory=/mnt/sfs/test_fio -rate_iops=500 -ramp_time=10
测试结果示例:
随机读IOPS
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=4k -size=1G -time_based -runtime=60 -name=fio-iops -directory=/mnt/sfs/test_fio -rate_iops=500 -ramp_time=10
测试结果示例:
顺序写IOPS
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=write -bs=4k -size=1G -time_based -runtime=60 -name=fio-iops -directory=/mnt/sfs/test_fio -rate_iops=500 -ramp_time=10
测试结果示例:
随机写IOPS
fio -numjobs=10 -iodepth=32 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=4k -size=1G -time_based -runtime=60 -name=fio-iops -directory=/mnt/sfs/test_fio -rate_iops=500 -ramp_time=10
测试结果示例:
顺序读时延
fio -numjobs=10 -iodepth=1 -direct=1 -ioengine=libaio -sync=1 -rw=read -bs=4k -size=1G -time_based -runtime=60 -name=fio-latency -directory=/mnt/sfs/test_fio -rate_iops=1010 -ramp_time=10
测试结果示例:
随机读时延
fio -numjobs=10 -iodepth=1 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=4k -size=1G -time_based -runtime=60 -name=fio-latency -directory=/mnt/sfs/test_fio -rate_iops=1010 -ramp_time=10
测试结果示例:
顺序写时延
fio -numjobs=10 -iodepth=1 -direct=1 -ioengine=libaio -sync=1 -rw=write -bs=4k -size=1G -time_based -runtime=60 -name=fio-latency -directory=/mnt/sfs/test_fio -rate_iops=1010 -ramp_time=10
测试结果示例:
随机写时延
fio -numjobs=10 -iodepth=1 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=4k -size=1G -time_based -runtime=60 -name=fio-latency -directory=/mnt/sfs/test_fio -rate_iops=1010 -ramp_time=10
测试结果示例:
CIFS文件系统性能测试
说明
本文以将文件系统挂载到Z: 盘为例执行性能测试,请根据实际映射的盘符替换命令中的filename路径。
随机读带宽
.\fio.exe -numjobs=25 -iodepth=32 -direct=1 -ioengine=windowsaio -sync=1 -rw=randread -bs=1M -size=1G -thread -time_based -runtime=60 -name=fio-band -rate=150M -ramp_time=10 -filename="Z\:\targetfile"
测试结果示例:
随机写带宽
.\fio.exe -numjobs=25 -iodepth=32 -direct=1 -ioengine=windowsaio -sync=1 -rw=randwrite -bs=1M -size=1G -time_based -thread -runtime=60 -name=fio-band -rate=150M -ramp_time=10 -filename="Z\:\targetfile"
测试结果示例:
随机读IOPS
.\fio.exe -numjobs=25 -iodepth=32 -direct=1 -ioengine=windowsaio -sync=1 -rw=randread -bs=4k -size=1G -time_based -thread -runtime=60 -name=fio-iops -rate_iops=500 -ramp_time=10 -filename="Z\:\targetfile"
测试结果示例:
随机写IOPS
.\fio.exe -numjobs=25 -iodepth=32 -direct=1 -ioengine=windowsaio -sync=1 -rw=randwrite -bs=4k -size=1G -time_based -thread -runtime=60 -name=fio-iops -rate_iops=500 -ramp_time=10 -filename="Z\:\targetfile"
测试结果示例: