文件系统参数文件定义顺序:HD FSD FWD RD
HD
(Host Define):主机定义,在多主机联机测试时需要配置
- 配置案例
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node241 hd=hd2,system=node242 hd=hd3,system=node243
- hd= 标识主机定义的名称,多主机运行时,可以使用hd1、hd2、hd3...区分
- system= 主机IP地址或主机名
- vdbench= vdbench执行文件存放路径,当多主机存放路径不同时,可在hd定义时单独指定
- user= slave和master通信使用用户
- shell= 可选值为rsh、ssh或vdbench,默认值为rsh,多主机联机测试时,mater和slave主机间通信方式 当参数值为rsh时,需要配置master和slave主机rsh互信,考虑到rsh使用明文传输,安全级别不够,通常情况下不建议使用这种通信方式,当参数值为ssh时,需要配置master和slave主机ssh互信,通常Linux主机联机时使用此通信方式,当参数值为vdbench,需要在所有slave主机运行vdbench,rsh启用vdbench本身的rsh守护进程,通常Window主机联机时使用此通信方式
FSD
(File System Define)
- 配置案例
fsd=default,depth=2,width=3,files=2,size=128k fsd=fsd1,anchor=/mnt/client1 fsd=fsd2,anchor=/mnt/client2 fsd=fsd3,anchor=/mnt/client3
- fsd= 标识文件系统定义的名称,多文件系统时(fsd1、fsd2、fsd3...),可以指定default(将相同的参数作为所有fsd的默认值)
- anchor= 文件写入根目录
- depth= 创建目录层级数(即目录深度)
- width= 每层文件夹的子文件夹数
- files= 测试文件个数(vdbench测试过程中会生成多层级目录结构,实际只有最后一层目录会生成测试文件)
- size= 每个测试文件大小
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node1 hd=hd2,system=node2 hd=hd3,system=node3 fsd=fsd1,anchor=/client/,depth=2,width=100,files=100,size=4k,shared=yes
- shared= 可选值为yes或no,默认值为no,一般只有在多主机联机测试时指定vdbench不允许不同的slave之间共享同一个目录结构下的所有文件,因为这样会带来很大的开销,但是它们允许共享同一个目录结构。加入设置了shared=yes,那么不同的slave可以平分一个目录下所有的文件来进行访问,相当于每个slave有各自等分的访问区域,因此不能测试多个客户的对同一个文件的读写
- 当多主机联机测试时,写入的根目录anchor为同一个路径时,需要指定参数值为yes
FWD
(FileSystem Workload Define)
- 配置案例
fwd=default,operation=read,xfersize=4k,fileio=sequential,fileselect=random,threads=2 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd2,host=hd2 fwd=fwd3,fsd=fsd3,host=hd3
- fwd= 标识文件系统工作负载定义的名称,多文件系统工作负载定义时,可以使用fwd1、fwd2、fwd3...区分
- fsd= 标识此工作负载使用文件存储定义的名称
- host= 标识此工作负载使用主机
- operation= 可选值为read或write,文件操作方式
- rdpct= 可选值为0~100,读操作占比百分比,一般混合读写时需要指定,当值为60时,则混合读写比为6:4
- fileio= 可选值为random或sequential,标识文件 I/O 将执行的方式
- fileselect= random或sequential,标识选择文件或目录的方式
- xfersizes= 数据传输(读取和写入操作)处理的数据大小(即单次IO大小)
- threads= 此工作负载的并发线程数量
RD
(Run Define)
- 配置案例
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=604800,interval=10
- rd= 标识文件系统运行定义的名称。
- fwd= 标识文件系统工作负载定义的名称。
- fwdrate= 每秒执行的文件系统操作数量。设置为max,表示不做任何限制,按照最大强度自适应
- format= 可选值为yes、no或restart,标识预处理目录和文件结构的方式
- --yes表示删除目录和文件结构再重新创建
- --no表示不删除目录和文件结构
- --restart表示只创建未生成的目录或文件,并且增大未达到实际大小的文件
- elapsed= 默认值为30,测试运行持续时间(单位为秒)
- interval= 结果输出打印时间间隔(单位为秒)
性能指标
-
ReqstdOps
rate
- 每秒读写I/O个数(读写IOPS),能够经过rd运行定义参数fwdrate控制
- 当fwdrate为max时,以最大I/O速率运行工做负载
- 当fwdrate为低于最大I/0速率的一个数值时,能够限制读写速度,以固定I/O速率运行工做负载
resp
- 读写请求响应时间(读写时延),单位为ms
-
cpu%
- tatol
- 总的cpu占用率
- sys
- 系统cpu占用率
- tatol
-
read pct
- 读取请求占总请求数百分比占比,当为0时表示写,当为100时表示读
-
read
- rate
- 每秒读I/O个数(读IOPS)
- resp
- 读请求响应时间(读时延),单位为ms
- rate
-
write
- rate
- 每秒写I/O个数(写IOPS)
- resp
- 写请求响应时间(写时延),单位为ms
- rate
-
mb/sec
- read
- 每秒读取速度
- write
- 每秒写入速度
- read
-
total
- 每秒读写速度总和
-
xfersize
- 每一个读写I/O传输数据量(即单个读写I/O大小),单位为字节B
块设备参数文件定义顺序为:HD、SD、WD、RD
SD
(Storage Define)
- 配置案例
sd=sd1,hd=hd1,lun=/dev/sdb,openflags=o_direct,threads=6 sd=sd3,hd=hd2,lun=/dev/sdb,openflags=o_direct,threads=6 sd=sd6,hd=hd3,lun=/dev/sdb,openflags=o_direct,threads=6
- sd= 标识存储定义的名称
- hd= 标识主机定义的名称
- lun= 写入块设备,如:/dev/sdb, /dev/sdc...
- openflags= 通过设置为o_direct,以无缓冲缓存的方式进行读写操作
- threads= 对SD的最大并发I/O请求数量
WD
(Workload Define)
- 配置案例
wd=wd1,sd=sd*,seekpct=100,rdpct=100,xfersize=8k,skew=40 wd=wd2,sd=sd*,seekpct=100,rdpct=0,xfersize=8k,skew=10 wd=wd3,sd=sd*,seekpct=100,rdpct=100,xfersize=1024k,skew=40 wd=wd4,sd=sd*,seekpct=100,rdpct=0,xfersize=1024k,skew=10
- wd= 标识工作负载定义的名称
- sd= 标识存储定义的名称
- seekpct= 可选值为0或100(也可使用sequential或random表示),默认值为100,随机寻道的百分比,设置为0时表示顺序,设置为100时表示随机
- rdpct= 读取请求占请求总数的百分比,设置为0时表示写,设置为100时表示读
- xfersize= 要传输的数据大小。默认设置为4k
- skew= 非必选项,一般在多个工作负载时需要指定,表示该工作负载占总工作量百分比(skew总和为100)
RD
(Run Define)
- 配置案例
rd=rd1,wd=wd*,iorate=max,maxdata=400GB,warmup=30,elapse=604800,interval=5
- rd= 标识运行定义的名称
- wd= 标识工作负载定义的名称
- iorate= 常用可选值为100、max,此工作负载的固定I/O速率
- --当参数值为100时,以每秒100个I/Os的速度运行工作负载,当参数值设置为一个低于最大速率的值时,可以达到限制读写速度的效果
- --当参数值为max时,以最大的I/O速率运行工作负载,一般测试读写最大性能时,该参数值均为max
- warmup= 预热时间(单位为秒),默认情况下vdbench会将第一个时间间隔输出数据排除在外,程序在预热时间内的测试不纳入最终测试结果中(即预热结束后,才开始正式测试)
- --当interval为5、elapsed为600时,测试性能为2~elapsed/interval(avg_2-120)时间间隔内的平均性能
- --当interval为5、warmup为60、elapsed为600时,测试性能为1+(warmup/interval)~(warmup+elapsed)/interval(avg_13-132)时间间隔内的平均性能
- maxdata= 读写数据大小,通常情况下,当运行elapsed时间后测试结束;当同时指定elapsed和maxdata参数值时,以最快运行完的参数为准(即maxdata测试时间小于elapsed时,程序写完elapsed数据量后结束)
- --当参数值为100以下时,表示读写数据量为总存储定义大小的倍数(如maxdata=2,2个存储定义(每个存储定义数据量为100G),则实际读写数据大小为400G)
- --当参数值为100以上时,表示数据量为实际读写数据量(可以使用单位M、G、T等)
- elapsed= 默认值为30,测试运行持续时间(单位为秒)
- interval= 报告时间间隔(单位为秒)
性能指标
i/o rate
- 每秒读写I/O个数(读写IOPS),能够经过rd运行定义参数iorate控制
- 当iorate为max时,以最大I/O速率运行工做负载
- 当iorate为低于最大I/0速率的一个数值时,能够限制读写速度,以固定I/O速率运行工做负载
MB/sec
- 每秒读写速度(读写带宽)
bytes i/0
- 每一个读写I/O传输数据量(即单个读写I/O大小),单位为字节B,能够经过wd工做负载定义参数xfersize控制
read pct
- 读取请求占请求总数的百分比,能够经过wd工做负载定义参数rdpct控制
- 当rdpct为0时,表示测试模型为写
- 当rdpct为100时,表示测试模型为读
resp time
- 请求响应时间(读写时延),单位为毫秒ms
read resp
- 读请求响应时间,单位为毫秒ms
write resp
- 写入请求响应时间,单位为毫秒ms
resp max
- 最大请求响应时间,单位为毫秒ms
resp stddev
- 请求响应时间标准误差,单位为毫秒ms
queue depth
- 读写I/0队列深度
cpu% sys+u
- 内核态空间及用户态空间CPU占用率
cpu% sys
- 内核态空间CPU占用率