当前位置:首页 > 报告详情

分会场1_董梦龙_TRAMPOLINE & TRACING MULTI-LINK技术探索_报告PPT.pdf

上传人: 科*** 编号:713396 2025-06-08 22页 912.78KB

1、TRAMPOLINE&TRACING MULTI-LINK技术探索第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m天翼云科技有限公司 董梦龙中 国 西 安TRAMPOLINE基本原理基本原理第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m天翼云科技有限公司天翼云科技有限公司第 三 届 e B P F 开 发 者 大 会FTRACE基本原理基本原理-mfentry-fpatchable-function-entry第 三 届 e B P F 开 发 者 大 会TRAMPOLINE基本基本原理原理目标函数和BPF之间的

2、桥梁第 三 届 e B P F 开 发 者 大 会TRAMPOLINE基本基本原理原理优势:direct call,性能高更简洁的方式来获取被跟踪的函数的参数函数返回值的同时,获取函数的参数修改被跟踪函数的返回值用户:BPF_PROG_TYPE_TRACINGBPF_PROG_TYPE_EXTBPF_PROG_TYPE_LSMBPF_LSM_CGROUP第 三 届 e B P F 开 发 者 大 会TRACING劣势劣势资源开销大,创建耗时,不适合大批量场景无法一个BPF程序实现HOOK多个内核函数每秒只能完成几十个BPF程序的attach,超过一千个目标函数,要以分钟为单位代码&数据耦合第

3、三 届 e B P F 开 发 者 大 会TRACING MULTI-LINK(V1)实现了tracing multi-link,可以将单个bpf程序attach到多个内核函数。没有从根本上解决加载慢、资源浪费的问题patch series:https:/lore.kernel.org/netdev/20240311093526.1010158-1- 三 届 e B P F 开 发 者 大 会TRACING MULTI-LINK(V1)global trampoline的逻辑:save regsbpfs=trampoline_lookup_ip(ip)fentry=bpfs-fentriesw

4、hile fentry:fentry(ctx)fentry=fentry-nextcall originsave return valuefexit=bpfs-fexitswhile fexit:fexit(ctx)fexit=fexit-next将每个函数上面挂载的BPF信息,以函数地址为key,保存到全局哈希表中,通过trampoline_lookup_ip函数进行查找,在global trampoline中调用。struct bpf_array struct bpf_prog*fentries;struct bpf_prog*fexits;struct bpf_prog*modify_r

5、eturns;性能太差,不行!第 三 届 e B P F 开 发 者 大 会MIXING TRAMPOLINES(Jirka)第 三 届 e B P F 开 发 者 大 会MIXING TRAMPOLINES(Jirka)https:/lpc.events/event/16/contributions/1350/attachments/1033/1983/plumbers.pdfhttps:/git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git/log/?h=bpf/batch29个patch不行,太过复杂第 三 届 e B P F 开

6、发 者 大 会TRACING MULTI-LINK(V1)零开销的“per-function storage”?第 三 届 e B P F 开 发 者 大 会function meta data核心思想:在每个函数前面预留一定的padding空间(8字节),将我们需要的信息存储到这个padding空间中。该方式需要编译器支持。所幸,编译器提供了-fpatchable-function-entry参数可以实现这一功能。零开销:(struct bpf_array*)(ip-8)第 三 届 e B P F 开 发 者 大 会function meta data挑战:1.每个函数前面预留padding

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要探讨了TRAMPOLINE和TRACING MULTI-LINK技术在eBPF开发者大会上的应用。关键点如下: 1. TRAMPOLINE技术作为目标函数和BPF之间的桥梁,具有高性能和简洁获取跟踪函数参数的优势,但资源开销大,不适合大批量场景。 2. TRACING MULTI-LINK技术实现了将单个BPF程序attach到多个内核函数,但未根本解决加载慢和资源浪费问题。 3. MIXING TRAMPOLINES方法过于复杂,不可行。 4. 提出零开销的“per-function storage”方案,通过在函数前预留padding空间存储信息,但存在兼容性和开销问题。 5. global trampoline存在indirect call导致的性能问题,但性能仍比kprobe_multi高出一个数量级。 6. tracing multi-link技术兼容现有global trampoline,已完成80%的开发,代码量新增3500行。 引用核心数据:TRAMPOLINE技术具有高性能,但资源开销大;global trampoline性能比kprobe_multi高出一个数量级。
"TRAMPOLINE技术有何优势?" "多链接跟踪技术如何演进?" "全局_trampoline性能如何?"
客服
商务合作
小程序
服务号
折叠