2013-05-06 84 views
1

我已經編寫了一個程序,以兩種模式運行,即Sequential和Multithreaded,目的是在多處理器體系結構上運行它,然後分析處理器的性能並進行比較。多平臺性能分析

是否有任何工具可以幫助我做到這一點?找到執行時間,跟蹤線程和搶佔,找到哪個處理器執行哪個線程(如果在多核系統上),上下文切換開銷和其他東西。

我已經有了關於使用gprof進行代碼分析的基本知識,我相信這是不夠的。我正在尋找的東西是相同的想法,但更強大! 任何幫助?

回答

1

要獲得有關執行時間,緩存行爲等的更多信息,有各種方法。確保首先創建一個穩定的計算環境。鎖定處理器頻率以獲得可​​靠的測量結果,例如在BIOS中禁用Intel SpeedStep;避免任何後臺進程等

低級別的性能計數器:

高級剖析:

  • Perf,開源。 Perf執行基於樣本的度量並顯示各種分析信息,並完全支持多個線程。例如,Perf Flamegraph給出了代碼中熱點的非常好的概述。
  • 英特爾VTune,商業。將向您顯示來自HW計數器的詳細緩存統計信息,每個線程的性能等。需要在硬件中有相當多的洞察力來解釋數據。

請注意,以上所有功能也可以測量功耗。

或者,您可以通過在OS中創建一個線程切換跟蹤來查看程序隨時間的行爲。看看Eclipse的LTTng集成。

如果您希望查看更多關於代碼實際並行行爲的信息,例如可能會抑制並行性,線程開銷和緩存爭用的數據依賴性,您可以從Vector Fabrics處獲得Pareon的信息(免責聲明:我是Vector Fabrics的創始人之一)。這不是一個分析器,而是用於並行化的更多代碼分析。