高鹏--基于libbpf-bootstrap开发实践.pdf

编号:161281 PDF 20页 436.46KB 下载积分:VIP专享
下载报告请您先登录!

高鹏--基于libbpf-bootstrap开发实践.pdf

1、libbpf-bootstrap框架开发实践西邮Linux兴趣小组高鹏第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安若仅了解Linux系统编程,则视内核为黑盒。若一头扎进Linux内核源码,初学者容易失去重点。可以通过eBPF,对内核窥探一二。对于学生,eBPF不仅是工具,也是学习内核的途径。第 二 届 e B P F 开 发 者 大 会学习eBPF1.libbpf-bootstrap框架2.eBPF在安卓下的开发探索第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安1.libbpf-b

2、ootstarp框架第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安BCC:pythonBCC 依赖于运行时编译,需要将整个庞大的 LLVM/Clang 库嵌入到自身中。读写BPF Map时需要编写半面向对象的C代码,和内核中发生的不完全匹配。开发和测试的迭代变得痛苦,可能在运行时有很多编译错误。libbpf:C/C+库,作为内核的一部分进行维护,位于tools/lib/bpf目录下BPF CO-RElibbpf提供了一个eBPF loader,用于处理LLVM生成的ELF文件,将其载入内核第 二 届 e B P F 开 发 者 大 会(1

3、)框架对比基于 libbpf 开发出来eBPF内核层代码,通过bpftool工具直接生成用户层代码操作接口。支持C语言和Rust语言xxx.bpf.c内核层代码,被 clang 编译器编译成 xxx.tmp.bpf.obpftool 工具通过 xxx.tmp.bpf.o 自动生成 xxx.skel.h 头文件xxx.skel.h 头文件中包含了 xxx.bpf.c 对应的elf文件数据,以及用户层需要的 open,load,attach 等接口。第 二 届 e B P F 开 发 者 大 会(2)libbpf-bootstrap框架特点open:从 clang 编译器编译得到的eBPF程序el

4、f文件中抽取 maps,eBPF程序,全局变量等;但是还未在内核中创建,可以对 maps,全局变量 进行修改。load:maps,全局变量 在内核中被创建,eBPF字节码程序加载到内核中,并进行校验;但这个阶段,eBPF程序虽然存在内核中,但还不会被运行,还可以对内核中的maps进行初始状态的赋值。attach:eBPF程序被attach到挂接点,eBPF相关功能开始运行,比如:eBPF程序被触发运行,更新maps,全局变量等。destroy:eBPF程序被 detached,eBPF用到的资源将会被释放。第 二 届 e B P F 开 发 者 大 会(3)libbpf-bootstrap框架

5、生命周期BPF CO-RE:一次编译,可以运行在不同版本的内核中需要内核打开 CONFIG_DEBUG_INFO_BTF 配置#define bpf_core_read(dst,sz,src)bpf_probe_read_kernel(dst,sz,(const void*)_builtin_preserve_access_index(src)_builtin_preserve_access_index 宏 clang 编译器编译时增加结构体字段重定位的信息编写便捷简单:提供了简单的示例程序和Makefile文件不需要过多的配置和构建,方便开发第 二 届 e B P F 开 发 者 大 会(3

6、)libbpf-bootstrap框架优势全局变量(Linux 5.5+)可以用于配置BPF程序、存放轻量的统计数据、在内核和用户空间传递数据。通过BPF skeleton来访问这些变量,在用户空间对这些变量的修改,会立刻反映到内核空间。常作为命令行参数进行过滤的媒介。BPF ring buffer map(Linux 5.8+)相比 perf buffer,两者底层都使用epollperf-buffer per-CPU 环形缓冲区ring buffer 分配 CPU 共享的缓冲区内存效率更高、保证事件顺序,性能也更高。第 二 届 e B P F 开 发 者 大 会(3)libbpf-boot

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(高鹏--基于libbpf-bootstrap开发实践.pdf)为本站 (张5G) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
客服
商务合作
小程序
服务号
折叠