有太多的linux tracer可供選擇。每壹種都有其官方(或非官方)的卡通獨角獸吉祥物,足以撐起壹部“兒童劇”。
那麽我們應該使用哪種示蹤劑呢?
這個問題我給兩種讀者來回答,大部分人和性能/內核工程師。這些過段時間可能會有變化,我會繼續跟進補充,大概壹年更新壹次。
許多
大部分人(開發人員、系統管理員、開發經理、運維人員、評估人員等。)不要在意系統跟蹤器的細節。以下是關於追蹤器妳應該知道和做的事情:
1.用perf_events分析CPU性能。
使用perf_events進行CPU性能分析。性能指標可以通過火焰圖等工具可視化。
git克隆-深度1/brendang regg/flame graph
性能記錄-F 99 -a -g - sleep 30
性能腳本|。/flame graph/stack collapse-perf . pl |。/flame graph/flame graph . pl & gt;性能. svg
Linux perf_events(也稱為“perf”,命令名相同)是Linux用戶的官方追蹤器和性能分析器。內置內核代碼,維護良好(最近增強很快),通常通過linux命令行工具包添加。
Perf有很多功能。如果只能推薦壹個,我選CPU性能分析。雖然這只是采樣,而不是技術上的跟蹤事件。最困難的部分是獲得完整的堆棧和信息,這壹點我已經在網飛的壹次演講中提到過。
認識其他追蹤者
正如我的壹個朋友所說,“妳不需要知道如何操作x光機,但壹旦妳吞下壹枚硬幣,妳就必須知道妳必須做x光。”妳要知道各種tracer能做什麽,這樣當妳的工作中真的需要tracer的時候,妳就可以選擇以後學習使用或者雇人來做。
簡而言之:tracer幾乎可以分析和跟蹤任何東西。比如文件系統,網絡處理器,硬件驅動,所有應用。可以看看我個人網站上關於ftrace的文章,還有我寫的關於perf_events的文檔介紹,可以作為追蹤(或者性能分析)的例子。
尋求前端支持工具
如果妳想買壹個可以支持跟蹤Linux的性能分析工具(有很多公司賣這種工具)。想象壹下,妳只要直接點擊界面,就可以“看到”整個系統內核,包括不同棧位的隱藏熱圖。我在Monitorama talk中介紹了這樣壹個帶有圖形界面的工具。
我開源了壹些自己開發的前端工具,雖然只是CLI(命令行界面)而不是圖形界面。這些工具也將使人們更容易和更快地使用tracer。例如,以下示例使用我的perf_tool跟蹤壹個新進程:
# ./execsnouptracing exec()s . Ctrl-C結束。
PID PPID ARGS
22898 22004男子
UTF-8
22908 22898尋呼機-s
22907 22898 nroff-mandoc-rLL = 164n-rLT = 164n-tut F8
[...]
在網飛上,我們創建了壹個Vector,壹個分析工具的實例和Linux上tracer的最終前端。
給性能或內核工程師
我們的工作難度越來越大,很多人會問我們怎麽跟蹤,可以用哪條路!為了正確理解壹條路徑,妳常常至少要花100個小時去做。理解所有的linux路徑來做出理性的決定是壹個巨大的工程。我可能是唯壹壹個接近做到的人。
這是我的建議。您可以選擇壹個:
a)選擇壹個全能的路徑並將其標準化將涉及花費大量時間來找出它在測試環境中的細微差別和安全性。我現在推薦最新版本的SystemTap(即從源代碼構建)。我知道有公司選擇了LTTng,用的也不錯,雖然不是很厲害(雖然更安全)。如果Sysdig可以添加跟蹤點或kprobes,它也可以是另壹個候選。
b)按照上面我提供的流程圖,這將意味著盡可能多地使用ftrace或perf_event,eBPF將被集成,然後像SystemTap/LTTng這樣的其他路徑將填補這壹空白。