一、 vdbench简介

vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 可以使用vdbench测试磁盘和文件系统的读写性能。 注:此软件的带宽及字节结算单位均为1024进制。

二、 vdbench安装

  • 环境准备 Vdbench使用需要有java环境, centos直接yum install jre即可,windows主机上则需要安装jre,并添加到环境变量中。
  • 程序测试 环境配置好后,直接在vdbench目录下执行./vdbench -t进行测试,如果正常,会在目录下自动生成一个output目录,否则可尝试修改下文件及目录权限后再次进程测试验证程序可用性。

三、 vdbench使用

1. 测试用例

  • 块存储测试(单客户端): 按照下述测试用例对具体字段进行解释:
sd=sd1,lun=[连接iscsi卷名称1],openflags=o_direct,threads=32
sd=sd2,lun=[连接iscsi卷名称2],openflags=o_direct,threads=32
sd=sd3,lun=[连接iscsi卷名称3],openflags=o_direct,threads=32
……
sd=sdn,lun=[连接iscsi卷名称n],openflags=o_direct,threads=32 wd=wd1,sd=sd*,seekpct=0,rdpct=0,xfersize=4k
rd=rd1,wd=wd1,iorate=max,elapsed=600,interval=5,warmup=30

在1-5行中说明了测试使用的磁盘,sd为自定义名称,一般从sd1起命名,lun为测试时使用的卷的名称,openflag设置读写操作方式,一般为o_direct,即以无缓冲缓存的方式进行读写操作,threads规定了测试使用线程数; 第七行中规定了工作负载,wd为自定义工作负载名称,sd设置工作负载中使用到的存储设备,例中sd*则表示此工作负载使用了全部以sd开头的存储设备,seekpct为随机操作比例,为0则为顺序操作,rdpct为读操作比例,为0即为此工作负载全部为写操作,xfersize为操作数据的大小; 最后一行中设定了运行参数,rd为运行定义的名称,wd为使用到的工作负载名称,iorate为测试时的速率,max即为以最大的速率进行测试,elapsed为正式测试时长,interval为命令行打印输出的时间间隔,warmup为预测试的时长(预测试时间内的测试值不会计入最终测试结果中),elapsed、interval和warmup的单位均为s。

  • 块存储测试(多客户端): 多客户端测试前,首先要确定主测试客户端,保证每个测试客户端上均可正常运行vdbench测试软件,且主测试客户端可以和其他测试客户端通过ssh免密访问。 按照下述测试用例对具体字段进行解释:
hd=default,vdbench=/home/vdbench50407,user=root,shell=ssh
hd=hd1,system=localhost
hd=hd2,system=[测试客户端1 IP]
hd=hd3,system=[测试客户端2 IP]
hd=hd4,system=[测试客户端3 IP] sd=sd1,hd=hd1,lun=[hd1连接iscsi卷名称1],openflags=o_direct,threads=32
sd=sd2,hd=hd1,lun=[hd1连接iscsi卷名称2],openflags=o_direct,threads=32
sd=sd3,hd=hd2,lun=[hd2连接iscsi卷名称1],openflags=o_direct,threads=32
……
sd=sdn,hd=hd4,lun=[hd4连接iscsi卷名称n],openflags=o_direct,threads=32 wd=wd1,sd=sd*,seekpct=0,rdpct=0,xfersize=4k
rd=rd1,wd=wd1,iorate=max,elapsed=600,interval=5,warmup=30

在第一行中说明了测试客户端的默认设置,vdbench说明了默认的vdbench软件存放位置,user为客户端用户名,shell为ssh,说明通过ssh访问; 第2-5行中说明了测试客户端,hd为自定义客户端名称,system为测试客户端ip地址,本地可用localhost代替,若存放目录或用户名等项与第一行default中不一致,可再单独添加参数声明文件位置及用户信息; 第7-11行中说明了使用的磁盘,hd参数说明了lun参数指定的卷是在哪个客户端上的,其余参数与单客户端时一致; 其余设置均与单客户端一致,不再赘述。

  • 文件存储测试(单客户端): 文件存储测试与块存储测试的区别在于,块存储测试会直接写入或读取数据,不管挂载磁盘的状态,但文件存储测试在测试前会预先写入测试所需要的文件,即下方陈述的fsd中的文件及目录,所有文件及目录按照设定写入完毕后,才会进行正式测试,所以,一般来说,文件测试耗时会比块存储测试长很多。 按照下述测试用例对具体字段进行解释:
