本文介绍智算版文件系统的测试性能指标、Vdbench测试参数、测试示例等内容。
为了满足智算版文件系统的性能测试需求,仅仅使用 FIO 往往不足以达到要求。Vdbench 工具提供了多客户端联机测试和复杂的工作负载模拟功能,建议您使用 Vdbench 工具对智算版文件系统进行性能测试和评估。
性能测试时,会使用不同的性能指标来衡量文件系统在特定负载条件下的性能表现,具体的性能指标说明如下:
已安装 Vdbench 软件,关于 Vdbench 软件包的地址,请参见 Vdbench Downloads。
由于智算版文件系统性能规格的限制,除时延参数外,您需要准备一定规模和核心数机器进行并发压测才能测试出文件系统性能最大值。
建议您压测时准备 10 台 32C 以上的云服务器作为客户端。如果有特殊压测需求,您也可以根据实际情况配置对应的云服务器。
messagescan=no hd=default,vdbench=/root/vdbench-io/vdbench50406/,shell=ssh,user=root hd=hd1,system=node1(测试客户端主机信息,自行调整) hd=hd2,system=node2(测试客户端主机信息,自行调整) hd=hd3,system=node3(测试客户端主机信息,自行调整) hd=hd4,system=node4(测试客户端主机信息,自行调整) hd=hd5,system=node5(测试客户端主机信息,自行调整) hd=hd6,system=node6(测试客户端主机信息,自行调整) hd=hd7,system=node7(测试客户端主机信息,自行调整) hd=hd8,system=node8(测试客户端主机信息,自行调整) hd=hd9,system=node9(测试客户端主机信息,自行调整) hd=hd10,system=node10(测试客户端主机信息,自行调整) fsd=fsd1_1,anchor=/mnt/vepfs/xxxx(文件测试路径,自行调整),depth=2,width=2,files=2000(文件个数,自行调整),size=500m,openflags=o_direct fwd=fwd1_1,fsd=fsd1_1,host=hd1,operation=read,fileio=random,fileselect=random fwd=fwd1_2,fsd=fsd1_1,host=hd2,operation=read,fileio=random,fileselect=random fwd=fwd1_3,fsd=fsd1_1,host=hd3,operation=read,fileio=random,fileselect=random fwd=fwd1_4,fsd=fsd1_1,host=hd4,operation=read,fileio=random,fileselect=random fwd=fwd1_5,fsd=fsd1_1,host=hd5,operation=read,fileio=random,fileselect=random fwd=fwd1_6,fsd=fsd1_1,host=hd6,operation=read,fileio=random,fileselect=random fwd=fwd1_7,fsd=fsd1_1,host=hd7,operation=read,fileio=random,fileselect=random fwd=fwd1_8,fsd=fsd1_1,host=hd8,operation=read,fileio=random,fileselect=random fwd=fwd1_9,fsd=fsd1_1,host=hd9,operation=read,fileio=random,fileselect=random fwd=fwd1_10,fsd=fsd1_1,host=hd10,operation=read,fileio=random,fileselect=random fwd=format,threads=20,xfersize=4m rd=randr_500m,fwd=fwd1_*,forxfersize=4m,threads=128,fwdrate=max,format=restart,elapsed=600,interval=1,pause=1m
messagescan=no hd=default,vdbench=/root/vdbench-io/vdbench50406/,shell=ssh,user=root hd=hd1,system=node1(测试客户端主机信息,自行调整) hd=hd2,system=node2(测试客户端主机信息,自行调整) hd=hd3,system=node3(测试客户端主机信息,自行调整) hd=hd4,system=node4(测试客户端主机信息,自行调整) hd=hd5,system=node5(测试客户端主机信息,自行调整) hd=hd6,system=node6(测试客户端主机信息,自行调整) hd=hd7,system=node7(测试客户端主机信息,自行调整) hd=hd8,system=node8(测试客户端主机信息,自行调整) hd=hd9,system=node9(测试客户端主机信息,自行调整) hd=hd10,system=node10(测试客户端主机信息,自行调整) fsd=fsd1_1,anchor=/mnt/vepfs/xxxx(文件测试路径,自行调整),depth=2,width=2,files=2000(文件个数,自行调整),size=500m,openflags=o_direct fwd=fwd1_1,fsd=fsd1_1,host=hd1,operation=read,fileio=random,fileselect=random fwd=fwd1_2,fsd=fsd1_1,host=hd2,operation=read,fileio=random,fileselect=random fwd=fwd1_3,fsd=fsd1_1,host=hd3,operation=read,fileio=random,fileselect=random fwd=fwd1_4,fsd=fsd1_1,host=hd4,operation=read,fileio=random,fileselect=random fwd=fwd1_5,fsd=fsd1_1,host=hd5,operation=read,fileio=random,fileselect=random fwd=fwd1_6,fsd=fsd1_1,host=hd6,operation=read,fileio=random,fileselect=random fwd=fwd1_7,fsd=fsd1_1,host=hd7,operation=read,fileio=random,fileselect=random fwd=fwd1_8,fsd=fsd1_1,host=hd8,operation=read,fileio=random,fileselect=random fwd=fwd1_9,fsd=fsd1_1,host=hd9,operation=read,fileio=random,fileselect=random fwd=fwd1_10,fsd=fsd1_10,host=hd10,operation=read,fileio=random,fileselect=random fwd=format,threads=20,xfersize=4m rd=randr_500m,fwd=fwd1_*,forxfersize=4k,threads=128,fwdrate=max,format=restart,elapsed=600,interval=1,pause=1m
说明
文件系统参数文件定义顺序为:HD、FSD、FWD、RD。
HD 参数为非必选项,单机运行时不需要配置该参数,一般只有在多主机联机测试时才需要配置该参数。
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node241 hd=hd2,system=node242 hd=hd3,system=node243
参数 | 说明 |
---|---|
hd | 主机定义的名称,多主机运行时,可以使用 hd1、hd2 等名称进行区分。 |
system | 主机 IP 地址或主机名称。 |
vdbench | Vdbench 执行文件存放路径,当多主机存放路径不同时,可在 hd 定义时单独指定该路径。 |
user | slave 和 master 之间通信使用的用户。 |
shell | 多主机联机测试时,mater 和 slave 主机间通信方式。取值说明如下:
默认值为 |
fsd=default,openflags=directio,depth=2,width=3,files=2,size=128k fsd=fsd1,anchor=/mnt/client1 fsd=fsd2,anchor=/mnt/client2 fsd=fsd3,anchor=/mnt/client3
参数 | 说明 |
---|---|
fsd | 文件系统定义的名称,多文件系统时( |
openflags | 通过设置为 |
anchor | 文件写入目录,Linux 指定路径为 |
depth | 创建目录层级数,即目录深度。 |
width | 每层文件夹的子文件夹数。 |
files | 测试文件个数。 说明 Vdbench 测试过程中会生成多层级目录结构,实际只有最后一层目录会生成测试文件。 |
size | 每个测试文件大小。 |
shared | 用于设置客户端是否共享目录结构,取值如下:
默认值为 |
说明
depth
、width
、files
之间的计算公式如下:
width
^depth
width
^depth
× files
其中,^ 表示次方。例如 width
为 3,depth
为 2,则最后一层生成文件夹个数为 3 的 2 次方。
fwd=default,operation=read,xfersize=4k,fileio=sequential,fileselect=random,threads=2 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd2,host=hd2 fwd=fwd3,fsd=fsd3,host=hd3
参数 | 说明 |
---|---|
fwd | 文件系统工作负载定义的名称,多文件系统工作负载定义时,可以使用 fwd1、fwd2、fwd3 进行区分。 |
fsd | 工作负载使用文件存储定义的名称。 |
host | 工作负载使用的主机。 |
operation | 文件操作方式,可选值为 |
rdpct | 读操作占比百分比,一般混合读写时需要指定该参数。可选值为 |
fileio | 文件 I/O 执行的方式,可选值为 |
fileselect | 选择文件或目录的方式,可选值为 |
xfersizes | 数据传输(读取和写入操作)处理的数据大小,即单次 IO 大小。 |
threads | 工作负载的并发线程数量。 |
注意
默认情况下,预填数据工作负载定义为 threads=8,xfersize=128k
,即预填数据使用 8 线程,IO 大小为 128K,如需更改默认预填数据工作负载定义,则需要增加参数指定线程数和 IO 大小(fwd=format,threads=nn,xfersize=nn
)。
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=604800,interval=10
参数 | 说明 |
---|---|
rd | 文件系统运行定义的名称。 |
fwd | 文件系统工作负载定义的名称。 |
fwdrate | 每秒执行的文件系统操作数量。设置为 |
format | 预处理目录和文件结构的方式,取值说明如下:
默认值为 |
elapsed | 测试运行持续时间,单位为秒,默认值为 |
interval | 结果输出打印时间间隔,单位为秒。 |
使用 Vdbench 报错 open failed for xxx
。
使用 Vdbench 测试过程中,测试中断,报错信息如下:
19:37:41.155 19:37:44.813 error: 2019:37:41.155 19:37:44.813 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file failed 19:37:41.155 19:37:44.814 error: 2019:37:41.155 19:37:44.814 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0003.file failed 19:37:41.156 19:37:44.814 Maximum native memory allocation: 1,048,576; Current allocation: 1,048,57619:37:41.156 19:37:44.814 Maximum native memory allocation: 1,048,576; Current allocation: 1,048,57619:37:41.156 19:37:44.814 error: 2019:37:41.156 19:37:44.814 19:37:41.156 19:37:44.814 open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file 19:37:41.156 19:37:44.814 19:37:41.158 java.lang.RuntimeException: open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file
Vdbench 默认限制了 Java 内存使用量,测试期间 Java 运行内存不足才导致测试异常中断。您可以增大 Vdbench 运行脚本的 Java 内存参数。
[root@no**** ~]# cat vdbench50406/vdbench if [ "$1" == "SlaveJvm" ]; then $java -client -Xmx10240m -Xms128m -cp $cp Vdb.SlaveJvm $* exit $?else $java -client -Xmx10240m -Xms64m -cp $cp Vdb.Vdbmain $* exit $? fi
使用 Vdbench 报错 Minimum required Java version for Vdbench is 1.7.0
根据官方相关说明,Vdbench50407 之前的版本,具有 Java 检测功能,如果 Vdbench 版本不兼容 Java 版本,则会报错。Vdbench50407 版本则不存在 Java 兼容问题。您可以在不变更现有 Java 版本的情况下,升级 Vdbench 至 vdbench50407 版本,或者手动安装 Java。
// Removed as per 50407 because of java 1.10.x //checkJavaVersion(); //.... private static void checkJavaVersion() { if (common.get_debug(common.USE_ANY_JAVA)) return; if (!JVMCheck.isJREValid(System.getProperty("java.version"), 1, 7, 0)) { System.out.print("*\n*\n*\n"); System.out.println("* Minimum required Java version for Vdbench is 1.7.0; \n" + "* You are currently running " + System.getProperty("java.version") + "\n* Vdbench terminated."); System.out.println("*\n*\n*\n"); System.exit(-99); } }