0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ebpf的快速開發(fā)工具--libbpf-bootstrap

Rice嵌入式開發(fā)技術(shù)分享 ? 來源:Rice 嵌入式開發(fā)技術(shù)分享 ? 作者:Rice 嵌入式開發(fā)技 ? 2023-09-25 09:04 ? 次閱讀

基于ubuntu22.04-深入淺出 eBPF

基于ebpf的性能工具-bpftrace

基于ebpf的性能工具-bpftrace腳本語(yǔ)法

基于ebpf的性能工具-bpftrace實(shí)戰(zhàn)(內(nèi)存泄漏)

什么是libbpf-bootstrap

libbpf-bootstrap是一個(gè)開源項(xiàng)目,旨在幫助開發(fā)者快速啟動(dòng)和開發(fā)使用eBPF(Extended Berkeley Packet Filter)和libbpf的程序。eBPF是一種可以在Linux內(nèi)核中運(yùn)行的程序,提供了強(qiáng)大的網(wǎng)絡(luò)過濾、系統(tǒng)調(diào)用監(jiān)控和性能分析等功能。libbpf是一個(gè)庫(kù),用于加載和管理eBPF程序和map。

libbpf-bootstrap提供了一些樣例程序和模板,幫助開發(fā)者理解如何使用libbpf創(chuàng)建、加載、管理eBPF程序,并與這些程序進(jìn)行交互。

libbpf-bootstrap開源鏈接:https://github.com/libbpf/libbpf-bootstrap/

「以下是libbpf-bootstrap的一些主要特性:」

樣例程序:libbpf-bootstrap提供了一些樣例程序,用于演示如何使用libbpf和eBPF。這些樣例程序包括網(wǎng)絡(luò)監(jiān)控、性能分析等不同類型的eBPF程序。

構(gòu)建系統(tǒng)集成:libbpf-bootstrap提供了集成到構(gòu)建系統(tǒng)的模板,可以方便地編譯和鏈接eBPF程序。

BPF CO-RE(Compile Once - Run Everywhere)支持:BPF CO-RE是一種讓eBPF程序能在不同版本的Linux內(nèi)核上運(yùn)行的技術(shù)。libbpf-bootstrap支持CO-RE,使得開發(fā)的eBPF程序可以在不同版本的Linux內(nèi)核上運(yùn)行,無(wú)需重新編譯。

用戶空間和內(nèi)核空間程序的交互:libbpf-bootstrap展示了如何從用戶空間程序發(fā)送數(shù)據(jù)到eBPF程序,以及從eBPF程序返回?cái)?shù)據(jù)到用戶空間。

詳細(xì)的文檔:libbpf-bootstrap提供了詳細(xì)的文檔,包括如何安裝、如何使用樣例程序,以及如何創(chuàng)建自己的eBPF程序等。

使用libbpf-bootstrap的理由

開始使用BPF在很大程度上仍然令人生畏,因?yàn)榧词篂楹?jiǎn)單的"Hello World"般的BPF應(yīng)用程序設(shè)置構(gòu)建工作流,也需要一系列步驟,對(duì)于新的BPF開發(fā)人員來說,這些步驟可能會(huì)令人沮喪和令人生畏。這并不復(fù)雜,但知道必要的步驟是一個(gè)(不必要的)困難的部分。

libbpf-bootstrap就是這樣一個(gè)BPF游樂場(chǎng),它已經(jīng)盡可能地為初學(xué)者配置好了環(huán)境,幫助他們可以直接步入到BPF程序的書寫。它綜合了BPF社區(qū)多年來的最佳實(shí)踐,并且提供了一個(gè)現(xiàn)代化的、便捷的工作流。libbpf-bootstrap依賴于libbpf并且使用了一個(gè)很簡(jiǎn)單的Makefile。對(duì)于需要更高級(jí)設(shè)置的用戶,它也是一個(gè)好的起點(diǎn)。即使這個(gè)Makefile不會(huì)被直接使用到,也可以很輕易地遷移到別的構(gòu)建系統(tǒng)上。

libbpf-bootstrap構(gòu)建流程

libbpf-bootstrap的測(cè)試環(huán)境:本篇文章我們將在Ubuntu22.04進(jìn)行驗(yàn)證,下一篇文章我們將其在yy3568進(jìn)行驗(yàn)證。

