2014年1月28日 星期二

『筆記』disksim在超急速trace下跑很慢,如何去加速

『筆記』disksim在超急速trace下跑很慢,如何去加速 
1 先用gprof去查可能的bottleneck function
2 以title為例,bottleneck都在處理queue(大多是 insert,get或是delete )
3. 本次發現 logorg_addnewtooutstandq()是bottleneck。原因是裡面有個while loop的功能只為了找到某linked list的tail。解法是: 『維護一個pointer永遠指向outstandq的tail』。注意: outstandq有很多個(也就是有很多條linked lists)。
4. 注意: tail pointer指向的東西(假設是temp)可能會被移除,所以temp被移掉
時最好是將tail-pointer更新成 temp->prev,不然下次addnewtooutstandq時如果發現tail-pointer還是null,就必需重找…(就沒加速到了啦)

5. ps: gprof只有當程式全部跑完才會產生 gmon.out

1 則留言: