一、DiskSim 以及 SSD扩展插件简介
DiskSim
is a low-level storagesimulation tool, which can generate timing-accurate simulationresult. It is developed by Greg Ganger. Current version is 4.0 andit is out in June 2008.
SSD extension for DiskSim
is anextensional module of DiskSim which implments SSD I/O Models. It isimplemented by Microsoft Research.
二、安装须知
1. 目前DiskSim还木有64位版,故请在32位OS下安装使用DiskSim!
2.DiskSim使用lex和yacc进行词法及语法分析,故linux如没安装flex、bison的话,先要安装。
$ sudo apt-get install bison flex
3. 下载源码安装包
disksim 4.0:http://www.pdl.cmu.edu/DiskSim/
三、安装步骤
Step 1. Download andunzip.
Sources can be downloaded from the links above. I downloadedDiskSim 4.0 with dixtrac.
$ tar xfz disksim-4.0-with-dixtrac.tar.gz
$ cd disksim-4.0
$ unzip ../ssd-add-on.zip
Step 2. Apply SSD add onpatch.
$ patch -p1 < ssdmodel/ssd-patch
Step 3. Modify Makefile to support math library
( Some math library can not be found due tolibrary dependency on math library, e.g., undefined reference to ‘sqrt )
( Some math library can not be found due tolibrary dependency on math library, e.g., undefined reference to ‘sqrt )
a.修改memsmodel/Makefile
$(CC) -o $@ mems_seektest.o $(LDFLAGS) $(CFLAGS)-lmems_internals
$(LIBDISKSIM_LDFLAGS) \
$(MEMSMODEL_LDFLAGS) \
$(DISKMODEL_LDFLAGS) \
$(LIBPARAM_LDFLAGS) \
$(LIBDDBG_LDFLAGS) \
$(ST_LDFLAGS)
$(LIBPARAM_LDFLAGS)$(LIBDDBG_LDFLAGS)
ems_seektest: mems_seektest.o libmems_internals.a
将$(LDFLAGS)放置最后;
b.修改dixtrac/Makefile
LDFLAGS
= -L. -lm -l$(LIBNAME) -ldxtools\
将-lm放置最后;
c.修改src/Makefile
LDFLAGS = -lm -L. -ldisksim $(DISKMODEL_LDFLAGS)$(MEMSMODEL_LDFLAGS) \
将-lm放置最后;
Step 4. Append SSD model library pathto dixtrac.
add these lines to dixtrac/.paths
# path to ssdmodel
exportSSDMODEL_PREFIX=../ssdmodel
exportSSDMODEL_INCL=$(SSDMODEL_PREFIX)/include
exportSSDMODEL_CFLAGS=-I$(SSDMODEL_INCL)
exportSSDMODEL_LDPATH=$(SSDMODEL_PREFIX)/lib
exportSSDMODEL_LDFLAGS=-L$(SSDMODEL_LDPATH) -lssdmodel
modify dixtrac/Makefile like this :
$(LIBDISKSIM_LDFLAGS)
$(MEMSMODEL_LDFLAGS)
$(DISKMODEL_LDFLAGS)
$(SSDMODEL_LDFLAGS)
$(LIBPARAM_LDFLAGS)
$(LIBDDBG_LDFLAGS)
$(ST_LDFLAGS)
CFLAGS = -Wall -g -MD -I. $(DEFINES) -I$(STHREADS)$(DMINCLUDES)
$(LIBDISKSIM_CFLAGS)
$(DISKMODEL_CFLAGS) $(LIBPARAM_CFLAGS)$(LIBDDBG_CFLAGS)
$(SSDMODEL_CFLAGS)
Step 5. Compile!
$ make
Step 6. Check if it workswell.
$ cd valid; ./runvalid
$ chmod a+x ../ssdmodel/valid/runvalid
$ cd ../ssdmodel/valid; ./runvali