介绍
vdbench是一个I/O工作负载生成器,一般用于验证数据完整性和网络连接存储性能等。它是一个免费的工具,容易使用,可用于测试文件系统或块设备基准性能。本文使用环境为Linux Centos7.6版本。
安装
java环境
vdbench的运行依赖Java环境,可先通过以下命令查看当前系统是否已有java环境:
java -version
若未安装可直接使用下面命令进行安装:
yum install jre
vdbench下载
下载链接:http://download.oracle.com/otn/utilities_drivers/vdbench/vdbench50406.zip
注:下载需要oracle账号。然后在安装目录进行解压缩
unzip vdbench50406.zip
使用测试
执行以下命令查看测试vdbench的可用性:
./vdbench -t
如果出现以下情况代表可用。
常用操作命令
运行测试模型
注:-f后接测试参数文件名,-o后接导出测试结果路径。
./vdbench -f {filename} -o {exportpath}
配置参数
对于一个文件系统,配置以下参数:
(1)HD:主机定义。与虚拟块设备相同。
(2)FSD:文件系统定义
-
fsd= 标识文件系统定义的名称
-
anchor= 将在其中创建目录结构的目录
-
width= 要在定位符下创建的目录数
-
depth= 要在定位符下创建的级别数
-
files= 要在最低级别创建的文件数
-
sizes= (size,size,…) 将创建的文件大小
-
distribution= bottom(如果希望仅在最低级别创建文件)和 all(如果希望在所有目录中创建文件)
-
openflags= 用于打开一个文件系统 (Solaris) 的 flag_list
(3)FWD:文件系统工作负载定义
-
fwd= 标识文件系统工作负载定义的名称。
-
fsd= 要使用的文件系统定义的 ID。
-
host= 要用于此工作负载的主机的 ID。
-
fileio= random 或 sequential,表示文件 I/O 将执行的方式。
-
fileselect= random 或 sequential,标识选择文件或目录的方式。
-
xfersizes= 数据传输(读取和写入操作)处理的数据大小。
-
operation= mkdir、rmdir、create、delete、open、close、read、write、getattr 和 setattr。选择要执行的单个文件操作。
-
rdpct= (仅)读取和写入操作的百分比。
-
threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件。
(4)RD:运行定义
-
fwd= 要使用的文件系统工作负载定义的 ID。
-
fwdrate= 每秒执行的文件系统操作数量。
-
format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。
-
operations= 覆盖 fwd 操作。选项相同。
-
iorate= 常用可选值为100、max,此工作负载的固定I/O速率 –当参数值为100时,以每秒100个I/Os的速度运行工作负载,当参数值设置为一个低于最大速率的值时,可以达到限制读写速度的效果 –当参数值为max时,以最大的I/O速率运行工作负载,一般测试读写最大性能时,该参数值均为max
-
warmup= 预热时间(单位为秒),默认情况下vdbench会将第一个时间间隔输出数据排除在外,程序在预热时间内的测试不纳入最终测试结果中(即预热结束后,才开始正式测试)
-
maxdata= 读写数据大小,通常情况下,当运行elapsed时间后测试结束;当同时指定elapsed和maxdata参数值时,以最快运行完的参数为准
-
elapsed= 默认值为30,测试运行持续时间(单位为秒)
-
interval= 报告时间间隔(单位为秒)
测试
使用vdbench中的测试用例。
./vdbench -f examples/filesys/create_files -o test1/
#-f后接要执行的脚本文件,-o后为指定输出目录。
输出文档
结果分析
输出文件
- errorlog.html:当运行测试启用数据校验时,它可能会包含一些错误信息,如:无效的密钥读取、无效的 SD 或 FSD 名称读取、数据损坏和坏扇区等;
- flatfile.html:vdbench 生成的一种逐列的 ASCII 格式的信息,可以使用parseflat参数解析结果;
- histogram.html:一种包含报告柱状图的响应时间、文本格式的文件;
- logfile.html:包含 Java 代码写入控制台窗口的每行信息的副本。logfile.html 主要用于调试用途
- parmfile.html:包含测试运行配置参数信息
- summary.html:记录全部数据信息,显示每个报告间隔内总体性能情况及工作负载情况,以及除第一个间隔外的所有间隔的加权平均值,其中各个参数的含义:
块存储 参数 含义 interval 报告间隔序号 I/O rate 每秒平均 I/O 速率 MB sec 每秒平均带宽 bytes I/O 平均I\O大小 read pct 平均读取百分比 resp time 平均读写响应时间 resp max 在此间隔中观察到的最大响应时间 resp stddev 响应时间的标准偏差 cpu% sys CPU利用率 文件存储 参数 含义 ReqstdOps(rate/resp) 每秒处理请求的个数(速率/响应时间) cpu%(total/sys) CPU 使用率(total/sys) read pct 读百分比 read(rate/resp) 读(速率/响应时间) write(rate/resp) 写(速率/响应时间) mb/sec(read/write) 带宽(读/写) mb/sec total 总的读写带宽 xfer size 平均传输大小 mkdir(rate/resp) 创建文件夹(速率/响应时间) rmdir(rate/resp) 移除文件夹(速率/响应时间) create(rate/resp) 创建文件(速率/响应时间) open(rate/resp) 打开文件(速率/响应时间) close(rate/resp) 关闭文件(速率/响应时间) delete(rate/resp) 删除文件(速率/响应时间) - totals.html:记录全部数据计算之后的平均值,一般测试结果从该文件取值,除第一个间隔外所有间隔的加权平均值