Frequently Asked Question

What is eBPF and why is everyone talking about it?

eBPF (extended Berkeley Packet Filter) is an in-kernel virtual machine that lets you load and run small, sandboxed programs at strategic hook points; tracepoints, kprobes, uprobes, network sockets, scheduler events, syscall entry and exit, and gather data into kernel maps that user space can read. A verifier in the kernel statically checks each program for safety (terminating loops, no out-of-bounds memory access, no privileged instructions) before it runs, so unlike kernel modules, an eBPF program cannot crash the kernel.

The result is observability and instrumentation that used to require recompiling the kernel, but with near-zero overhead and no reboots. Tools built on eBPF, bpftrace, the bcc toolkit (opensnoop, execsnoop, biolatency, tcplife, etc.), bpftop, Cilium's networking, the bpf_program__attach()-based system tracers, answer questions previous generations of Unix admins could only dream about. It is the most important Linux observability development of the last decade and worth learning even casually.

Video

Further reading and video