鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

Vdbench测试步骤

安装Vdbench

在ARM服务器上执行Vdbench前需要重新编译Vdbench源码,具体解决方法请参见Vdbench官方

  1. 下载Vdbench压缩包到所有client的“/home”目录下。

    获取链接

  2. 进入所有客户端“/home”目录下解压Vdbench压缩包。
    1
    cd /home && unzip vdbench50407.zip
    
  3. 安装Java。
    1
    yum -y install java
    

    Vdbench的使用依赖Java,若已安装,则可跳过本步骤。

  4. 编译vdbench源码。
    1. 获取源码包Vdbench Source Code Downloads (oracle.com)“/home/vdbench50407”目录下。
    2. 解压Vdbench源码压缩包。
      1
      cd vdbench50407 && unzip vdbench50407.src.zip
      
    3. 进入源码目录并创建目录。
      1
      2
      cd src
      mkdir linux
      
    4. 修改make.linux文件。
      1
      2
      cd Jni
      vim make.linux
      

      vdb变量改为源码包所在路径。

      java变量改为本机java的安装路径。

      删除以上4行中编译参数中的-m32和-m64参数。

      在vdbjni.h中char ptod_txt[256]前加上extern。

      在vdbjni.c 里面添加char ptod_txt[256]。

      在vdblinux.c中char ptod_txt[256]前加上extern。

    5. 编译。
      1
      ./make.linux
      
    6. 拷贝动态库并重命名。
      1
      2
      cd /home
      cp vdbench50407/src/linux/linux64.so vdbench50407/linux/aarch64.so
      
  5. 测试Vdbench是否工作正常。
    1
    2
    3
    cd vdbench50407
    chmod +x vdbench
    ./vdbench -t
    

    若出现“Vdbench execution completed successfully”字段则说明Vdbench工作正常。

Vdbench测试模型

Vdbench通过执行工作负载配置文件运行,选取其中一台客户端执行即可,该客户端会通过负载配置文件中的其他客户端IP地址等信息自动登录到其他客户端执行测试。

创建Vdbench工作负载

本文以1个Ceph客户端为例,在任意一个客户端上(本文使用client1)创建vdbench 4KB随机读工作负载:

1
vi /home/4k_randread.txt

添加以下内容:

  1. 为所有测试机设置统一的默认参数,请根据实际情况修改Vdbench路径,此处为“/home”目录。
    1
    hd=default,vdbench=/home/vdbench50406,user=root,shell=ssh
    
  2. 定义测试机。
    1
    hd=hd1,system=client1
    

    相关参数如表1所示。

    表1 参数说明

    参数

    说明

    hd

    测试机的名称

    system

    主机IP地址或主机名

  3. 文件系统定义。
    1
    fsd=fsd1,anchor=/mnt/cephfs,depth=1,width=10,files=200,size=20m,shared=yes
    

    相关参数如表2所示。

    表2 参数说明

    参数

    说明

    fsd

    标识文件系统的名称

    anchor

    将在其中创建目录结构的父目录,此处为 CephFS 挂载点

    depth

    要在定位符下创建的级别数

    width

    要在定位符下创建的目录数

    files

    要在最低级别创建的文件数

    size

    创建的文件大小

    shared

    所有主机共享fsd参数

  4. 文件系统工作负载定义。
    1
    2
    fwd=default,xfersize=4k,fileio=random,fileselect=random,rdpct=100,threads=128 
    fwd=fwd1,fsd=fsd1,host=hd1 
    

    相关参数如表3所示。

    表3 参数说明

    参数

    说明

    fwd

    default表示为所有工作负载设置统一的默认参数

    xfersize

    数据块大小

    fileio

    取值为random或sequential,表示文件IO将执行的方式

    fileselect

    取值为random或sequential,表示选择文件或目录的方式

    rdpct

    读写百分比

    • rdpct=100表示只有读请求
    • rdpct=0表示只有写请求

    operation

    取值为read或write,确定文件系统的操作

    threads

    此工作负载的并发线程数量

    fsd

    要使用的文件系统ID

    host

    要用于此工作负载的主机ID

  5. 运行定义。
    1
    rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=5
    

    相关参数如表4所示。

    表4 参数说明

    参数

    说明

    rd

    表示运行的名称

    fwd

    要使用的文件系统工作负载ID

    fwdrate

    每秒执行的文件系统操作数量

    format

    表示预处理目录和文件结构方式

    elapsed

    以秒为单位的运行持续时间

    interval

    终端报告间隔

执行Vdbench测试

本文默认每台客户端的“/mnt/cephfs”目录已挂载Ceph文件系统,创建100个子目录,每个子目录下包含200个文件,每个文件20MB(可用dd写满20MB)。若实际测试时,客户端内无测试文件,可参考以下步骤创建文件以供测试。

  1. 创建文件生成脚本。
    1
    vim create_file.sh
    
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    for i in {1..10}
    do
            cd /mnt/cephfs
            mkdir $i
            cd $i
            seq 200 |xargs -i dd if=/dev/zero of={} bs=1024000 count=20
    done
    
  2. 执行脚本。
    1
    bash  create_file.sh
    

创建Vdbench工作负载创建好的4k_randread.txt负载为例进行说明:

1
2
cd /home
/home/vdbench50406/vdbench -f /home/4k_randread.txt -o 4k_randread_output

-f 指定待测试的工作负载配置文件;-o表示测试结果存放的目录。

收集测试结果

测试完成后默认会在当前目录下创建一个名为“output”的目录存放测试结果,若测试命令中添加-o参数指定结果输出路径,则测试结果存放到该路径下。

执行Vdbench测试的测试命令为例,会在“/home/4k_randread_output”目录下存放测试结果。

查看测试结果。

1
2
cd /home/4k_randread_output
cat totals.html

totals.html内容如下,其中i/o rate表示IOPS,MB/sec表示带宽,resp time表示时延: