快速入門 |貢獻
該專案擁有 Linux 效能事件 API 的函式庫。其核心是perf_event_open (2)
系統呼叫的實現,可以原樣使用。
該庫還包含穩定使用 API 所需的幾個實用程式。這些實用程式提供錯誤處理、支援驗證等。
該庫的重點是在測量過程中沒有任何開銷的高精度結果。也就是說,設定測量可能成本高昂,但執行測量需要該庫添加零開銷。這帶來了一個巨大的好處,即以用戶體驗為代價獲得盡可能準確的結果並盡可能靈活。
要建置項目,首先安裝libcap
:
sudo apt install libcap-dev
sudo yum install libcap-devel
sudo zapper install libcap-devel
然後,簡單地建立項目。
make build
範例在examples
目錄中提供,輸出到build/examples
目錄。
./build/examples/full
快速入門
特徵
文件
貢獻
CAP_PERFMON
) 有許多可用於 Linux 的分析工具。 Valgrind(和 Callgrind)等工具是執行記憶體和呼叫堆疊效能分析的絕佳且準確的方法。然而,它確實可以對 CPU 週期和指令等值進行簡化的測量,因為它不會測量本機硬體。其他工具(例如 gprof、prof 和 gperftools)非常接近硬件,但缺乏對測量內核和空閒事件的支援。 SUPERCOP、Papi 等中使用的其他測量指令和週期的方法可能不準確,只是簡單地計算 CPU 核心執行的總週期。這就是 Linux perf API 的閃光點。 API 提供了一套全面的工具來測量使用者和核心事件 - 無論是透過軟體定義的斷點還是硬體計數器。
perf
CLI 工具非常擅長提供使用這些 API 的方法,但它可以測量整個程式的執行情況。底層系統呼叫perf_event_open (2)
沒有 glibc 包裝器,因此非常冗長 - 特別是在執行大量測量時。
該庫旨在填補二進制中特定程式碼的高度精確測量的小利基空白。
待 API 穩定後繼續。
歡迎任何貢獻。如果您無法自己編寫程式碼,也許其他人可以 - 因此,如果您有任何想法,請發布問題。
確保您符合以下先決條件:
$CC
指gcc
8 或更高版本libcap
已安裝clang-format
已安裝(如果你想格式化程式碼)compiledb
(如果您想要格式化程式碼或使用其他llvm工具分析它) # Clone the repository
git clone https://github.com/AlexGustafsson/perf && cd perf
# Format the code
make format
# Build the library
make library
# Build examples
make examples
這些範例可以使用 Docker 進行測試。
docker build -t perf .
docker run -it --rm --privileged perf ./pi
mmap
ed 事件的支持