安裝libbpf-bootstrap依賴的工具:clang,libelf,zlib

$sudoapt-getinstallclanglibelf1libelf-devzlib1g-dev

獲取源碼libbpf-bootstrap

//獲取libbpf-bootstrap主倉(cāng)的代碼
$gitclonehttps://github.com/libbpf/libbpf-bootstrap

//獲取依賴的子倉(cāng)代碼
$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
$

運(yùn)行測(cè)試樣例

我們義kprobe測(cè)試樣例為例,需要打開三個(gè)terminal,第一個(gè)terminal執(zhí)行kprobe程序,第二個(gè)terminal 我們cat trace_pipi的內(nèi)容,第三個(gè)terminal我們制造一些現(xiàn)場(chǎng)。

當(dāng)我們?cè)诘谌齻€(gè)terminal制造現(xiàn)場(chǎng)的時(shí)候,第二個(gè)terminal就可以看到相關(guān)的探測(cè)內(nèi)容

第一個(gè)terminal執(zhí)行kprobe程序:

$sudo./kprobe

第二個(gè)terminal 我們cat trace_pipi的內(nèi)容,需要進(jìn)入超級(jí)管理員,在執(zhí)行:

$cat/sys/kernel/tracing/trace_pipe

第三個(gè)terminal我們制造一些現(xiàn)場(chǎng):

$touchyouyeetoo
$rm-rfyouyeetoo

最終效果

70ef16fe-5b3f-11ee-80f7-92fbcf53809c.png

下一步計(jì)劃

