Understanding The Linux Kernel's BPF In-Kernel Virtual Machine

Written by Michael Larabel in Linux Kernel on 3 March 2015 at 09:31 AM EST. Add A Comment
LINUX KERNEL
BPF continues marching forward as a universal, in-kernel virtual machine for the Linux kernel. The Berkeley Packet Filter was originally designed for network packet filtering but has since been extended as eBPF to support other non-network subsystems via the bpf syscall. Here's some more details on this in-kernel virtual machine.

Alexei Starovoitov presented at last month's Linux Foundation Collaboration Summit in Santa Rosa about BPF as an in-kernel virtual machine. The slides have been published for those wishing to learn more about its state and capabilities.

The JIT support for BPF has been upstreamed for x86_64 and ARM64 within the Linux kernel while the s390 and PPC Just-In-Time support is still a work-in-progress. On the compiler side, the LLVM back-end is upstream while the GCC back-end remains a work-in-progress.


Besides networking, BPF can be useful for tracing, analytics / monitoring / debugging, in-kernel optimizations, hardware modeling, and "crazy stuff."

If you're interested in more technical information on BPF as an in-kernel virtual machine, see the PDF slides by
Alexei Starovoitov.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week