使用vdbench评估短暂存储I/O性能u0402

为了理解SmartCloud环境中的短暂存储性能,我们使用vdbench设置了一项基准测试。vdbench是一个I/O工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。

我们得出的结论是,缓存是I/O基准测试中的一个重要元素。本文介绍我们设置基准测试的步骤并展示结果。但是首先我们会简要介绍我们使用的以下产品和工具。

首先从SmartCloud开始,这是一个以基于内核的虚拟机(KVM)为基础构建的公共云服务,是x86架构上的Linux的一个全面的虚拟化解决方案。SmartCloud是一个完整的基础架构即服务(IaaS)产品。可将它用作构建平台即服务(PaaS)和软件即服务(SaaS)解决方案的基础。

SmartCloud的关键特性包括:自助配置虚拟服务器机器和虚拟存储空间(持久性存储)网络功能即用即付的结算策略自动配置资源开放API可用于开发脚本和软件来增强自动化VM大小涵盖从一个虚拟CPU和2GB内存到16个CPU和32GBRAM。Windows和Linux操作系统都可部署,包括RedHatEnterpriseLinux和SUSELinux。

在我们的基准测试中,我们将重点看看短暂存储。

我们使用vdbench来测试原始磁盘和文件系统。它有一个Web用户界面可显示详细的性能报告。vdbench由SunMicrosystems的HenkVandenbergh开发,以前称为StorageTek。vdbench是使用Java编写的。它在Solaris、Windows、HP-UX、AIX、Linux、MacOSX、zLinux和原生VMware上经过了测试。

在我们的基准测试中,我们通过使用RedHatLinux配置一个VM来创建短暂存储。它类似于下图:

您应该已安装并正在运行SmartCloud。接下来,您必须分配一个虚拟块设备和一个ext3文件系统,然后安装vdbench。

以下代码将分配一个虚拟块设备:

[idcuser@vhost1291~]$sudoddif=/dev/urandomof=fs_1GB.ext3bs=512count=2097152oflag=sync,direct[idcuser@vhost1291/]$sudochmod664fs_1GB.ext3[idcuser@vhost1291/]$sudomkfs-text3-qfs_1GB.ext3fs_1GB.ext3isnotablockspecialdevice.Proceedanyway(y,n)y[idcuser@vhost1291/]$sudomount-text3-osync,loopfs_1GB.ext3/mnt/fs_mount[idcuser@vhost1291mnt]$fdisk-lfs_1GB.ext3Disk/fs_1GB.ext3:0MB,0bytes255heads,63sectors/track,0cylindersUnits=cylindersof16065*512=8225280bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/fs_1GB.ext3doesn'tcontainavalidpartitiontable[idcuser@vhost1291/]$sudoumount-l/mnt/fs_mount/[idcuser@vhost1291/]$sudolosetup-d/dev/loop0安装vdbench现在是时候下载和安装vdbench。

[root&vhost4377idcuser]#mvvdbench502.zip/var/www/html/[root&vhost4377idcuser]#cd/var/www/html/[root&vhost4377html]#mkdirvdbench502[root&vhost4377html]#unzipvdbench502.zip–dvdbench502/[root&vhost4377html]#cdvdbench502要运行该工具,您需要安装Java运行时环境,在本例中安装OracleJDK。清单4.安装Java运行时环境[idcuser&vhost4377~]$sudo–s|cd[root&vhost4377~]#wget[root&vhost4377~]#rpm–ivhjdk-7u3-linux-i586.rpm[root&vhost4377~]#vi.bashrcJAVA_HOME=/usr/java/jdk1.7.0_03CLASSPATH=.:$JAVA_HOME/lib/tools.jarPATH=$JAVA_HOME/bin:$PATHexportJAVA_HOMECLASSPATHPATH[root&vhost4377~]#source.bashrc启动基准测试之前,使用默认的参数检查安装是否成功完成。[root&vhost4377vdbench502]#./vdbench-t编写一个parmfile要更详细地控制工具参数,编写一个parmfile,您可在其中指定不同的选项。

