基于ubuntu22.04-深入淺出 eBPF
基于ebpf的性能工具-bpftrace
基于ebpf的性能工具-bpftrace腳本語法
基于ebpf的性能工具-bpftrace實戰(內存泄漏)
什么是libbpf-bootstrap
libbpf-bootstrap是一個開源項目,旨在幫助開發者快速啟動和開發使用eBPF(Extended Berkeley Packet Filter)和libbpf的程序。eBPF是一種可以在Linux內核中運行的程序,提供了強大的網絡過濾、系統調用監控和性能分析等功能。libbpf是一個庫,用于加載和管理eBPF程序和map。
libbpf-bootstrap提供了一些樣例程序和模板,幫助開發者理解如何使用libbpf創建、加載、管理eBPF程序,并與這些程序進行交互。
libbpf-bootstrap開源鏈接:https://github.com/libbpf/libbpf-bootstrap/
「以下是libbpf-bootstrap的一些主要特性:」
樣例程序:libbpf-bootstrap提供了一些樣例程序,用于演示如何使用libbpf和eBPF。這些樣例程序包括網絡監控、性能分析等不同類型的eBPF程序。
構建系統集成:libbpf-bootstrap提供了集成到構建系統的模板,可以方便地編譯和鏈接eBPF程序。
BPF CO-RE(Compile Once - Run Everywhere)支持:BPF CO-RE是一種讓eBPF程序能在不同版本的Linux內核上運行的技術。libbpf-bootstrap支持CO-RE,使得開發的eBPF程序可以在不同版本的Linux內核上運行,無需重新編譯。
用戶空間和內核空間程序的交互:libbpf-bootstrap展示了如何從用戶空間程序發送數據到eBPF程序,以及從eBPF程序返回數據到用戶空間。
詳細的文檔:libbpf-bootstrap提供了詳細的文檔,包括如何安裝、如何使用樣例程序,以及如何創建自己的eBPF程序等。
使用libbpf-bootstrap的理由
開始使用BPF在很大程度上仍然令人生畏,因為即使為簡單的"Hello World"般的BPF應用程序設置構建工作流,也需要一系列步驟,對于新的BPF開發人員來說,這些步驟可能會令人沮喪和令人生畏。這并不復雜,但知道必要的步驟是一個(不必要的)困難的部分。
libbpf-bootstrap就是這樣一個BPF游樂場,它已經盡可能地為初學者配置好了環境,幫助他們可以直接步入到BPF程序的書寫。它綜合了BPF社區多年來的最佳實踐,并且提供了一個現代化的、便捷的工作流。libbpf-bootstrap依賴于libbpf并且使用了一個很簡單的Makefile。對于需要更高級設置的用戶,它也是一個好的起點。即使這個Makefile不會被直接使用到,也可以很輕易地遷移到別的構建系統上。
libbpf-bootstrap構建流程
libbpf-bootstrap的測試環境:本篇文章我們將在Ubuntu22.04進行驗證,下一篇文章我們將其在yy3568進行驗證。
安裝libbpf-bootstrap依賴的工具:clang,libelf,zlib
$sudoapt-getinstallclanglibelf1libelf-devzlib1g-dev
獲取源碼libbpf-bootstrap
//獲取libbpf-bootstrap主倉的代碼 $gitclonehttps://github.com/libbpf/libbpf-bootstrap //獲取依賴的子倉代碼 $gitsubmoduleupdate--init--recursive
編譯libbpf-bootstrap
$cdexamples/c/ $make MKDIR.output MKDIR.output/libbpf LIBlibbpf.a MKDIR/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs CC/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/bpf.o CC/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/btf.o CC/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/libbpf.o CC/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/libbpf_errno.o CC/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/netlink.o CC/home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/nlattr.o ..... BINARYusdt BPF.output/sockfilter.bpf.o GEN-SKEL.output/sockfilter.skel.h CC.output/sockfilter.o BINARYsockfilter BPF.output/tc.bpf.o GEN-SKEL.output/tc.skel.h CC.output/tc.o BINARYtc BPF.output/ksyscall.bpf.o GEN-SKEL.output/ksyscall.skel.h CC.output/ksyscall.o BINARYksyscall $
運行測試樣例
我們義kprobe測試樣例為例,需要打開三個terminal,第一個terminal執行kprobe程序,第二個terminal 我們cat trace_pipi的內容,第三個terminal我們制造一些現場。
當我們在第三個terminal制造現場的時候,第二個terminal就可以看到相關的探測內容
第一個terminal執行kprobe程序:
$sudo./kprobe
第二個terminal 我們cat trace_pipi的內容,需要進入超級管理員,在執行:
$cat/sys/kernel/tracing/trace_pipe
第三個terminal我們制造一些現場:
$touchyouyeetoo $rm-rfyouyeetoo
最終效果
下一步計劃
將在「深圳風火輪科技推出的YY3568」上跑ebpf程序,敬請期待
審核編輯 黃宇
-
開發工具
+關注
關注
0文章
206瀏覽量
22148 -
Ubuntu
+關注
關注
5文章
538瀏覽量
29036 -
bootstrap
+關注
關注
0文章
31瀏覽量
3504 -
BPF
+關注
關注
0文章
24瀏覽量
3867
發布評論請先 登錄
相關推薦
openEuler 倡議建立 eBPF 軟件發布標準
Microchip推出三款開發工具包
ARM開發工具解讀
如何使用KEELOQ3開發工具包作為開發工具來在目標板上仿真和調試固件
6個高效的前端開發工具
硬件開發工具介紹
eBPF動手實踐系列三:基于原生libbpf庫的eBPF編程改進方案簡析
評論