How Neutrino differs from ...
Here we compare Neutrino with other similar/related previous works, helpful for correct positioning Neutrino! And it's our honor to stand on the shoulders of following giants!
eBPF
Honestly, neutrino
learns lots of designs from eBPF and its dev tools like bcc, bpftrace, etc.
The key difference is the implementation, i.e., platforms and mechanisms:
- eBPF runs in a "sequential" sandbox residing in the Linux kernel, which provides helpers, maps, tracepipes,reading stacks/registers, etc. The way of entering is instrumenting
brk
with eBPF program as callback. - Neutrino runs in "parallel" GPUs without Linux kernel and its support. Instead, neutrino statically analyze the parallel assembly and instrument the probes like a instruction-level background process. All helpers are implemented independently from eBPF.
Moreover, the parallelism of GPU leads to many unique designs/features in Neutrino, see Probe Execution Model.