对于一个虚拟块设备

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

HD:主机定义

SD:存储定义

WD:工作负载定义

RD:运行定义

对于一个文件系统

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

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

FSD:文件系统定义

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

运行之后的输出文件夹文件

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

我们运行了3个不同的测试。

在第一个测试中,使用一个parmfile定义对单个原始磁盘的单次运行测试。

名为sd1的存储指向大小为4MB的设备/dev/rdsk/c0t0d0s0。

定义了工作负载wd1来在存储sd1上运行,其中读取操作占100%,每个操作涉及到一个4KB数据块。

定义了运行,以100个操作/秒的速度使用工作负载wd110秒。

*SD:StorageDefinition*WD:WorkloadDefinition*RD:RunDefinition*sd=sd1,lun=/dev/rdsk/c0t0d0s0,size=4mwd=wd1,sd=sd1,xfersize=4096,readpct=100rd=run1,wd=wd1,iorate=100,elapsed=10,interval=1*Singlerawdisk,100%randomreadof4KBblocksatI/Orateof100for10seconds测试2在此测试期间,parmfile定义了对一个文件系统和对远程主机129.35.213.249的一次测试。HD包含安装在远程主机上的vdbench的完整路径,以及用于通信的shell(ssh或ownrsh)。

在本例中,vdbench表示rsh。User=root是拥有远程主机上的进程的用户。文件系统的定义支持创建一个包含3个级别的结构,每个级别包含两个目录和两个文件(借助于选项distribution=all)。工作负载包含80%的读取操作(20%的写入操作)、一个随机文件选择操作和随机文件I/O。操作涉及到4KB的数据块。

该运行以最大速率使用此工作负载600秒,每秒抽样一次并在启动时格式化文件系统。

hd=resource1,system=129.35.213.249,vdbench=/var/www/html/vdbench,shell=vdbench,user=rootfsd=fsd1,anchor=/fs,width=2,depth=3,files=2,distribution=all,size=4m,openflags=(o_dsync,o_rsync)fwd=fwd1,fsd=fsd1,host=resource1,xfersize=4096,operation=read,rdpct=80,fileselect=random,fileio=random,threads=1rd=run1,fwd=fwd1,fwdrate=max,format=yes,elapsed=600,interval=3测试3在此测试中,parmfile定义一个要在其中执行测试的SmartCloud主机。存储是一个临时创建的1GB大的虚拟块设备,称为disk1.raw。

所有设置都以再现最坏的情形(没有任何命中区域)为导向,以加快响应速度,使用open-flags来打开文件或设备以避免使用缓冲区缓存(o_direct)。

工作负载定义强化了同时避免读取和写入命中(rhpct=0whpct=0)的概念,随机寻道百分比为100%。该测试执行11次,每次按照一条定义的曲线执行1500秒。第一次运行尝试发现最大的i/o速率。其他运行将I/O速率增加10%,一直从10增加到100。每次运行生成一个具有指数分布的工作负载。

hd=resource1,system=129.35.209.189,vdbench=/var/www/html/vdbench503,shell=vdbench,user=rootsd=sd1,lun=/home/idcuser/disk1.raw,hitarea=0m,offset=32256,openflags=o_directwd=wd1,sd=sd1,host=resource1,xfersize=4096,rdpct=40,rhpct=0,whpct=0,seekpct=100rd=run1,wd=wd1,iorate=curve,curve=(10-100,10),format=yes,elapsed=1500,warmup=18,distribution=exponential,pause=60,interval=6,threads=1基准测试分析中使用的VM包括:

测试带来了哪些问题?我们学到了什么?

缓存是I/O基准测试中的一个关键方面。缓存是一个非常难以处理的变量,因为它依赖于许多因素。缓存影响着读取/写入性能,但只有在多次访问单个数据块或在启用了延迟写入时。

有时您可能对存储设备的真实和机械性能感兴趣,测试使用它的最糟情形。为此,每个操作系统都允许使用不同规则打开一个文件。

