vdbench测试SSD快速入门

news2024/12/25 13:16:43

介绍

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

下载及安装

下载地址:

Vdbench Downloads

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

Linux下:

yum install java

yum install csh

使用

1)检查vdbench环境

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

2)运行测试模型

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

./vdbench –f xxx –o xxx

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

3)配置文件

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

 

块设备配置文件定义顺序为: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去传输数据。

结果分析

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

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

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

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

补充更新

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

 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可以直接对裸盘操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 在过去几年发生的六种变化

随着时间的推移,Linux 桌面已经发生了变化,这种变化是逐渐发生的,因此这里汇总了过去十年中 Linux 桌面体验发生变化的一些具体方式。资深用户知道 Linux 桌面已经走过了漫长的道路。从前端应用程序设计到后端 Linux 组件,近年来发…

驱动无模块注入dll

文章目录实现效果三环无模块注入的方案反射型dll注入方式的改进零环无模块注入方案petoshellcode无模块注入流程实现代码Xenos注入方案研究IT_MMap注入IT_Thread注入IT_Apc注入火绒的注入思路实现效果 可以看到dll已经成功执行,但是在内存区域里面并没有我们的模块&…

《野球少年》:投捕搭档·棒球联盟

中文名 野球少年 原版名称 バッテリー 别 名 棒球伙伴、Battery 动画制作 ZERO-G 类 型 青春、运动、棒球 剧情简介 身为一名投手,原田巧是位拥有着拔群棒球才能的少年。在初中入学时移居的山间城镇新田市,巧与接住自己全力投球的捕手永仓豪相遇了。…

13 个你应该知道的 Webpack 优化技巧

Webpack 是目前前端开发最重要的构建工具。无论是自己的日常开发,还是准备面试,都应该掌握一些关于 Webpack 的优化技巧。 在这篇文章中,我将从三个方面分享一些我常用的技巧: 提高优化速度 压缩打包文件的大小 改善用户体验。…

[附源码]Python计算机毕业设计SSM基于框架的动漫设计(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

MarkDown语法浅析(基础语法)

本篇学习笔记简述MarkDown基础语法。掌握了“MarkDown基本语法简单HTML5标签”的综合运用,就可以把CSDN博文搞得美美哒✌ (本文获得CSDN质量评分【92】)【学习的细节是欢悦的历程】Python 官网:https://www.python.org/ Free:大咖免费“圣经…

SpringMVC笔记

文章目录一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式:warc>引入依赖3、配置web.xmla>默认配置方式b>扩展配置方式4、创建请求控制器5、创建springMVC的配…

Android开发中的服务发现技术

我们的日常开发中充满了InterfaceRegistry这种模式的代码,其中: Interface为定义的服务接口,可能是业务功能服务也可能是日志服务、数据解析服务、特定功能引擎等各种抽象层(abstract layer);Registry为特…

线性表→顺序表→链表 逐个击破

一. 线性表 1. 前言 线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即 “ 把所有(一对一逻辑关系的)数据用一根线儿串起来,再存储到物理空间中 ”。这根线有两种串联形式,如下图,即顺序存储(集中…

【收藏级】MySQL基本操作的所有内容(常看常新)

文章目录前言一、ER模型二、数据类型三、字段命名规范四、数据库创建与管理4.1、创建数据库4.2、删除数据库4.3、列出数据库4.4、备份数据库4.5、还原数据库4.6、使用某个数据库五、数据表创建与管理5.1、创建表、结构5.2、查看表结构5.3、查看数据表5.4、复制表结构5.5、复制表…

m基于PSO粒子群算法的重采样算法仿真,对比随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 重采样的主要方法有随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样等。 a.随机采样是一种利用分层统计思想设计出来的,将空间均匀划分,粒子打点后…

Lecture6:激活函数、权值初始化、数据预处理、批量归一化、超参数选择

目录 1.最小梯度下降(Mini-batch SGD) 2.激活函数 2.1 sigmoid 2.2 tanh 2.3 ReLU 2.4 Leaky ReLU 2.5 ELU 2.6 最大输出神经元 2.7 建议 3.数据预处理 4. 如何初始化网络的权值 5. 批量归一化 6.超参数的选择 1.最小梯度下降&#xf…

Flowable定时器与实时流程图

1. 定时器 1.1. 流程定义定时激活 在之前松哥给小伙伴们介绍流程定义的时候,流程都是定义好之后立马就激活了,其实在流程定义的这个过程中,我们还可以设置一个激活时间,也就是流程定义好之后,并不会立马激活&#xf…

Java一些面试题(简单向)

以下全部简单化回答(本人新手,很多都是直接百度粘贴收集得来的,如有不对请留下正确答案,谢谢) (问题来源https://www.bilibili.com/video/BV1XL4y1t7LL/?spm_id_from333.337.search-card.all.click&vd_source3cf72bb393b8cc11b96c6d4bfbcbd890) 1.重写 重载的区别 重写(ov…

dubbo3.0使用

dubbo3.0使用 介绍 官方网址:https://dubbo.apache.org/ 本文基于springCloud依赖的方式演示相关示例:https://github.com/alibaba/spring-cloud-alibaba/wiki/Dubbo-Spring-Cloud dubbo示例项目:https://github.com/apache/dubbo-sample…

9 内中断

内中断 任何一个通用的CPU,比如8086 ,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU 外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,…

S7-200SMART高速脉冲输出的使用方法和示例

S7-200SMART高速脉冲输出的使用方法和示例 S7-200SMART PLC内部集成了高速脉冲发生器,不同的CPU型号,高速脉冲发生器的数量不同。 具体型号可参考下图: 注意:要输出高速脉冲的话,必须选择ST晶体管型号的PLC,SR继电器型的不支持。 S7-200SMART PLC能产生2种类型的高速脉冲…

【瑞吉外卖】公共字段填充

🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉瑞吉外卖 ✨欢迎加入社区: 👉不会压弯的小飞侠 ✨人生格言:知足上…

激光雷达标定(坐标系转换)

文章目录1. 旋转矩阵2. 平移矩阵3. 坐标系的转换4. 坐标转换代码1. 旋转矩阵 由于激光雷达获取的点云数据的坐标是相对于激光雷达坐标系的,为了使车最终得到的点云数据坐标是在车坐标系下的,我们需要对点云中每一个点的坐标进行坐标转换。首先是需要对坐…

Docker笔记--创建容器、退出容器、查看容器、进入容器、停止容器、启动容器、删除容器、查看容器详细信息

目录 1--docker run创建容器 2--exit退出容器 3--docker ps查看容器 4--docker exec进入容器 5--docker stop停止容器 6--docker start启动容器 7--docker rm删除容器 8--docker inspect查看容器详细信息 1--docker run创建容器 sudo docker run -it --nametest redis…