写在前面
由于eBPF可运行用户提供的eBPF程序来扩展内核,这些程序可以附加到内核中的探测点或事件,用于收集有用的内核统计信息,监控和调试。eBPF使用bpf(2)系统调用加载到内核中,并作为eBPF机器指令的二进制块由用户来提供。
Android构建系统支持使用本文所述的build文件语法将C程序编译为eBPF程序。并且Android包含了一个eBPF加载器和库,这样Android可以在启动初始化阶段加载eBPF程序。
一,内核支持
对比bcc的指导,以及实际从pixel 4xl的coral版本(android 12)的/proc/config.gz文件中所看到的,开启eBPF需要使能相关的配置项,如下BCC和Android的对比:
from /bcc/INSTALL.md | from Android 12 |
CONFIG_BPF=y |