Disksim使用方式总结

Disksim作为一个有效、精确且高度可配置的磁盘模拟系统工具被广大科研学者用于各自不同的存储子系统性能分析实验中,而对其的主要使用方式可被总结如下:

(1)结合已有的特定trace文件,并根据实验需求配置相应的参数文件,运行disksim, 最终从输出文件中提取相关结果即可,如在ubuntu系统终端中输入命令如下:

$PREFIX/disksim  iozone.parv iozone.outv ascii iozone.trace 0

其中,$PREFIX根据实际情况做相应变化,如若我们在disksim-4.0/ssdmodel/test目录下运行上述命令,因disksim可执行程序在disksim-4.0/src中,故$PREFIX应为../../src。另外命令中iozone.parv为参数文件,iozone.outv为结果输出文件,ascii为trace文件类型,iozone.trace为相应trace文件,0代表不使用synthetic
workload(若为1则说明使用synthetic workload,那样的话将不需要trace文件)。

此种使用方式应该属于对Disksim最简单的一种使用方式,只需要配置参数文件,而不要修改源程序。但这里需要注意的是Disksim本身支持的trace类型是有限的,如果不支持实验使用的trace,则需要修改disksim源程序以添加新的trace类型,添加方法如下:

首先,在disksim_global.h中预定义trace类型常量,如添加一种SPC类型:#define SPC  12(disksim-4.0中已支持11种类型);

其次,在disksim_iotrace.c文件的iotrace_set_format函数中添加相应的if判断语句,可定义命令行中代表SPC类型的字符串为“spc”;

然后,在disksim_iotrace.c文件中仿照iotrace_ascii_get_ioreq_event函数添加iotrace_spc_get_ioreq_event函数处理相应的trace文件。如果trace文件中包含一定的头信息,则需要在disksim_iotrace.c文件中添加iotrace_xxxx_initialize_file函数,并在iotrace_initialize_file函数中调用。

最后,编译之后,就可以想使用ascii类型一样使用其他类型的trace文件进行实验分析。

(2)使用Disksim自动生成IO请求的方式进行实验(synthetic workload)

e.g. $PREFIX/disksim synthetic.parv synthetic.outv ascii 0 1

对于特定的需求,实验时需要调整参数文件中disksim_synthgen配置或修改disksim_synthetic.c文件中的函数synthio_generatenextio以满足特定的请求特征(如访问的hot/cold特征,zipfan分布等),然后编译运行,获得实验结果。

Disksim提供了uniform,normal,possion,expontenial,twovalue等概率分布,可以灵活运用这些分布生成具有特定特征的请求,如符合zipfan分布的请求

(3)使用disksim提供的接口(disksim_interface.c),将disksim作为一个子系统,通过外部发请求获取实验结果。

此种做法详细过程,之后博客会给出详细说明。

(4)做一些文件系统级的性能验证等也可以通过修改disksim源码达到实验的目的,如想在disksim内部实验RAID6的支持,可以将disksim_logorg模块进行扩充以使得disksim支持特定的RAID6编码特征,从而获得相应的实验结果。

这种做法需要对Disksim源码有较深层次的理解。

时间: 2024-12-25 12:28:23

Disksim使用方式总结的相关文章

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas

配置resin web方式部署项目

写在前面,推荐下载resin4.0.47版本.其它版本没有测试 最近打算做一个小项目,然后容器选用了resin.想通过web提交war文件的方式 进行部署,更新代码也方便. 试了resin最新的版本(目前最新版本为4.0.53),提交war文件到webapps下面都是.tmp文件.百度google一通还是没找到解决办法. 看了下公司用的resin版本,选择4.0.47.下载后发现没最新版本的上传问题. 通过web提交war文件方式步骤如下: 步骤一:修改resin.properties.推荐配置

(转)web会话管理方式

阅读目录 1. 基于server端session的管理 2. cookie-based的管理方式 3. token-based的管理方式 4. 安全问题 5. 总结 http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端.所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用户发起的,从而判断他是否有权限继续这个请求.这

Jenkins 2.60.x 2种发送邮件方式

1.1 默认发邮件的配置方式 1.1.1 系统级别 邮件配置 1.1.2 项目级别 邮件配置 测试构建失败是否会发邮件: 控制台输出:提示已发送邮件给项目配置指定的两个邮箱地址. 1.1.2.1  查看邮箱 1.2 第三方插件 发送邮件的配置方式 1.2.1 系统级别 邮件配置 再次打开系统配置找到如下图的地方配置发送邮件的触发条件. 1.2.1 项目级别 邮件配置 控制台输出(console output): 1.2.1.1  查看邮件 确认第一个邮箱收件人 确认第二个邮箱收件人

maven 坐标获取方式

问题:我们在开发时pom.xml文件中的 <dependencies>     <dependency>         <groupId>org.mybatis</groupId>         <artifactId>mybatis</artifactId>         <version>3.2.5</version>     </dependency> </dependencies

mysql读写分离的三种实现方式

1 程序修改mysql操作类可以参考PHP实现的Mysql读写分离,阿权开始的本项目,以php程序解决此需求.优点:直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配缺点:自己维护更新,增减服务器在代码处理 2 amoeba参考官网:http://amoeba.meidusa.com/优点:直接实现读写分离和负载均衡,不用修改代码,有很灵活的数据解决方案缺点:自己分配账户,和后端数据库权限管理独立,权限处理不够灵活 3 mysql-proxy参考 mysql-proxy

hibernate载入持久化对象的两种方式——get、load

一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更高.下边具体说一下get和load的不同,有些时候为了对照也会把find加进来. 1.从返回结果上对照: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索运行机制上对照: get方法和fin

【巨坑】springmvc 输出json格式数据的几种方式!

最近公司项目需要发布一些数据服务,从设计到实现两天就弄完了,心中窃喜之. 结果临近部署时突然发现.....  服务输出的JSON 数据中  date 类型数据输出格式要么是时间戳,要么是  {"date":26,"day":1,"hours":21,"minutes":38,"month":5,"seconds":22,"time":1498484302259,&qu

CSS原生布局方式

前言 网页原生布局的方法其实网上有很多,大概为Flow(流动布局模型).Float(浮动布局模型).Layer(层级布局模型).<!--more--> Flow布局 流动布局模型其实就是默认的网页布局模式.也就是说网页在默认状态下的HTML网页元素都是根据流动模型来分布网页内容的.流动布局将会有两个比较典型的特征,第一,块级元素都会在所处的最近父级容器元素内自上而下按顺序垂直顺延分布,因为在默认状态下,块级元素的宽度都是100%(即父级元素宽度的100%).实际上,块状元素都会以行的形式占据位