vdbench和fio测试磁盘性能的对比总结
一、安装
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) , , Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50406 Wed July :: MDT
For documentation, see 'vdbench.pdf'. ::50.883 input argument scanned: '-f/tmp/parmfile'
::50.939 Starting slave: /var/www/html/vdbench504/vdbench SlaveJvm -m localhost -n localhost---16.47.50.757 -l localhost- -p
::01.006 Waiting for slave connection: localhost-
::01.508 All slaves are now connected
::03.002 Starting RD=rd1; I/O rate: ; elapsed=; For loops: None Nov , interval i/o MB/sec bytes read resp read write resp resp queue cpu% cpu%
rate ** i/o pct time resp resp max stddev depth sys+u sys
::04.051 86.00 0.08 54.65 0.012 0.009 0.015 0.064 0.010 0.0 12.6 2.1
::05.047 93.00 0.09 50.54 0.016 0.012 0.020 0.064 0.012 0.0 5.1 1.0
::06.047 94.00 0.09 50.00 0.010 0.007 0.013 0.043 0.006 0.0 2.0 0.0
::07.046 88.00 0.09 50.00 0.012 0.008 0.017 0.043 0.009 0.0 2.5 0.5
::08.051 99.00 0.10 57.58 0.009 0.007 0.013 0.026 0.005 0.0 2.0 0.5
::08.076 avg_2- 92.00 0.09 52.61 0.012 0.008 0.016 0.064 0.009 0.0 6.6 1.1
::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=
wd=wd1,sd=sd1,xfersize=16k,readpct=0,seekpct=100
rd=rd1,wd=wd1,iorate=max,elapsed=,maxdata=5500g,interval=,warmup=
随机读: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=1
wd=wd1,sd=sd*,xfersize=16k,readpct=,seekpct=
rd=rd1,wd=wd1,iorate=max,elapsed=,maxdata=5500g,interval=,warmup=
如果多节点测试,则需要设置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.118
hd=hd2,system=10.139.11.119
#hd=hd3,system=93.93.41.9
sd=sd1,hd=hd1,lun=/dev/vdc,openflags=o_direct,threads=
sd=sd2,hd=hd2,lun=/dev/vdc,openflags=o_direct,threads=
wd=wd1,sd=sd*,xfersize=16k,readpct=,seekpct=
rd=run1,wd=wd1,iorate=,elapsed=,interval=
2)测试文件随机写
hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh fsd=fsd1,anchor=/mnt/,depth=,width=,files=,size=2m,shared=yes
fwd=fwd1,fsd=fsd1,threads=,xfersize=4k,fileio=random,fileselect=random,operation=write rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=,interval=
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和fio测试磁盘性能的对比总结的更多相关文章
- fio 测试磁盘性能
在磁盘测试中最关心的几个指标分别为: iops(每秒执行的IO次数).bw(带宽,每秒的吞吐量).lat(每次IO操作的延迟). 当每次IO操作的block较小时,如512bytes/4k/8k等,测 ...
- [记录]FIO测试磁盘iops性能
FIO测试磁盘iops性能 1.SATA和SAS盘原生IOPS如下: 2.RAID磁盘阵列对应的写惩罚级别: 3.计算功能性IOPS公式如下: 功能性 IOPS=(((总原生 IOPS×写 %))/( ...
- 使用SQLIO测试磁盘性能
SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...
- linux使用FIO测试磁盘的iops 【转载】
linux使用FIO测试磁盘的iops 2013-09-23 10:59:21 分类: LINUX FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括 ...
- 【转】dd命令详解及利用dd测试磁盘性能
dd命令详解及利用dd测试磁盘性能 linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...
- Linux 中使用 dd 测试磁盘性能
翻译自 : Linux I/O Performance Tests using dd 基本说明 dd 可以用来做简单的低级别复制文件. 这样做, 一般都是可一直直接访问设备文件. 需要说明的是, 错误 ...
- 使用FIO测试磁盘iops
我们如何衡量一个存储的性能呢?IOPS(Input/Output OperationsPer Second),即每秒进行读写(I/O)操作的次数是国际上通用的存储性能衡量标准,IOPS越高意味着在同一 ...
- iozone测试磁盘性能
什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...
- 使用iozone测试磁盘性能
IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...
随机推荐
- 20154327 Exp5 MSF基础应用
基础问题回答 用自己的话解释什么是exploit,payload,encode. exploit漏洞利用,一般出现漏洞后,根据一些大佬们给出的POC尝试去进行漏洞利用. payload攻击负载,是我们 ...
- C#调用c++类的导出函数
C# 需要调用C++东西,但是有不想做成COM,就只好先导出类中的函数处理. 不能直接调用,需单独导出函数 参考:http://blog.csdn.net/cartzhang/article/deta ...
- c++动态库封装及调用(1、动态库介绍)
1.一个程序从源文件编译生成可执行文件的步骤: 预编译 --> 编译 --> 汇编 --> 链接 (1)预编译,即预处理,主要处理在源代码文件中以“#”开始的预编译指令,如宏展开 ...
- 成都Uber优步司机奖励政策(1月8日)
1月8日 奖励政策 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblog ...
- HTML5 离线应用程序
离线Web应用:当客户端本地与Web应用程序的服务器没有建立连接时,也能正常在客户端本地使用该Web应用. Web应用程序的本地缓存与浏览器的网页缓存的区别 1. 本地缓存为整个Web应用程序服务,网 ...
- 「题目代码」P1054~P1059(Java)
P1054 猴子吃桃 import java.util.*; import java.io.*; import java.math.BigInteger; import java.lang.Chara ...
- MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)
关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...
- <cerrno>
文件头名称: <cerrno>(errno.h) 文件头描述: 文件内定义了如下的宏 errno 最后一个错误代码 加上其他至少的三个宏常量:EDOM,ERANGE 和EILSEQ 宏定 ...
- 基于 CPython 解释器,为你深度解析为什么Python中整型不会溢出
前言 本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后, ...
- JVM学习--jvm监控和故障处理工具
java虚拟机性能监控常用命令 Sun JDK监控和故障处理命令有jps.jstat.jinfo.jmap.jhat.jstack . 1.jps jps:JVM Process Status Too ...