vdbench测试SSD快速入门

vdbench测试SSD快速入门使用 vdbench 测试 SSD vdbench

大家好,欢迎来到IT知识分享网。

介绍

vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。我们下面主要以块设备为介绍对象。

下载及安装

下载地址:

Vdbench Downloads

下载后直接解压就可以使用,此外还要安装javacsh,因为vdbench是使用java编写的。

Linux下:

yum install java

yum install csh

使用

1)检查vdbench环境

当开始使用时,./vdbench   -t 验证下是否存在问题,如下图有报错现象,对整个文件夹增加权限后,输出正常。

vdbench测试SSD快速入门

2)运行测试模型

对于单独的块设备来说,常见的vdbench使用如下

./vdbench –f xxx –o xxx

-f后跟运行的配置文件,-o后面跟保存测试结果的文件夹

3)配置文件

配置文件可以参考解压后的examples文件夹下的脚本,比如create_files;也可以参考output目录下的parmfile.html,下面我们以一个例子来进行拆解。

vdbench测试SSD快速入门

 

块设备配置文件定义顺序为:HDSDWDRD,后面三个对应上图的A,B,C,至于为什么没有HD(Host Define 主机定义),主要是我们是单机使用,未涉及联机使用,不是一个必选项,暂时跳过。

区域A主要是对SD(Storage Define 存储定义)配置

  • sd= 标识存储定义的名称
  • hd= 标识主机定义的名称
  • lun= 写入块设备,如:/dev/sdb, /dev/sdc…
  • openflags= 通过设置为o_direct,以无缓冲缓存的方式进行读写操作
  • threads= SD的最大并发I/O请求数量
  • offset=lun上的偏移

注意:待测SSD要进行分区,不要使用fdisk命令,因为它最大只能对2T进行操作,而SSD显然可以更大,所以我们要使用parted分区命令。操作如下:

  #创建分区表

  parted /dev/nvme0n1 mklabel gpt

   #将硬盘容量分给分区1并指定起止位置

  parted /dev/nvme0n1 mkpart 1  0% 25%

    #查询磁盘的已有分区

  parted /dev/nvme0n1 print

    #格式化分区

       mkfs -t ext2 /dev/nvme0n1p1

区域B主要是对WD(Workload Define 工作负载定义)配置

  • wd= 标识工作负载定义的名称
  • sd= 标识存储定义的名称
  • seekpct= 可选值为0100(也可使用sequentialrandom表示),默认值为100,随机寻道的百分比,设置为0时表示顺序,设置为100时表示随机。
  • rdpct= 读取请求占请求总数的百分比,设置为0时表示写,设置为100时表示读
  • xfersize= 要传输的数据大小。默认设置为4k

这里主要是配置要测试哪个sd,读还是写,顺序还是随机,bs是多少。需要注意的是sd*实际上是指所有的sd,虽然区域A上面只有1sd,但是如果有多个sd的话都是要一起去执行。

区域C主要是对RD(Run Define)配置

  • rd= 标识运行定义的名称
  • wd= 标识工作负载定义的名称
  • iorate= 常用可选值为100max,此工作负载的固定I/O速率
    当参数值为100时,以每秒100I/Os的速度运行工作负载,当参数值设置为一个低于最大速率的值时,可以达到限制读写速度的效果
    当参数值为max时,以最大的I/O速率运行工作负载,一般测试读写最大性能时,该参数值均为max
  • warmup= 预热时间(单位为秒),默认情况下vdbench会将第一个时间间隔输出数据排除在外,程序在预热时间内的测试不纳入最终测试结果中(即预热结束后,才开始正式测试)
  • elapsed= 默认值为30,测试运行持续时间(单位为秒)
  • interval= 报告时间间隔(单位为秒)

这里需要注意的地方有两点:

1)我们选择iorate=(curve),curve=(10-120,10),实际上就是限制io的速率从10%120%按照10%为间隔增长,即就是顺序随机读写每个workload都要在不同的速率下跑一次,即要跑12次。(高于100%实际还是按100%执行)

2)  RD出现”forxx”时,会把之前的参数配置强制覆盖掉,比如我们再区域B定义顺序读写bs=4k,但是区域C中使用forxfersize=(64k),所以最终还是会以64k去传输数据。

结果分析

如果运行没有出现错误,最后打印会出现

vdbench测试SSD快速入门

即我们log的存放地址,如果没有指定log存放地址,一般会生成一个output文件。

log文件夹我们主要关注summary这个报告,如下是截取的一部分:

vdbench测试SSD快速入门

图中,是截取了在I/O rate 20%情况下的测试状况,warmup=90,采样间隔是5s,所以前18个值都不会采用,只有后面的6个值才是有效值(elapsed=30),取平均即为我们真正要获得的值。取完所有I/O rate average值画图即可观察到盘的运行趋势。

补充更新

实际测试时发现测试的值比正常的要小很多,在报告中发现有很多这样的警告,原来是我们的IOPS已经超过了单个java虚拟机可以处理的IOPS,这里需要在HD部分增加。

vdbench测试SSD快速入门

 HD(Host Define):主机定义

  • hd= 标识主机定义的名称,多主机运行时,可以使用hd1hd2hd3…区分
  • system= 主机IP地址或主机名
  • vdbench= vdbench执行文件存放路径,当多主机存放路径不同时,可在hd定义时单独指定
  • user= slavemaster通信使用用户
  • shell= 可选值为rshsshvdbench,默认值为rsh,多主机联机测试时,materslave主机间通信方式
    当参数值为rsh时,需要配置masterslave主机rsh互信,考虑到rsh使用明文传输,安全级别不够,通常情况下不建议使用这种通信方式
    当参数值为ssh时,需要配置masterslave主机ssh互信,通常Linux主机联机时使用此通信方式
    当参数值为vdbench,需要在所有slave主机运行vdbench rsh启用vdbench本身的rsh守护进程,通常Window主机联机时使用此通信方式

        协议推荐hd=defaultjvms=nn设置JVM计数或者hd=hostXjvms=nn。要合理选择jvms个数,不要太多当然也要满足需求。

      最后还有一点要说的是,SSD分区时,要不要做文件系统,以及做什么文件系统都要看实际的要求,毕竟在windows分完区要格式化才能使用磁盘,而linux可以直接对裸盘操作。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147846.html

(0)
上一篇 2025-04-04 16:33
下一篇 2025-04-04 16:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信