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源码有较深层次的理解。