您好,登錄后才能下訂單哦!
bpftrace是基于BPF和BCC構建的開源跟蹤程序。與BCC一樣,bpftrace附帶了許多性能工具和支持文檔。但是,它還提供了高級編程語言,使您可以創建功能強大的單行代碼和簡短的工具。
例如,使用bpftrace one-liner將vfs_read() 返回值(字節或錯誤值)匯總為直方圖:
# bpftrace -e 'kretprobe:vfs_read { @bytes = hist(retval); }'
Attaching 1 probe...
^C
@bytes:
(..., 0) 223 |@@@@@@@@@@@@@ |
[0] 110 |@@@@@@ |
[1] 581 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
[2, 4) 23 |@ |
[4, 8) 9 | |
[8, 16) 844 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
[16, 32) 44 |@@ |
[32, 64) 67 |@@@@ |
[64, 128) 50 |@@@ |
[128, 256) 24 |@ |
[256, 512) 1 |
bpftrace是使用自定義單行代碼和簡短腳本的臨時工具的理想選擇,而BCC是復雜工具和守護程序的理想選擇。
bpftrace與其它可觀測性工具的對比
l perf
bpftrace提供了一種簡潔的高級語言,而perf腳本語言則是冗長的。
perf通過perf記錄和內存摘要模式(例如perf top)以二進制格式支持有效的事件轉儲。
bpftrace支持有效的內核內摘要,例如自定義直方圖,而perf的內置內核內摘要僅限于計數(perf stat)。
可以通過運行BPF程序來擴展perf的功能,盡管不能使用bpftrace之類的高級語言來實現。
l Ftrace
bpftrace提供類似于C和awk的高級語言,而Ftrace具有其自己的特殊語法。Ftrace具有較少的依賴性,使其適合于小型Linux環境。Ftrace還具有檢測模式,例如到目前為止的功能計數除了bpftrace使用的事件源之外,還進行了更多優化。(我的Ftrace funccount當前的啟動和停止時間比bpftrace更快,并且運行時開銷也較低。)
l Systemtap
bpftrace和SystemTap均提供高級語言。
bpftrace基于內置Linux技術,而SystemTap添加了自己的內核模塊,事實證明,這些模塊在RHEL以外的系統上都不可靠。正如bpftrace所做的那樣,SystemTap支持BPF后端的工作已經開始,這應該使其在其他系統上更可靠。SystemTap當前在其庫(磁帶集)中具有更多輔助功能,可用于檢測不同的目標。
l Lttng
LTTng優化了事件轉儲,并提供了用于分析事件轉儲的工具。與bpftrace相比,這種性能分析方法與bpftrace不同,后者專門用于臨時實時分析。
l 應用程序自帶的特定工具
特定于應用程序和運行時的工具僅限于用戶級別的可見性。bpftrace還可以檢測內核和硬件事件,從而確定那些工具無法解決的問題根源。這些工具的優點是它們通常是針對目標應用程序或運行時量身定制的。MySQL數據庫分析器已經了解如何檢測查詢,而JVM分析器已經可以檢測垃圾收集。在bpftrace中,您需要自己編寫此類功能的代碼。
bpftrace工具具有許多共同點:
他們解決了現實世界中的可觀察性問題。
它們被設計為以root用戶身份在生產環境中運行。
每個工具都有一個手冊頁(在man / man8下)。
每個工具都有一個示例文件,包含輸出和討論(在tools / * _ examples.txt下)。
工具源代碼以塊注釋介紹開始。
這些工具越簡單越好。(更復雜的工具將交由BCC使用。)
CentOS7下,bpftrace安裝后的,可執行文件 *.bt文件路徑在: /usr/share/bpftrace/tools
cd /usr/share/bpftrace/tools
./opensnoop.bt 即可執行對應的bpftrace程序
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。