性能测试方法
更新时间:2024-11-04
本文介绍如何使用Vdbench工具对PFS并行文件存储进行IOPS、吞吐和时延的性能测试。
前提条件
- 您已创建待测试的PFS文件系统,并将PFS文件系统挂载到BCC云服务器上。
- 创建PFS文件系统请见:创建文件系统。
- PFS 极速型L2的挂载方式请见:BCC挂载与卸载(极速型L2)。
- PFS 标准型、增强型和极速型的挂载方式请见:BCC挂载与卸载(标准型、增强型和极速型)。
- PFS所提供的性能规格,除时延参数外,均需要一定规模的并发压测才能达到最大值。建议压测时准备 32C 以上的BCC云服务器作为客户端,可满足大部分场景的压测需求。其他压测需求,可根据实际情况配置对应的BCC云服务器。
- 进行性能压测时,尤其是时延测试,需要保证BCC云服务器(客户端)和 PFS 处于同可用区。跨可用区测试的性能结果会和标准值有较大差异,不具备参考价值,应尽量避免。
背景信息
推荐使用Vdbench工具测试PFS文件系统性能,不同工具测试的PFS性能会有差异,难以反映真实性能。本文示例的性能参数,均为Linux系统下采用Vdbench工具的测试结果,以此作为PFS文件系统产品性能指标参考。本次具体的性能指标说明如下:
- IOPS:每秒读写数据块的数量,单位个/s。建议基于 512MB 的文件,采用并发(多机多线程)的 4K 小 IO 进行 IOPS 的基准测试。
- 吞吐:每秒读写数据量的大小,单位 GiB/s 或 MiB/s。建议基于 512MB 的文件,采用并发(多机多线程)的 1M 大 IO 进行吞吐的基准测试。
- 时延:处理读写请求的耗时,单位 ms。建议基于 512MB 的文件,采用单流(单线程)的 4K 小 IO 进行时延的基准测试。
测试步骤
- 远程登录BCC云服务器(客户端)。
- 安装Vdbench测试工具,关于 Vdbench 软件包的地址,请参见Vdbench Downloads。
# 使用root用户执行
unzip vdbench50407.zip -d /root/vdbench ## 请替换成下载的软件包
# 安装jdk
## centos系统
yum -y install java-1.8.0-openjdk.x86_64
## ubuntu系统
apt -y install openjdk-8-jdk
- 性能测试
- vdbench配置
## /root/vdbench/jobs/512m_rw.job
hd=default,vdbench=/root/vdbench,shell=ssh,user=root
hd=hd01,system=192.168.1.10x(测试客户端IP信息,自行替换)
hd=hd02,system=192.168.1.10x(测试客户端IP信息,自行替换)
hd=hd03,system=192.168.1.10x(测试客户端IP信息,自行替换)
fsd=fsd1_01,anchor=/mnt/pfs/xx(测试文件系统路径,自行替换),depth=1,width=1,files=1024(文件个数,自行替换),size=512m,openflags=o_direct
fsd=fsd1_02,anchor=/mnt/pfs/xx(测试文件系统路径,自行替换),depth=1,width=1,files=1024(文件个数,自行替换),size=512m,openflags=o_direct
fsd=fsd1_03,anchor=/mnt/pfs/xx(测试文件系统路径,自行替换),depth=1,width=1,files=1024(文件个数,自行替换),size=512m,openflags=o_direct
fwd=fwd1_01,fsd=fsd1_01,host=hd01,operation=write,fileio=sequential,fileselect=sequential
fwd=fwd1_02,fsd=fsd1_02,host=hd02,operation=write,fileio=sequential,fileselect=sequential
fwd=fwd1_03,fsd=fsd1_03,host=hd03,operation=write,fileio=sequential,fileselect=sequential
fwd=fwd2_01,fsd=fsd1_01,host=hd01,operation=read,fileio=sequential,fileselect=sequential
fwd=fwd2_02,fsd=fsd1_02,host=hd02,operation=read,fileio=sequential,fileselect=sequential
fwd=fwd2_03,fsd=fsd1_03,host=hd03,operation=read,fileio=sequential,fileselect=sequential
# 顺序写吞吐场景示例
rd=seqw_512m_4m,fwd=fwd1_*,forxfersize=(4m),threads=128,fwdrate=max,format=restart,elapsed=600,interval=1,pause=1m
# 顺序写IOPS、延迟场景示例
rd=seqw_512m_4k,fwd=fwd1_*,forxfersize=(4k),threads=128,fwdrate=max,format=restart,elapsed=600,interval=1,pause=1m
# 顺序读吞吐场景示例
rd=seqr_512m_4m,fwd=fwd2_*,forxfersize=(4m),threads=128,fwdrate=max,format=restart,elapsed=600,interval=1,pause=1m
# 顺序读IOPS、延迟场景示例
rd=seqr_512m_4k,fwd=fwd2_*,forxfersize=(4k),threads=128,fwdrate=max,format=restart,elapsed=600,interval=1,pause=1m
- vdbench命令
cd /root/vdbench
./vdbench -f jobs/512m_rw.job
附录 - Vdbench 参数说明
说明:文件系统参数文件定义顺序为:HD、FSD、FWD、RD。
HD(Host Define)参数
主机定义,在多主机联机测试时需要配置,各参数说明如下
# 配置案例
hd=default,vdbench=/root/vdbench,shell=ssh,user=root
hd=hd01,system=node1
hd=hd02,system=node2
hd=hd03,system=node3
参数 | 说明 |
---|---|
hd | 主机定义的名称,多主机运行时,可以使用 hd01、hd02 等名称进行区分。 |
system | 主机 IP 地址或主机名称。 |
vdbench | Vdbench 执行文件存放路径,当多主机存放路径不同时,可在 hd 定义时单独指定该路径。 |
user | slave 和 master 之间通信使用的用户。 |
shell | 多主机联机测试时,mater 和 slave 主机间通信方式。取值说明如下:rsh :使用 rsh 互信,由于 rsh 使用明文传输,安全级别不够,不建议使用该种通信方式。ssh :使用 ssh 互信,通常 Linux 主机联机时使用此通信方式。vdbench :需要在所有 slave 主机运行vdbench rsh 命令启用 Vdbench 本身的rsh 守护进程,通常 Window 主机联机时使用此通信方式。 |
FSD(File System Define)参数
## 配置案例
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 | 文件系统定义的名称,多文件系统时(fsd1 、fsd2 、fsd3 …),可以指定default ,将相同的参数作为所有 fsd 的默认值。 |
openflags | 通过设置为o_direct 或directio ,以无缓冲缓存的方式进行读写操作。 |
anchor | 文件写入目录。 |
depth | 创建目录层级数,即目录深度。 |
width | 每层文件夹的子文件夹数。 |
files | 测试文件个数。 说明:Vdbench 测试过程中会生成多层级目录结构,实际只有最后一层目录会生成测试文件。 |
size | 每个测试文件大小。 |
shared | 用于设置客户端是否共享目录结构,取值如下: yes :不同的slave 可以平分一个目录下所有的文件来进行访问,相当于每个 slave 有各自等分的访问区域。当多主机联机测试时,写入的根目录anchor 为同一个路径时,需要指定参数值为yes 。no :不同的 slave 可以独占一个目录下所有的文件来进行访问。 |
说明
depth
、width
、files
之间的计算公式如下:
- 最后一层生成文件夹个数=
width
^depth
- 测试文件个数=
width
^depth
×files
其中,^ 表示次方。例如width
为 3,depth
为 2,则最后一层生成文件夹个数为 3 的 2 次方。
FWD(FileSystem Workload Defile)参数
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 | 文件操作方式,可选值为read 或write 。 |
rdpct | 可选取值为0-100,读操作占比百分比,一般混合读写时需要指定该参数。可选值为0~100 ,当值为 60 时,则混合读写比为 6:4。 |
fileio | 文件 I/O 执行的方式,可选值为random 或sequential 。 |
fileselect | 选择文件或目录的方式,可选值为random 或sequential 。 |
xfersizes | 数据传输(读取和写入操作)处理的数据大小,即单次 IO 大小。 |
threads | 工作负载的并发线程数量。 |
注意:默认情况下,预填数据工作负载定义为
threads=8
,xfersize=128k
,即预填数据使用 8 线程,IO 大小为 128K,如需更改默认预填数据工作负载定义,则需要增加参数指定线程数和 IO 大小(fwd=format
,threads=nn
,xfersize=nn
)。
RD(Run Define)参数
# 配置案例
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=604800,interval=10
参数 | 说明 |
---|---|
rd | 文件系统运行定义的名称。 |
fwd | 文件系统工作负载定义的名称。 |
fwdrate | 每秒执行的文件系统操作数量。设置为max ,表示不做任何限制,按照最大强度自适应。 |
format | 预处理目录和文件结构的方式,取值说明如下:预处理目录和文件结构的方式,取值说明如下:no :不执行 format 预处理操作,如测试目录不存在文件时,Vdbench 会由于无可用文件读写而异常退出。yes :删除测试目录已有文件结构,并且重新创建新的文件结构。restart :只创建未生成的目录或文件,并且增大未达到实际大小的文件。 |
elapsed | 测试运行持续时间,单位为秒,默认值为30 。 |
interval | 结果输出打印时间间隔,单位为秒。 |