一、安装

1、安装vdbench,首先安装java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

其次下载vdbench安装包并进行安装:http://pan.baidu.com/s/1b7XooY;

#mv vdbench50406 /var/www/html/#unzip vdbench50406.zip-d vdbench504

启动基准测试之前,使用默认的参数检查安装是否成功完成:

# ./vdbench -t

[root@lrrvd vdbench504]# ./vdbench -t

Copyright (c)2000, 2016, Oracle and/or its affiliates. All rights reserved.

Vdbench distribution: vdbench50406 Wed July20 15:49:52 MDT 2016For documentation, see'vdbench.pdf'.16:47:50.883 input argument scanned: '-f/tmp/parmfile'

16:47:50.939 Starting slave: /var/www/html/vdbench504/vdbench SlaveJvm -m localhost -n localhost-10-171116-16.47.50.757 -l localhost-0 -p 5570

16:48:01.006 Waiting for slave connection: localhost-0

16:48:01.508All slaves are now connected16:48:03.002 Starting RD=rd1; I/O rate: 100; elapsed=5; For loops: None

Nov16, 2017 interval i/o MB/sec bytes read resp read write resp resp queue cpu% cpu%rate1024**2 i/o pct time resp resp max stddev depth sys+u sys16:48:04.051 1 86.00 0.08 1024 54.65 0.012 0.009 0.015 0.064 0.010 0.0 12.6 2.1

16:48:05.047 2 93.00 0.09 1024 50.54 0.016 0.012 0.020 0.064 0.012 0.0 5.1 1.0

16:48:06.047 3 94.00 0.09 1024 50.00 0.010 0.007 0.013 0.043 0.006 0.0 2.0 0.0

16:48:07.046 4 88.00 0.09 1024 50.00 0.012 0.008 0.017 0.043 0.009 0.0 2.5 0.5

16:48:08.051 5 99.00 0.10 1024 57.58 0.009 0.007 0.013 0.026 0.005 0.0 2.0 0.5

16:48:08.076 avg_2-5 92.00 0.09 1024 52.61 0.012 0.008 0.016 0.064 0.009 0.0 6.6 1.1

16:48:08.749 Vdbench execution completed successfully. Output directory: /var/www/html/vdbench504/output

目前为止,安装完成。

介绍一下参数意义:对于一个虚拟块设备,配置以下参数

HD:主机定义

如果您希望展示当前主机,则设置 hd= localhost。如果希望指定一个远程主机,hd= label。

system= IP 地址或网络名称

clients= 用于模拟服务器的正在运行的客户端数量。

SD:存储定义

sd= 标识存储的名称。

host= 存储所在的主机的 ID。

lun= 原始磁盘、磁带或文件系统的名称。vdbench 也可为您创建一个磁盘。

threads= 对 SD 的最大并发 I/O 请求数量。默认为 8。

hitarea= 调整读取命中百分比的大小。默认为 1m

openflags= 用于打开一个 lun 或一个文件的 flag_list

WD:工作负载定义

wd= 标识工作负载的名称

sd= 要使用的存储定义的 ID

host= 要运行此工作负载的主机的 ID。默认设置为 localhost

rdpct= 读取请求占请求总数的百分比,为100,则为读;为0,则为写。

rhpct= 读取命中百分比。默认设置为 0。

whpct= 写入命中百分比。默认设置为 0。

xfersize= 要传输的数据大小。默认设置为 4k。

seekpct= 随机寻道的百分比。可为随机值,为0则为顺序;为100则为随机。

openflags= 用于打开一个 lun 或一个文件的 flag_list,裸盘设置openflags=o_direct

iorate= 此工作负载的固定 I/O 速率

RD:运行定义

rd= 标识运行的名称。

wd= 用于此运行的工作负载的 ID。