fsd=fsd1,anchor=[被测文件存储挂载目录],depth=2,width=10,files=2000,size=4M
fwd=fwd1,fsd=fsd1,operation=read,xfersize=4M,fileio=random,fileselect=random,threads=32
rd=rd1,fwd=fwd1,fwdrate=max,format=no,elapsed=600,interval=10

在第一行中说明了测试使用的文件目录,fsd为自定义文件系统名称,anchor为测试文件目录,depth为测试时目录的深度,width为测试时每个文件夹的子文件夹个数,files为单文件夹中文件的个数,size为文件大小,以上例为例,测试时测试目录创建10个目录,在此10个目录中各再创建10个子目录,共110个目录,每个最底层目录中存放2000个文件,共20w个文件,每个文件大小为4MiB; 第二行中规定了文件工作负载,fwd为自定义文件工作负载名称,fsd设置工作负载中使用到的文件系统,operation为操作类型,可选设read或write,xfersize为数据传输数据大小,fileio为文件操作方式,可选设random和sequential,threads为测试使用线程数; 最后一行中设定了运行参数,rd为运行定义的名称,fwd为使用到的文件工作负载名称,fwdrate为测试时的速率elapsed为正式测试时长,interval为命令行打印输出的时间间隔,elapsed和interval的单位均为s,format为预处理文件目录的方式,no为不删除已有文件直接进行测试,yes为无论是否已有文件目录,均删除后重新写入,restart为若已有文件目录,则直接运行测试,若无则新写入文件目录。

  • 文件存储测试(多客户端): 文件存储多客户端测试前,和块存储一样,需要先确认各个客户端可以ssh免密访问。 按照下述测试用例对具体字段进行解释:
hd=default,vdbench=/home/vdbench50407,user=root,shell=ssh
hd=hd1,system=localhost
hd=hd2,system=[测试客户端1 IP]
hd=hd3,system=[测试客户端2 IP]
hd=hd4,system=[测试客户端3 IP] fsd=fsd1,anchor=[hd1被测文件存储挂载目录],depth=2,width=10,files=2000,size=4M
fsd=fsd2,anchor=[hd2被测文件存储挂载目录],depth=2,width=10,files=2000,size=4M
fsd=fsd3,anchor=[hd3被测文件存储挂载目录],depth=2,width=10,files=2000,size=4M
fsd=fsd4,anchor=[hd4被测文件存储挂载目录],depth=2,width=10,files=2000,size=4M fwd=fwd1,fsd=fsd1,host=hd1,operation=read,xfersize=4M,fileio=random,fileselect=random,threads=32
fwd=fwd2,fsd=fsd2,host=hd2,operation=read,xfersize=4M,fileio=random,fileselect=random,threads=32
fwd=fwd3,fsd=fsd3,host=hd3,operation=read,xfersize=4M,fileio=random,fileselect=random,threads=32
fwd=fwd4,fsd=fsd4,host=hd4,operation=read,xfersize=4M,fileio=random,fileselect=random,threads=32 rd=rd1,wd=wd1,iorate=max,elapsed=600,interval=5,warmup=30

在第1-5行中说明了测试客户端设置,与块存储多客户端测试一致,不再赘述; 第7-10行中说明了测试使用的文件目录,参数意义与单客户端时一致,不再赘述,需要注意的是,以上例方式进行测试时,需要每个fsd的anchor值均不一致,若一致,则需要加上参数shared=yes,且测试中用到的文件个数为所有fsd中声明的文件个数之和; 第12-15行中说明了文件工作负载配置,与单客户端不一致的是增加了一个参数host,在host上声明了工作负载工作的测试客户端; 其余设置均与单客户端一致,不再赘述。

2. 测试执行

单客户端执行测试时,在vdbench文件目录下执行命令行./vdbench -f [测试用例文件] 即可; 多客户端测试时,则需在主测试客户端上执行上述命令; 上述命令也可加-o参数指定测试结果输出目录,还可加入-jn参数进行测试数据校验。

