我正在尋找在多核處理器上執行微基準測試的方法。如何在多核處理器上進行基準測試
語境:
大約在介紹的同時桌面處理器亂序執行的是做出業績很難預測,他們,也許不是巧合,還推出了特殊的指令來得到非常精確的計時。這些指令的示例是x86上的rdtsc
和PowerPC上的rftb
。這些指令給出了比系統調用所允許的更精確的時序,允許程序員將他們的心微觀化,無論好壞。
在具有多個內核的更現代的處理器上,其中一些內核會休眠,但內核之間的計數器不會同步。我們被告知,rdtsc
已不再適用於基準測試,但是當我們解釋替代解決方案時,我一定會打瞌睡。
問:
一些系統可以保存和恢復的性能計數器,並提供一個API調用來讀取正確的總和。如果您知道此通話適用於任何操作系統,請在回答中告訴我們。
某些系統可能允許關閉核心,只剩下一個正在運行。我知道Mac OS X Leopard會在開發人員工具中安裝正確的首選項窗格時執行此操作。你認爲這使得rdtsc
再次安全使用?
更多背景:
請假設我知道努力做一個微基準當我在做什麼。如果你認爲,如果一個優化的漲勢無法通過定時整個應用程序進行測量,這是不值得的優化,我同意你的看法,但
我不能一次全部應用程序,直到替代數據結構完成,這將需要很長時間。事實上,如果微基準不是很有希望的話,我現在可以決定放棄實施;
我需要一個數字來提供出版物的截止日期,我無法控制。
謝謝,我應該可以從http://developer.apple.com/mac/library/qa/qa2004/qa1398.html中找到它,儘管我對'man mach_absolute_time'的結果非常失望。 – 2010-05-08 16:09:09
@帕斯卡爾:這將是一個很好的錯誤報告。我發佈了一些示例代碼,以避免在該筆記中投射指針。 – 2010-05-08 16:11:05
請注意,此解決方案將受到探測效應的影響,遠遠超過將進程固定到單個內核並使用兩次rtdsc(在x86上,不能用於PowerPC)。編譯器可能不會內聯你的函數,他們會佔用更多的指令緩存,並且你正在做乘法和除法,我相信他們可以根據它們的操作數完成多長時間。 'rtdsc'只是讀取一個寄存器,因此便宜得多,並且會減少您的結果。 – 2012-08-22 01:31:13