iorate= (#,#,...) 一个或多个 I/O 速率

curve:性能曲线(待定义)。

max:不受控制的工作负载。

elapsed= time:以秒为单位的运行持续时间。默认设置为 30。

warmup= time:加热期,最终会被忽略

distribution= I/O 请求的分布:指数、统一或确定性。

pause= 在下一次运行之前休眠的时间,以秒为单位。

openflags= 用于打开一个 lun 或一个文件的 flag_list。

对于一个文件系统,配置以下参数:

HD:主机定义。与虚拟块设备相同

FSD:文件系统定义

fsd= 标识文件系统定义的名称

anchor= 将在其中创建目录结构的目录

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

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

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

sizes= (size,size,...) 将创建的文件大小

distribution= bottom(如果希望仅在最低级别创建文件)和 all(如果希望在所有目录中创建文件)

openflags= 用于打开一个文件系统 (Solaris) 的 flag_list

FWD:文件系统工作负载定义

fwd= 标识文件系统工作负载定义的名称

fsd= 要使用的文件系统定义的 ID

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

fileio= random 或 sequential,表示文件 I/O 将执行的方式。顺序读写,随机速写;对应裸设备的seekpct

fileselect= random 或 sequential,标识选择文件或目录的方式。选择其中的文件或目录是随机的选择,还是按着顺序选择

xfersizes= 数据传输(读取和写入操作)处理的数据大小。

operation= mkdir、rmdir、create、delete、open、close、read、write、getattr 和 setattr。选择要执行的单个文件操作。

rdpct= (仅)读取和写入操作的百分比。

threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件。

RD:运行定义

fwd= 要使用的文件系统工作负载定义的 ID。

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

format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。

no是不改变文件目录;yes是改变;restart是接着原来的文件目录再去创建;

operations= 覆盖 fwd 操作。选项相同。

1)测试块设备的性能(随机写)

编辑测试脚本文件test1(测试本机一块磁盘)

hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh

sd=sd1,lun=/dev/vdc,openflags=o_direct,threads=1wd=wd1,sd=sd1,xfersize=16k,readpct=0,seekpct=100rd=rd1,wd=wd1,iorate=max,elapsed=120,maxdata=5500g,interval=1,warmup=30

随机读:readpct=100,seekpct=100;随机写:readpct=0,seekpct=100;随机读写各占50%:readpct=50,seekpct=100;顺序读:readpct=100,seekpct=0;顺序写:readpct=0,seekpct=0;顺序读写各占50%:readpct=50,seekpct=0

测试本机两块磁盘(后面类推)

hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh

sd=sd1,lun=/dev/vdc,openflags=o_direct,threads=1

sd=sd2,lun=/dev/vdb,openflags=o_direct,threads=1wd=wd1,sd=sd*,xfersize=16k,readpct=0,seekpct=100rd=rd1,wd=wd1,iorate=max,elapsed=120,maxdata=5500g,interval=1,warmup=30

如果多节点测试,则需要设置ssh通信,并且每个节点都安装vdbench,路径一致:

第一步:在本地机器上使用ssh-keygen产生公钥私钥对

第二步:用ssh-copy-id将公钥复制到远程机器中

# ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host

多台可以循环或者用ansible批量执行

#for i in {x..y};do ssh-copy-id -i ~/.ssh/id_rsa.pub 10.139.11.$i;done

#ansible test -m copy -a "src=/root/.ssh/id_rsa.pub dest=/root/.ssh/"

注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中,通信成功,ssh remote-host

hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh

hd=hd1,system=10.139.11.118hd=hd2,system=10.139.11.119#hd=hd3,system=93.93.41.9sd=sd1,hd=hd1,lun=/dev/vdc,openflags=o_direct,threads=1sd=sd2,hd=hd2,lun=/dev/vdc,openflags=o_direct,threads=1wd=wd1,sd=sd*,xfersize=16k,readpct=0,seekpct=100rd=run1,wd=wd1,iorate=100,elapsed=120,interval=1

2)测试文件随机写

hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh

fsd=fsd1,anchor=/mnt/1,depth=1,width=10,files=10,size=2m,shared=yes

fwd=fwd1,fsd=fsd1,threads=6,xfersize=4k,fileio=random,fileselect=random,operation=writerd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=120,interval=1

fwd=format,表示fwd那行所有的参数设置都被覆盖,不论设置rdpct为多少,全为read操作

进行数据一致性校验:通过加-v或-j或Validate=yes

-v的数据校验,校验文件会输出到内存中,但是一旦vdbench关闭或者系统重启,校验就会失败。而-j能进行持续校验,等下次重启时,会恢复原始数据重新校验。如果只写-j而不加-v,也会进行-v操作。

执行测试:./vdbench -f example -jn         其中-jn是为了做数据校验

每次运行后,vdbench 会创建一个包含以下文件的output文件夹:

(1)errorlog.html——当为测试启用了数据验证(-jn)时,它可包含一些数据块中的错误的相关信息:

无效的密钥读取

无效的 lba 读取(一个扇区的逻辑字节地址)

无效的 SD 或 FSD 名称读取

数据损坏,即使在使用错误的 lba 或密钥时

数据损坏

坏扇区

(2)flatfile.html——包含 vdbench 生成的一种逐列的 ASCII 格式的信息。

(3)histogram.html——一种包含报告柱状图的响应时间、文本格式的文件。

(4)logfile.html——包含 Java 代码写入控制台窗口的每行信息的副本。logfile.html 主要用于调试用途

(5)parmfile.html——显示已包含用于测试的每项内容的最终结果

(6)resourceN-M.html、resourceN.html、resourceN.var_adm_msgs.html

摘要报告、stdout/stderr 报告、主机 N 的摘要报告

最后 “nn” 行文件 /var/adm/messages 和 /var/adm/messages。每个 M 个 JVM/Slave 的目标主机 N 和主机 N 上为 0。

(7)sdN.histogram.html、sdN.html——每个 N 存储定义的柱状图和存储定义 “N” 报告。

(8)summary.html——主要报告文件,显示为在每个报告间隔的每次运行生成的总工作负载,以及除第一个间隔外的所有间隔的加权平均值。

interval:报告间隔序号

I/O rate:每秒观察到的平均 I/O 速率

MB sec:传输的数据的平均 MB 数

bytes I/O:平均数据传输大小

read pct:平均读取百分比

resp time:以读/写请求持续时间度量的平均响应时间。所有 vdbench 时间都以毫秒为单位。

resp max:在此间隔中观察到的最大响应时间。最后一行包含最大值总数。

resp stddev:响应时间的标准偏差

cpu% sys+usr:处理器繁忙 = 100(系统 + 用户时间)(Solaris、Windows、Linux)

cpu% sys:处理器利用率:系统时间

(9)swat_mon.txt,swat_mon_total.txt

vdbench 与 Sun StorageTekTM Workload Analysis Tool (Swat) Trace Facility (STF) 相结合,支持重放使用 Swat 创建的一个轨迹的 I/O 工作负载。

Swat 使用 Create Replay File 选项创建和处理的轨迹文件会创建文件 flatfile.bin(flatfile.bin.gz 用于 vdbench403 和更高版本),其中包含 Swat 所识别的每个 I/O 操作的一条记录。

这些文件包含一个格式化的报告,可将该报告导入 Swat Performance Monitor (SPM) 中来创建性能图表。

2、fio的安装

直接下载安装软件,拷贝到虚机即可,通过自己写脚本或者执行命令去测试,如下命令是测试随机读写,读写比例为7:3

fio --ioengine=libaio --direct=1 --group_reporting --norandommap --userspace_reap --thread --time_based --runtime=1800 --ramp_time=60 --randrepeat=0 --iodepth=16 --numjobs=4 --rw=randrw --rwmixread=70 --bs=4k --filename=/dev/vdb --size=200G --name=randrw1

二、两者的区别与共同之处

1、vdbench中的threads相当于fio的threads和depth

2、vdbench测试结果中的I/O相当于fio的iops;vdbench中的MB/sec相当于fio的BW带宽;vdbench的rest time相当于fio的时延

3、vdbench测试的是整个集群或者整个虚机或者所有磁盘的总性能,而fio需要写脚本去测试多个磁盘或者多台虚机

