0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ebpf的快速开发工具--libbpf-bootstrap

Rice嵌入式开发技术分享 来源:Rice 嵌入式开发技术分享 作者:Rice 嵌入式开发技 2023-09-25 09:04 次阅读

基于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

最终效果

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

下一步计划

将在「深圳风火轮科技推出的YY3568」上跑ebpf程序,敬请期待

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发工具
    +关注

    关注

    0

    文章

    209

    浏览量

    22234
  • Ubuntu
    +关注

    关注

    5

    文章

    560

    浏览量

    29551
  • bootstrap
    +关注

    关注

    0

    文章

    36

    浏览量

    3535
  • BPF
    BPF
    +关注

    关注

    0

    文章

    24

    浏览量

    3975
收藏 人收藏

    评论

    相关推荐

    CC2540迷你快速开发工具用户指南

    CC2540迷你快速开发工具用户指南
    发表于 02-23 09:23

    新手求助怎样去设计快速开发工具

    怎样去设计快速开发工具快速开发工具是如何实现与运用的?
    发表于 04-27 06:38

    openEuler 倡议建立 eBPF 软件发布标准

    eBPF 技术应用呈现井喷现象,但是开发、发布、安装等相关的基础技术出现碎片化现象,导致技术成果无法快速平移至行业客户生产环境;相似 eBPF 技术应用在重复实践。这些问题阻碍
    发表于 12-23 16:21

    Microchip推出三款开发工具

    Microchip推出三款开发工具包   Microchip Technology Inc.(美国微芯科技公司)今天宣布推出三款开发工具包,可支持采用Microchip丰富的PIC单片机快速
    发表于 03-31 13:28 847次阅读

    CodeWarriorTM开发工具套件

    本内容介绍了CodeWarriorTM开发工具套件
    发表于 05-19 18:08 0次下载
    CodeWarriorTM<b class='flag-5'>开发工具</b>套件

    STM32 VR开发工具

    STM32 VR开发工具
    发表于 02-17 13:38 39次下载

    新手TinyM0+ 开发工具快速入门

    新手TinyM0+ 开发工具快速入门
    发表于 10-09 09:54 13次下载
    新手TinyM0+ <b class='flag-5'>开发工具</b><b class='flag-5'>快速</b>入门

    ARM开发工具解读

    1.6 ARM开发工具 用户选用ARM处理器开发嵌入式产品时,选择合适的开发工具可以加快开发进度,节省开发成本。根据功能不同,ARM应用软件
    发表于 10-18 13:29 3次下载
    ARM<b class='flag-5'>开发工具</b>解读

    图解android开发工具

    要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,本篇经验就为大家介绍下这
    发表于 11-08 17:23 1411次阅读

    UG-677:ADuCM350软件开发工具快速入门指南

    UG-677:ADuCM350软件开发工具快速入门指南
    发表于 04-22 13:42 9次下载
    UG-677:ADuCM350软件<b class='flag-5'>开发工具</b>包<b class='flag-5'>快速</b>入门指南

    【新唐开发工具快速建构低功耗蓝牙设计的开发模块:BLE ATCMD

    【新唐开发工具快速建构低功耗蓝牙设计的开发模块:BLE ATCMD
    的头像 发表于 08-09 15:27 616次阅读
    【新唐<b class='flag-5'>开发工具</b>】<b class='flag-5'>快速</b>建构低功耗蓝牙设计的<b class='flag-5'>开发</b>模块:BLE ATCMD

    基于ebpf的性能工具-bpftrace

    运行情况对于诊断问题、优化性能以及进行安全监控至关重要。bpftrace作为一款强大的跟踪工具,为开发人员和系统管理员提供了一种独特的方式来监视和分析Linux系统的内部运行。本文描述bpftrace的原理和使用。 bpftrace 「bpftrace是基于
    的头像 发表于 09-04 16:02 637次阅读
    基于<b class='flag-5'>ebpf</b>的性能<b class='flag-5'>工具</b>-bpftrace

    eBPF动手实践系列三:基于原生libbpf库的eBPF编程改进方案简析

    在上一篇文章《eBPF动手实践系列二:构建基于纯C语言的eBPF项目》中,我们初步实现了脱离内核源码进行纯C语言eBPF项目的构建。libbpf库在早期和内核源码结合的比较紧密,如今的
    的头像 发表于 03-19 14:19 756次阅读
    <b class='flag-5'>eBPF</b>动手实践系列三:基于原生<b class='flag-5'>libbpf</b>库的<b class='flag-5'>eBPF</b>编程改进方案简析

    基于原生libbpf库的eBPF编程改进方案

    为了简化 eBPF程序的开发流程,降低开发者在使用 libbpf 库时的入门难度,libbpf-bootstrap 框架应运而生。基于
    发表于 03-19 14:19 571次阅读
    基于原生<b class='flag-5'>libbpf</b>库的<b class='flag-5'>eBPF</b>编程改进方案

    bootstrap框架用什么软件开发

    Bootstrap是一个流行的前端框架,用于快速开发响应式和移动优先的Web应用程序。它提供了一套预定义的CSS和JavaScript组件,使得开发者可以
    的头像 发表于 07-11 09:50 418次阅读