最近在做SSD模拟,发现了一个不错的simulator (http://storage.hust.edu.cn/SSDsim/)。下载代码,并且成功转换Financial1,2 (http://traces.cs.umass.edu/index.php/Storage/Storage) 成ascii格式,但是代码有执行错误。后来发现request的第三个参数(例如10698607296512 16 888 1 0 这里的888)不能为0,代码里也没做处理。
为了解决这个问题,添加了以下代码:
在ssd.c文件的 get_requests(struct ssd_info *ssd) 函数中,sscanf(buffer,"%I64u %d %d %d %d",&time_t,&device,&lsn,&size,&ope); 之后添加 if (lsn == 0) return 516;
同时在ssd.c文件的 while循环里 flag=get_requests(ssd); 之后做一个判断 if (flag == 516) continue;
意思就是如果进来的request的第三个参数即 lsn = 0,那么跳过这条请求,接着接收下一条请求(虽然这么做不知道合不合理,但是暂时能解决trace file无法执行的问题)。