4、vdbench有数据一致性校验的参数,进行数据校验需要执行-v,也可以在参数文件中写入Validate=yes;fio没有

vdbench的作用_vdbench和fio测试磁盘性能的对比总结相关推荐

  1. fio 测试磁盘性能

    在磁盘测试中最关心的几个指标分别为: iops(每秒执行的IO次数).bw(带宽,每秒的吞吐量).lat(每次IO操作的延迟). 当每次IO操作的block较小时,如512bytes/4k/8k等,测 ...

  2. linux使用FIO测试磁盘的iops

    linux使用FIO测试磁盘的iops 博客分类: IO FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, po ...

  3. fio 是测试磁盘性能的最佳工具

    磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. fio 是测试磁盘性能的最佳工具: ddif=/dev/zero  of=/root/test bs=4kcount ...

  4. 使用fio测试磁盘I/O性能

    使用fio测试磁盘I/O性能 PTE 前言 fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, ...

  5. python性能测试方法_Python实现测试磁盘性能的方法

    本文实例讲述了Python实现测试磁盘性能的方法.分享给大家供大家参考.具体如下: 该代码做了如下工作: create 300000 files (512B to 1536B) with data f ...

  6. 【转】dd命令详解及利用dd测试磁盘性能

    dd命令详解及利用dd测试磁盘性能 linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [opti ...

  7. fio测试磁盘/U盘吞吐量

    编译fio: 进入fio-master文件夹 1./configure 2. make //生成fio可执行文件 3. make install yqq@ubuntu18:~/Tool/fio-mas ...

  8. FIO测试硬盘性能参数和实例详细总结(附源码)

    目录 一.简介 二.源码下载及参数解析 2.1 源码下载方式 2.2 参数解析 2.3 测试实例 三.其他相关链接 [3.1 Linux下stream内存带宽测试总结附源码](https://blog ...

  9. linux dd iflag oflag,【转】dd命令详解及利用dd测试磁盘性能

    linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [option] dd --help info ...

最新文章

  1. 三 volatile关键字
  2. 配置vsftpd的遇到的坑及搭建虚拟账户
  3. python爬虫程序实例-10个python爬虫入门实例
  4. html5语义元素表,HTML5的结构和语义(3):语义性的块级元素
  5. SET NOCOUNT的用法和注意事项
  6. 阿里云开源PolarDB数据库,与社区共建云原生分布式数据库生态
  7. iOS之深入解析Xcode编译运行的原理与应用
  8. pyspark的rdd直接写入mysql
  9. 使用jMeter构造大量并发的随机HTTP请求
  10. C++常用的容器(vector、set、list、map)
  11. uni-app之新建项目无模板选择以及点击创建后一直卡住不动
  12. python列表切片赋值_Python中对切片赋值原理分析
  13. 此次边路调整系统推荐射手走哪路_王者荣耀:廉颇“史诗级”改动,成吉思汗等射手降温!...
  14. Django配置文件常用信息
  15. 方舟生存进化刷精英恐龙代码
  16. Python札记6_字典1
  17. 【数据库】数据库入门(五): 实体关系模型 (Entity-Relationship Model)
  18. Python 源码学习:类型和对象
  19. 2020,和自己的一场对话
  20. ES6 findIndex()返回结果有true,却返回的索引位置一直是-1

热门文章

  1. mysql where不能用聚合函数_Mysql聚合函数对where语句筛选结果的影响
  2. matlab 三维显示原图像_图像分割基础
  3. linux mysql 编码修改吗_Linux下mysql 修改编码
  4. axios文件上传 formdata_基于业务场景下的图片/文件上传方案总结
  5. ntp协议原理linux网络编程,NTP协议
  6. 项目管理工具project软件学习(八) - 关键路径查询、资源可用性
  7. dotnet-cli命令小结
  8. 程序挂起时自动创建转储文件
  9. ini文件中文乱码 python_python编程之ini文件处理-configparser模块应用
  10. paging library java_Android官方分页组件介绍之Paging的使用详解