程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> disksim使用總結

disksim使用總結

編輯:C++入門知識

在ubuntu10.10下安裝了disksim-3.0,runvalid也運行通了,然後在spc裡面下載了一個Financial1的Trace文件,連接為:http://traces.cs.umass.edu/index.php/Storage/Storage也按照disksim的使用手冊做了如下事情:   1.在Disksim-3.0/Src/Disksim_global.h中增加了一行   [cpp]   #define FIN1 10   2.在Disksim-3.0/Src/Disksim_iotrace.c中的iotrace_set_format函數中相應部位增加如下代碼:   [cpp]   else if(strcmp(formatname,"fin1")==0)   {          disksim->traceformat = FIN1;    }   3.在Disksim-3.0/Src/Disksim_iotrace.c中增加了一個iotrace_financial1_get_ioreq_event函數如下:   [cpp]  static ioreq_event * iotrace_financial1_get_ioreq_event (FILE *tracefile, ioreq_event *new)   {      char line[201];      char op;         if (fgets(line, 200, tracefile) == NULL) {         addtoextraq((event *) new);         return(NULL);      }      if (sscanf(line, "%d,%d,%d,%c,%lf\n", &new->devno, &new->blkno, &new->bcount, &op, &new->time) != 5) {         fprintf(stderr, "Wrong number of arguments for I/O trace event type\n");         fprintf(stderr, "line: %s", line);         ddbg_assert(0);      }            if(op=='w')       new->flags=WRITE;      else       new->flags=READ;      new->buf = 0;      new->opid = 0;      new->busno = 0;      new->cause = 0;      return(new);   }     4.在Disksim-3.0/Src/Disksim_iotrace.c的iotrace_get_ioreq_event函數的switch中增加如下代碼:   [cpp]   case FIN1:        temp = iotrace_financial1_get_ioreq_event(tracefile, temp);        break;   然後運行如下命令時:../src/disksim ascii.parv ../myout/fin1.outv fin1 /home/he/下載/Financial1.spc 0 出現了如下錯誤:     很明顯是訪問地址越界(我也知道是ascii.parv這個地方出現了問題),但是需要怎麼修改呢?對著disksim_users郵件列表看了一封一封的郵件(自己是新手,實在不知道解決問題的思路,只好出此下策),好不容易看到了3、4封跟我差不多的問題的郵件,但是都沒有大牛回復,很是傷心,最後黃博讓我跟那些提問的人發郵件問他們是怎麼解決的,截止到目前為止,兩個回復如下:         感謝大牛們的回答,兩個答案都是為了使trace文件中的請求訪問地址在你的邏輯磁盤地址之內,不過我覺得第一種修改trace文件的方法就不能保證你的測試用例與別人一致,結果就不讓人信服,所以我還是選擇第二種方法修改磁盤配置信息的parv文件。   1.根據在郵件列表中所浏覽到的信息,修改parv文件並不是自己從0開始寫一個parv文件,而是可以復制一個parv文件(我就是復制的ascii.parv)這個文件   2.然後再根據你的trace文件修改,可以對照著ascii.parv和Financial1.spc看,多看看,然後多嘗試、多編譯、多運行還是很容易改過來的!   改完之後,又運行了一遍,那個問題解決了,然而又出現了新問題如下:     這個問題在郵件列表中見過很多次,故馬上到郵件列表中去尋找方法如下:   修改Disksim-3.0/src/disksim_logorg.c中MAX_QUEUE_LENGTH的值(默認為10000)   第一次我將其值修改為100000,然後再一次運行又出現了如下問題:     哈哈!Financial1.spc裡面有500000的請求,所以那個值還是不夠的,我就講其值改為了1000000,看你夠不夠。再運行之,直到現在還沒有出現什麼錯誤,但是也沒有結果,我的直覺告訴我應該是對了,再等等吧!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved