linux x86 性能調試記錄

頻率
urbostat是intel針對自己的x86 CPU,做的一個CPU頻率、能耗監控的用戶態程序,位於linux代碼的tools/power/x86/turbostat目錄下,編譯也很簡單,可以直接在這個目錄下make,就生成二進制文件了。

這個工具在監控cpu運行頻率方面有很大用途。

cache僞共享
當應用在 NUMA 環境中運行,或者應用是多線程的,又或者是多進程間有共享內存,滿足其中任意一條,那麼這個應用就可能因爲 Cache Line 僞共享而性能下降。

但是,要怎樣才能知道一個應用是不是受僞共享所害呢?Joe Mario 提交的 patch 能夠解決這個問題。Joe 的 patch 是在 Linux 的著名的 perf 工具上,添加了一些新特性,叫做 c2c, 意思是“緩存到緩存” (cache-2-cache)。

Redhat 在很多 Linux 的大型應用上使用了 c2c 的原型,成功地發現了很多熱的僞共享的 Cache Line。 Joe 在博客裏總結了一下 perf c2c 的主要功能:

發現僞共享的 Cache Line
誰在讀寫上述的 Cache Line,以及訪問發生處的 Cache Line 的內部偏移
這些讀者和寫者分別的 pid, tid, 指令地址,函數名,二進制文件
每個讀者和寫者的源代碼文件,代碼行號
這些熱點 Cache Line 上的,load 操作的平均延遲
這些 Cache Line 的樣本來自哪些 NUMA 節點, 由哪些 CPU 參與了讀寫
perf c2c 和 perf 裏現有的工具比較類似:

先用 perf c2c record 通過採樣,收集性能數據
再用 perf c2c report 基於採樣數據,生成報告
如果想了解 perf c2c 的詳細使用,請訪問: PERF-C2C(1)

這裏還有一個完整的 perf c2c 的輸出的樣例。

最後,還有一個小程序的源代碼,可以產生大量的 Cache Line 僞共享,用以測試體驗: Fasle sharing .c src file

發佈了25 篇原創文章 · 獲贊 13 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章