借助O_DIRECT,对于用户空间缓冲区传递给读取/写入系统调用[一个]参数来调用的物理内存,内核会直接从/向它执行DMA。所以用户空间内存与内核缓存之间的复制不会花费CPU和内存带宽(比如缓存查找、每页锁定等)。

这无疑适用于一种经典的基础架构,如图9所示。

如图10所示,使用SmartCloud创建的虚拟化基础架构上会发生什么?

在这些测试期间,我们认识到,禁用缓存支持在几乎所有情形中都不是一种好的选择。禁用缓存只能用于基准测试用途。

在我们的研究中,我们的想法是发现一个虚拟化的共享云基础架构的行为:如果启用了缓存,性能可能类似于一种专用的私有虚拟基础架构。

在云环境中,其他客户端的使用会影响到许多无法预测的变量;这一般会影响I/O性能。

THE END
1.为什么你买到的电脑硬盘/手机/U盘/内存卡实际可用容量总是达不到...无障碍 关怀版 登录 视频加载失败,可以 刷新 试试 00:00/00:00 推荐 已经到底了 为什么你买到的电脑硬盘/手机/U盘/内存卡实际可用容量总是达不到标称的?电脑 组装电脑拳击那点事 发布于:江西省 2024.11.25 00:00 分享到 热门视频 已经到底了 https://www.sohu.com/a/829984221_100114195
1.测试中影响SSD(固态硬盘)性能的因素汇总固态硬盘(SSD)的性能是评估存储设备的重要指标,但其表现受多种因素的综合影响。在测试过程中,硬件、软件、环境工作负载等方面的变量都会显著左右性能表现。下面汇总了常见的影响因子: 部分因素原因解释: CPU利用率,原因:比如当CPU利用率特别高的时候,可能无法及时发送和处理I/O命令,时延会增加,性能会相对降低 ...https://blog.csdn.net/weixin_59392547/article/details/143954590
2.指定内存不能为WRITTEN还有一种情况可能导致内存错误,那就是内存泄漏。内存泄漏指的是在程序中分配了内存但没有释放,导致内存资源耗尽或者无法被其他程序使用。如果我们确定程序存在内存泄漏问题,我们需要及时对程序进行修复和优化。 为了避免类似的内存错误问题,我们可以采用一些良好的编程习惯。及时释放不再需要的内存,避免过度频繁地进行内存分...http://www.ireallytech.com/article/14764.html
3.硬盘空间足够却说空间不足硬盘明明还有空间却说容量不足的原因可能是文件系统对单个文件的大小有限制。FAT32文件系统由于自身设计时的限制,能够支持的最大的单个文件大小不能超过4GB。超过此限制的大文件,在保存时就会提示磁盘空间不足。 解决这个问题的方法是将硬盘的文件系统转换为NTFS或exFAT,这两种文件系统都没有这个单个文件大小的限制,可以...https://www.qn200.com/k/rexm6x408.html
4.这是怎么回事?无法度量存储性能,无法正确评估磁盘?(windows7无法...无法度量存储性能,无法正确评估磁盘? 我碰巧找到了解决方法,就是我想既然用户文件夹移动了,干脆也把windows的temp文件夹也转移了算了。用win7优化大师把用户的temp文件夹转移到:\users\temp之后,再评分,居然能顺利通过了。具体如下: (图片来源网络,侵删)...https://www.shiwaiyun.com/article/post/160359.html
5.windows7”无法度量存储性能““系统无法正确评估磁盘,数据无效...上次我也无法评估磁盘性能,然后我把硬盘分区表毁了。。。送到客服,结果他们帮我换了块硬盘。。。囧...https://www.pcbeta.com/viewthread-644274-2-544.html
6.Win7“无法度量存储性能”“系统无法正确评估磁盘,数据无效...以系统封装技术与驱动技术为主的综合性IT站点,提供完善的系统批量部署解决方案、易用的离线万能驱动和适合装机技术员的U盘PE。https://www.itsk.com/thread-204442-1-1.html
7.使用DISKSPD测试工作负荷存储性能下面的简短摘要说明了为什么使用文件复制来度量存储性能可能无法提供你所期望的结果: 文件复制可能未经过优化。会出现两个级别的并行度,一个是内部的,另一个是外部的。 在内部,如果文件复制针对的是远程目标,则 CopyFileEx 引擎会应用某种程度的并行化。 在外部,可以通过不同的方式来调用 CopyFileEx 引擎。 例如,从文...https://docs.azure.cn/zh-cn/azure-stack/hci/manage/diskspd-overview
8.CMMI5项目经理角色访谈学习笔记CMMI认证存储:工作记录,例如:会议纪要、报告 11、项目级Car基本改进原则: 项目执行中,当前性能目标无法达到现有组织过程性能。 项目执行中,出现的缺陷或问题等导致与当前组织过程绩效出现严重偏差,明显影响项目绩效。 工作产品与需求出现明显的偏离。 12、确定软件开发生命周期模型的参考规则 ...https://www.cmmirz.com/cmmi5-project-manager-interview-note/
9.提升数据存储性能,主要有哪几种方法?它收集服务器和存储度量指标,并利用算法来确定系统和存储输入/输出的运行状况,另外可以针对未来问题自动建模。分析技术被用来确定系统磁盘输入/输出的运行状况,为此分析输入/输出利用率、磁盘速度、输入/输出密度和输入/输出速率,以检测存储性能低下的根源。 巴拉法斯说:“这让分析员得以深入了解共享式存储,从而确定问题...https://blog.51cto.com/u_13973070/6206145
10.手把手教您如何进行数据质量管理ETL开发人员:设计数据存储系统 数据工程师:监督数据集成、数据仓库和数据湖、数据管道 数据库管理员:管理数据库系统,确保它们满足SLA、性能和备份要求 数据质量工程师:查找并清理数据源中的不良数据,创建流程以防止数据质量问题 消费层 数据科学家:收集和分析来自数据库和其他来源的数据,运行模型,并为用户创建数据可视化...https://36kr.com/p/2346113073061509
11.PS液化显示该操作无法完成,因为没有足够存储空间,已经勾选了其他...根据您的描述,出现“该操作无法完成,因为没有足够存储空间”的错误提示,可能是由于系统暂存盘空间不足...https://ask.zol.com.cn/x/20492853.html
12.baike.pinpaidadao.com/index.php?article/1638601X-CLOSE X-CLOSEhttp://baike.pinpaidadao.com/index.php?article/1638601
13.存储器体系结构学习笔记腾讯云开发者社区存储器平均访问时间 缓存性能比较好的度量为存储器平均访问时间,即对于每次存储器访问而言需要的平均时间,公式如下: 需要注意的是这一指标仅针对存储器访问指令,因此这是一个间接度量,考虑以下情况: 需要注意的是,缺失数指的是对于所有指令而言产生存储器缺失的次数,而缺失率为相对于所有存储器访问产生缺失的比例。对于...https://cloud.tencent.com/developer/article/1574134
14.编写高性能JavaScript(译)javascript技巧什么是引擎无法优化的,垃圾回收器(GC)是否能回收我所期望的东西 加载快速的网站就像是一辆快速的跑车,需要用到特别定制的零件. 图片来源:dHybridcars. 编写高性能代码时有一些常见的陷阱,在这篇文章中,我们将展示一些经过验证的、更好的编写代码方式。 https://www.jb51.net/article/53623.htm
15.排查Linux或Windows上的Azure虚拟机性能问题Windows 上的VM 磁盘的可伸缩性和性能目标。参考存储帐户的带宽由存储帐户指标:TotalIngress 和 TotalEgress 度量。 带宽的阈值不同,具体取决于冗余类型和区域:标准存储帐户的可伸缩性和性能目标 高级页 Blob 存储帐户的可伸缩性和性能目标根据存储帐户冗余类型和区域的入口和出口限制检查 TotalIngress 和 ...https://support.microsoft.com/zh-cn/help/3150851/generic-performance-troubleshooting-for-azure-virtual-machine-running