在ARM服务器上执行Vdbench前需要重新编译vdbench源码,具体解决方法请参见https://goodcommand.readthedocs.io/zh_CN/latest/command/vdbench.html。
1
|
cd /home && unzip vdbench50407.zip |
1
|
yum -y install java |
Vdbench的使用依赖Java,若已安装,则可跳过本步骤。
1 2 3 |
cd vdbench50407 chmod +x vdbench ./vdbench -t |
若出现“Vdbench execution completed successfully”字段则说明Vdbench工作正常。
Vdbench通过执行工作负载配置文件运行,选取其中一台客户端执行即可,该客户端会通过负载配置文件中的其他客户端IP地址等信息自动登录到其他客户端执行测试。测试前需要先创建若干块设备镜像(image)并映射成客户端本地块设备(/dev/rbd0),Vdbench会直接对这些块设备进行读写测试。
本文以1个Ceph客户端,该客户端映射了3个RBD块设备,每个块设备读写最大容量为100G为例,在任意一个客户端上(本文使用client1)创建vdbench 4KB随机读工作负载。
1
|
vi /home/4k_randread.txt
|
添加以下内容:
1
|
hd=default,vdbench=/home/vdbench50406,user=root,shell=ssh |
1
|
hd=hd1,system=client1 |
相关参数如表1所示。
1 2 3 |
sd=sd10,host=hd1,lun=/dev/rbd0,openflags=o_direct,threads=16 sd=sd11,host=hd1,lun=/dev/rbd1,openflags=o_direct,threads=16 sd=sd12,host=hd1,lun=/dev/rbd2,openflags=o_direct,threads=16 |
相关参数如表2所示。
1
|
wd=wd1,sd=sd*,rdpct=100,seekpct=100,xfersize=4k |
相关参数如表3所示。
1
|
rd=rd1,wd=wd1,iorate=max,elapsed=600,format=restart,maxdata=100G,interval=5,warmup=30 |
相关参数如表4所示。
参数 |
说明 |
---|---|
rd |
运行的名称 |
wd |
用于此次运行的工作负载的ID |
iorate |
一种或多种IO速率
|
elapsed |
运行持续时间,单位秒 |
maxdata |
最大容量 |
interval |
终端报告间隔 |
warmup |
加热时间 |
以4K随机读为例,其它场景可参考修改(执行读操作之前要确保块设备中有数据)。
以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表示时延: