梅州免费建站公司,网站产品类别顺序如果修改,网上做兼职老师的正规网站,php能用着手机网站开发基于ubuntu22.04-深入浅出 eBPF
基于ebpf的性能工具-bpftrace
基于ebpf的性能工具-bpftrace脚本语法
基于ebpf的性能工具-bpftrace实战(内存泄漏)
什么是libbpf-bootstrap
libbpf-bootstrap是一个开源项目#xff0c;旨在帮助开发者快速启动和开发使用eBPF(Extended Berk…基于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依赖的工具clanglibelfzlib
$ sudo apt-get install clang libelf1 libelf-dev zlib1g-dev获取源码libbpf-bootstrap
// 获取libbpf-bootstrap主仓的代码
$ git clone https://github.com/libbpf/libbpf-bootstrap// 获取依赖的子仓代码
$ git submodule update --init --recursive编译libbpf-bootstrap
$ cd examples/c/
$ make MKDIR .outputMKDIR .output/libbpfLIB libbpf.aMKDIR /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjsCC /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/bpf.oCC /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/btf.oCC /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/libbpf.oCC /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/libbpf_errno.oCC /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/netlink.oCC /home/rice/libbpf-bootstrap/examples/c/.output//libbpf/staticobjs/nlattr.o
.....BINARY usdtBPF .output/sockfilter.bpf.oGEN-SKEL .output/sockfilter.skel.hCC .output/sockfilter.oBINARY sockfilterBPF .output/tc.bpf.oGEN-SKEL .output/tc.skel.hCC .output/tc.oBINARY tcBPF .output/ksyscall.bpf.oGEN-SKEL .output/ksyscall.skel.hCC .output/ksyscall.oBINARY ksyscall
$ 运行测试样例 我们义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我们制造一些现场:
$ touch youyeetoo
$ rm -rf youyeetoo最终效果 下一步计划
将在深圳风火轮科技推出的YY3568上跑ebpf程序敬请期待