性能测试
本文介绍如何在Linux系统中使用FIO工具对CPFS文件系统进行吞吐和IOPS的性能测试。
前提条件
您已创建待测试的CPFS文件系统,并将CPFS文件系统挂载到ECS实例上。
测试的ECS实例有足够的CPU(CPU大于或等于8核)和内网带宽。
背景信息
推荐使用FIO工具测试CPFS文件系统性能,不同工具测试的CPFS文件系统性能会有差异,难以反映真实性能。本文示例的性能参数,均为Linux系统下采用FIO工具的测试结果,以此作为文件存储CPFS产品性能指标参考。
操作步骤
远程连接ECS实例。具体操作,请参见ECS连接方式。
安装FIO测试工具。如果已安装,请跳过此步骤,直接运行性能测试命令。
操作系统
安装命令
CentOS
sudo yum install fio
Redhat
Alibaba Cloud Linux
Ubuntu
依次执行以下安装命令:
sudo apt-get update
sudo apt-get install fio
Debian
运行性能测试命令。
随机写IOPS:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randwrite -bs=4k -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Write_Testing
随机读IOPS:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randread -bs=4k -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Read_Testing
顺序写吞吐量:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=write -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Seq_Write_Testing
顺序读吞吐量:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=read -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Seq_Read_Testing
随机写吞吐量:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randwrite -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Write_Testing
随机读吞吐量:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randread -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Read_Testing
FIO参数说明
测试命令中有关FIO各参数含义的说明如下表所示。
参数 | 说明 |
direct | 表示是否使用direct I/O。默认值:1。
|
iodepth | 表示测试时的IO队列深度。例如 |
rw | 表示测试时的读写策略。您可以设置为:
|
ioengine | 表示测试时FIO选择哪种I/O引擎,通常选择libaio,更符合日常应用模式,更多的选择请查阅FIO官方文档。 |
bs | 表示I/O单元的块大小(block size)。默认值:4 KiB。读取和写入的值可以以read、write格式单独指定,其中任何一个都可以为空以将该值保留为其默认值。 |
size | 表示测试文件大小。 FIO会将指定的文件大小全部读/写完成,然后才停止测试,除非受到其他选项(例如运行时)的限制。如果未指定该参数,FIO将使用给定文件或设备的完整大小。也可以将大小作为1到100之间的百分比给出。例如指定size=20%,FIO将使用给定文件或设备完整大小的20%空间。 |
numjobs | 表示测试的并发线程数。本示例为:256。 |
runtime | 表示测试时间,即FIO运行时长。 如果未指定该参数,则FIO会持续将上述size指定大小的文件,以每次bs值为块大小读/写完。 |
group_reporting | 表示测试结果显示模式。 如果指定该参数,测试结果会汇总每个进程的统计信息,而不是以不同任务来统计信息。 |
directory | 表示待测试的文件系统挂载路径。本示例地址为 |
name | 表示测试任务名称,可以随意设定。例如,本示例的Rand_Write_Testing。 |
有关各参数的更多说明,请参见FIO MAN手册。