搜索本产品文档关键词
性能测试方法
所有文档
menu
没有找到结果,请重新输入

并行文件存储 PFS

性能测试方法

本文介绍如何使用Vdbench工具对PFS并行文件存储进行IOPS、吞吐和时延的性能测试。

前提条件

  1. 您已创建待测试的PFS文件系统,并将PFS文件系统挂载到BCC云服务器上。
  1. PFS所提供的性能规格,除时延参数外,均需要一定规模的并发压测才能达到最大值。建议压测时准备 32C 以上的BCC云服务器作为客户端,可满足大部分场景的压测需求。其他压测需求,可根据实际情况配置对应的BCC云服务器。
  2. 进行性能压测时,尤其是时延测试,需要保证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 进行时延的基准测试。

测试步骤

  1. 远程登录BCC云服务器(客户端)。
  2. 安装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
  1. 性能测试
  • 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 文件系统定义的名称,多文件系统时(fsd1fsd2fsd3…),可以指定default,将相同的参数作为所有 fsd 的默认值。
    openflags 通过设置为o_directdirectio,以无缓冲缓存的方式进行读写操作。
    anchor 文件写入目录。
    depth 创建目录层级数,即目录深度。
    width 每层文件夹的子文件夹数。
    files 测试文件个数。
    说明:Vdbench 测试过程中会生成多层级目录结构,实际只有最后一层目录会生成测试文件。
    size 每个测试文件大小。
    shared 用于设置客户端是否共享目录结构,取值如下:
  • yes:不同的slave 可以平分一个目录下所有的文件来进行访问,相当于每个 slave 有各自等分的访问区域。当多主机联机测试时,写入的根目录anchor为同一个路径时,需要指定参数值为yes
  • no:不同的 slave 可以独占一个目录下所有的文件来进行访问。
  • 说明
    depthwidthfiles之间的计算公式如下:

    • 最后一层生成文件夹个数=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 文件操作方式,可选值为readwrite
    rdpct 可选取值为0-100,读操作占比百分比,一般混合读写时需要指定该参数。可选值为0~100,当值为 60 时,则混合读写比为 6:4。
    fileio 文件 I/O 执行的方式,可选值为randomsequential
    fileselect 选择文件或目录的方式,可选值为randomsequential
    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 结果输出打印时间间隔,单位为秒。
    上一篇
    PFS数据备份到BOS
    下一篇
    API参考