簡體   English   中英

如何使用Linux性能工具進行代碼理解

[英]How to use linux perf tool for code comprehension

我對“性能”記錄調用圖的能力着迷,並試圖了解如何使用它來理解新的代碼庫。

我在調試模式下編譯了代碼,並使用以下命令運行了單元測試:

性能記錄-調用圖矮人測試

這將創建一個230兆的perf.data。 然后我寫出調用圖

性能報告--call-graph --stdio> callgraph.txt

這將創建一個50兆的文件。

理想情況下,我只希望看到屬於該項目的代碼,而不是內核代碼,系統調用,c ++標准庫,甚至是boost和任何其他第三方軟件。 目前,我看到諸如__GI ___ dl_iterate_phdr,_Unwind_Find_FDE等項目。

我喜歡flamegraph項目。 但是,這種可視化效果不利於代碼理解。 還有其他項目,文章,想法可能會有所幫助嗎?

對於大型應用程序, perf report -g不應過於冗長地轉儲到外部文件中。 收集的perf.data (帶有-g )可以在沒有交互式Perf報告TUI界面的文件重定向的情況下工作。 您可以禁用調用圖報告,以查找在沒有-gperf report --no-children情況下,花費最多時間進行perf record函數。

有gprof2dot腳本( https://github.com/jrfonseca/gprof2dot )可將lagre perf報告調用圖可視化為緊湊圖片(圖)。

svg / js中還有Brendan D. Gregg的交互式FlameGraphs 他經常在演示文稿中指出, perf report -g輸出顯示了許多兆字節的原始報告轉儲,以及許多A4頁面。 有perf的使用說明: http ://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#perf:

# git clone https://github.com/brendangregg/FlameGraph  # or download it from github
# cd FlameGraph
# perf record -F 99 -g -- ../command
# perf script | ./stackcollapse-perf.pl > out.perf-folded
# ./flamegraph.pl out.perf-folded > perf-kernel.svg

PS:為什么要進行概要分析過程? 嘗試選擇一些測試,然后僅對它們進行配置。 使用較低的配置文件頻率以獲取較小的perf.data文件。 還可以使用默認事件“ cycles”的后綴:u禁用內核模式樣本: perf record -F 99 -g -e cycles:u -- ../command

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM