Optimizing eBPF loading with reachability analysis
- Track: eBPF
- Room: H.1308 (Rolin)
- Day: Saturday
- Start: 11:30
- End: 12:00
- Video only: h1308
- Chat: Join the conversation!
Any eBPF project that has started in the last couple of years is most likely written to take advantage of CO-RE, compiling your eBPF programs ahead of time, and being able to run that program on a wide range of kernels and machines.
Before CO-RE it was common to ship the whole toolchain and compile on target. This is what Cillium currently still does. Compiling on target empowered a core value of Cilium: "you do not pay for what you do not use". But it turns out that with CO-RE sometimes you DO pay for what you do not use, which makes it painful to switch over.
This payment mostly comes in the from of unused maps which still have to be created and loading tail calls which will never be called.
We created what we call "reachability analysis" which allows us to predict in userspace which parts of an eBPF program will be unused when loaded with a given set of global constants. This allows us to avoid creating maps that will never be used or load tail calls that will never be called, opening the way for Cilium migration to CO-RE.
I would like to show how this works.
Speakers
| Dylan Reimerink |