將在「深圳風(fēng)火輪科技推出的YY3568」上跑ebpf程序,敬請(qǐng)期待

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開發(fā)工具
    +關(guān)注

    關(guān)注

    0

    文章

    208

    瀏覽量

    22223
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    559

    瀏覽量

    29501
  • bootstrap
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    3528
  • BPF
    BPF
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    3968
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CC2540迷你快速開發(fā)工具用戶指南

    CC2540迷你快速開發(fā)工具用戶指南
    發(fā)表于 02-23 09:23

    新手求助怎樣去設(shè)計(jì)快速開發(fā)工具?

    怎樣去設(shè)計(jì)快速開發(fā)工具?快速開發(fā)工具是如何實(shí)現(xiàn)與運(yùn)用的?
    發(fā)表于 04-27 06:38

    openEuler 倡議建立 eBPF 軟件發(fā)布標(biāo)準(zhǔn)

    eBPF 技術(shù)應(yīng)用呈現(xiàn)井噴現(xiàn)象,但是開發(fā)、發(fā)布、安裝等相關(guān)的基礎(chǔ)技術(shù)出現(xiàn)碎片化現(xiàn)象,導(dǎo)致技術(shù)成果無(wú)法快速平移至行業(yè)客戶生產(chǎn)環(huán)境;相似 eBPF 技術(shù)應(yīng)用在重復(fù)實(shí)踐。這些問題阻礙
    發(fā)表于 12-23 16:21

    Microchip推出三款開發(fā)工具

    Microchip推出三款開發(fā)工具包   Microchip Technology Inc.(美國(guó)微芯科技公司)今天宣布推出三款開發(fā)工具包,可支持采用Microchip豐富的PIC單片機(jī)快速
    發(fā)表于 03-31 13:28 ?841次閱讀

    CodeWarriorTM開發(fā)工具套件

    本內(nèi)容介紹了CodeWarriorTM開發(fā)工具套件
    發(fā)表于 05-19 18:08 ?0次下載
    CodeWarriorTM<b class='flag-5'>開發(fā)工具</b>套件

    STM32 VR開發(fā)工具

    STM32 VR開發(fā)工具
    發(fā)表于 02-17 13:38 ?39次下載

    新手TinyM0+ 開發(fā)工具快速入門

    新手TinyM0+ 開發(fā)工具快速入門
    發(fā)表于 10-09 09:54 ?13次下載
    新手TinyM0+ <b class='flag-5'>開發(fā)工具</b><b class='flag-5'>快速</b>入門

    ARM開發(fā)工具解讀

    1.6 ARM開發(fā)工具 用戶選用ARM處理器開發(fā)嵌入式產(chǎn)品時(shí),選擇合適的開發(fā)工具可以加快開發(fā)進(jìn)度,節(jié)省開發(fā)成本。根據(jù)功能不同,ARM應(yīng)用軟件
    發(fā)表于 10-18 13:29 ?3次下載
    ARM<b class='flag-5'>開發(fā)工具</b>解讀

    圖解android開發(fā)工具

    要想快速開發(fā)一個(gè)Android應(yīng)用,通常會(huì)用到很多工具,巧妙利用這些工具,能讓我們的開發(fā)工作事半功倍,節(jié)省大量時(shí)間,本篇經(jīng)驗(yàn)就為大家介紹下這
    發(fā)表于 11-08 17:23 ?1400次閱讀

    UG-677:ADuCM350軟件開發(fā)工具快速入門指南

    UG-677:ADuCM350軟件開發(fā)工具快速入門指南
    發(fā)表于 04-22 13:42 ?9次下載
    UG-677:ADuCM350軟件<b class='flag-5'>開發(fā)工具</b>包<b class='flag-5'>快速</b>入門指南

    【新唐開發(fā)工具快速建構(gòu)低功耗藍(lán)牙設(shè)計(jì)的開發(fā)模塊:BLE ATCMD

    【新唐開發(fā)工具快速建構(gòu)低功耗藍(lán)牙設(shè)計(jì)的開發(fā)模塊:BLE ATCMD
    的頭像 發(fā)表于 08-09 15:27 ?596次閱讀
    【新唐<b class='flag-5'>開發(fā)工具</b>】<b class='flag-5'>快速</b>建構(gòu)低功耗藍(lán)牙設(shè)計(jì)的<b class='flag-5'>開發(fā)</b>模塊:BLE ATCMD

    基于ebpf的性能工具-bpftrace

    運(yùn)行情況對(duì)于診斷問題、優(yōu)化性能以及進(jìn)行安全監(jiān)控至關(guān)重要。bpftrace作為一款強(qiáng)大的跟蹤工具,為開發(fā)人員和系統(tǒng)管理員提供了一種獨(dú)特的方式來監(jiān)視和分析Linux系統(tǒng)的內(nèi)部運(yùn)行。本文描述bpftrace的原理和使用。 bpftrace 「bpftrace是基于
    的頭像 發(fā)表于 09-04 16:02 ?630次閱讀
    基于<b class='flag-5'>ebpf</b>的性能<b class='flag-5'>工具</b>-bpftrace

    eBPF動(dòng)手實(shí)踐系列三:基于原生libbpf庫(kù)的eBPF編程改進(jìn)方案簡(jiǎn)析

    在上一篇文章《eBPF動(dòng)手實(shí)踐系列二:構(gòu)建基于純C語(yǔ)言的eBPF項(xiàng)目》中,我們初步實(shí)現(xiàn)了脫離內(nèi)核源碼進(jìn)行純C語(yǔ)言eBPF項(xiàng)目的構(gòu)建。libbpf庫(kù)在早期和內(nèi)核源碼結(jié)合的比較緊密,如今的
    的頭像 發(fā)表于 03-19 14:19 ?711次閱讀
    <b class='flag-5'>eBPF</b>動(dòng)手實(shí)踐系列三:基于原生<b class='flag-5'>libbpf</b>庫(kù)的<b class='flag-5'>eBPF</b>編程改進(jìn)方案簡(jiǎn)析

    基于原生libbpf庫(kù)的eBPF編程改進(jìn)方案

    為了簡(jiǎn)化 eBPF程序的開發(fā)流程,降低開發(fā)者在使用 libbpf 庫(kù)時(shí)的入門難度,libbpf-bootstrap 框架應(yīng)運(yùn)而生?;?/div>
    發(fā)表于 03-19 14:19 ?546次閱讀
    基于原生<b class='flag-5'>libbpf</b>庫(kù)的<b class='flag-5'>eBPF</b>編程改進(jìn)方案

    bootstrap框架用什么軟件開發(fā)

    Bootstrap是一個(gè)流行的前端框架,用于快速開發(fā)響應(yīng)式和移動(dòng)優(yōu)先的Web應(yīng)用程序。它提供了一套預(yù)定義的CSS和JavaScript組件,使得開發(fā)者可以
    的頭像 發(fā)表于 07-11 09:50 ?393次閱讀