3. 结果查看

在测试中查看打印即可查看实时测试结果,测试完成后,也会在命令行汇总输出最终测试结果。

interval为avg的一行均为最终测试结果,i/o为每秒平均io操作数,MB/sec为平均每秒带宽,bytes为每io操作的字节大小,read pct为读百分比,resp time为平均响应时长,write resp为平均写时延,read resp为读平均时延,read max为读最大时延,write max为写最大时延。 此外,测试结束后,也可在output文件夹或测试执行时指定的输出文件夹中查看测试结果,以下为output文件夹中各个文件包括的内容:

  • errorlog.html:文件中显示测试时出现的一些错误信息,包括io错误信息和数据无效信息等;
  • histogram.html:一种包含报告柱状图的响应时间的文件,此报告只在文件测试后有数据内容;
  • logfile.html:包含Java 代码写入控制台窗口的每行信息的副本,logfile.html 主要用于调试用途;
  • parmfile.html:包含测试运行配置参数信息;
  • summary.html:记录全部数据信息,显示每个报告间隔内总体性能情况及工作负载情况,以及除预测试时间外的所有间隔的加权平均值;
  • totals.html:记录全部数据计算之后的平均值,一般测试结果从该文件取值,除预测试时间外所有间隔的加权平均值。

Vdbench 使用说明的更多相关文章

  1. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  2. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  3. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  4. Oracle 中 union 和union all 的简单使用说明

    1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...

  5. Map工具系列-02-数据迁移工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  6. Map工具系列-03-代码生成BySQl工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  7. jQuery验证控件jquery.validate.js使用说明

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  8. gdbsever 使用说明

    gdbsever 使用说明 在新塘N3292x平台下 编译 gdbsever ./configure --target=arm-linux --host=arm-linux arm-linux-gdb ...

  9. mongoVUE的增删改查操作使用说明

    mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...

  10. jQuery验证控件jquery.validate.js使用说明+中文API

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 学习 ...

随机推荐

  1. 基于java+springboot的租房网站、房屋出租管理系统

    该系统是基于java+springboot+vue开发的租房管理系统.是给师弟开发的课程作业.学习过程中,遇到问题可以留言咨询. 演示地址 前台地址: http://zf.gitapp.cn 后台地址 ...

  2. 【mysql】 解决 auto_increment 字段 Column count doesn't match value count at row 1

    1, 表结构   man +-------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PR ...

  3. 利用工具查看JMS微服务在线情况,可直接调用远程方法,也可自动生成微服务客户端代码

    链接:https://cccscls-my.sharepoint.com/personal/jack_mutc_ca/_layouts/15/onedrive.aspx?id=%2Fpersonal% ...

  4. [转帖]AES算法(五)GCM工作模式

    https://zhuanlan.zhihu.com/p/376692295 在以前介绍的基本工作模式中,ECB.CFB.OFB 三种模式可以解决 ECB 模式中相同明文生成相同密文的缺陷,CTR 又 ...

  5. [转帖]oracle通过pid查找执行SQL

    通过TOP 命令查看PID:1560 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1560 oracle 20 0 38.978g 0. ...

  6. [转帖]TiKV & TiFlash 加速复杂业务查询

    https://tidb.net/book/tidb-monthly/2022/2022-07/usercase/tikv-tiflash 背景​ 在互联网公司或传统公司的 CRM 系统中,最常用的功 ...

  7. [转帖]ChatGPT研究框架(2023)

    https://www.eet-china.com/mp/a226595.html ChatGPT是基于OpenAI公司开发的InstructGPT模型的对话系统,GPT系列模型源自2017年诞生的T ...

  8. Springboot下micrometer+prometheus+grafana进行JVM监控的操作过程

    Springboot下micrometer+prometheus+grafana进行JVM监控的操作过程 背景 同事今天提交了一个补丁. 给基于Springboot的产品增加了micrometer等收 ...

  9. 手写promise自定义封装异步任务回调的执行

    自定义封装异步任务回调的执行 <script type="text/javascript"> let p = new Promise((resolve, reject) ...

  10. 【笔记】vm-storage的go profile调用图表(没什么实际意义,就是为了做笔记)

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 1.启动 force merge curl -G &quo ...