Hasty Briefsbeta

双语

Bouncing on trampolines to run eBPF programs

9 months ago
  • #performance
  • #kernel
  • #eBPF
  • eBPF trampoline是一种内部机制,用于优化eBPF程序的执行开销。
  • eBPF追踪程序类型包括kprobe、tracepoint、raw tracepoint、perf event以及纯追踪程序。
  • 纯追踪程序可挂载到fentry/fexit函数入口/出口、修改返回值以及迭代器程序。
  • 示例展示了通过附加到openat2系统调用的eBPF程序来监控文件打开尝试。
  • 传统kprobe机制通过修补指令产生异常实现,会带来性能开销。
  • eBPF trampoline通过直接调用eBPF程序避免异常,充当ABI桥梁角色。
  • 该蹦床机制动态生成代码来处理函数参数和调用约定。
  • 高级用法:可同时处理fentry(入口)和fexit(出口)程序进行全链路插桩。
  • ARM64架构对eBPF trampoline的支持已增强,包括多kprobe挂载和8+参数处理能力。
  • 由eBPF基金会资助的改进已合并至Linux内核6.16.0版本。