Netto is an eBPF-based network monitoring tool for Linux that measures the CPU cost of the Linux network stack.
- Measurement of the on-CPU time of the main networking entry points in kernel
- Breakdown of the
NET_RX_SOFTIRQ
entry point into the basic network functions by stack trace-based profiling of the kernel - Low overhead
- Real time operation
- Minimum Linux version supported: 5.11 (
BPF_MAP_TYPE_TASK_STORAGE
)
To build Netto you'll need:
- Latest Rust toolchain (stable or nightly)
- wasm_pack (for the web frontend)
Compile and run with:
cargo xtask run [--release]
$ ./netto -h
eBPF-based network diagnosis tool for Linux
Usage: netto [OPTIONS]
Options:
-f, --frequency <FREQUENCY>
Perf-event's sampling frequency in Hz for the NET_RX_SOFTIRQ cost breakdown [default: 1000]
-a, --address <ADDRESS>
Bind address for the web frontend [default: 0.0.0.0]
-p, --port <PORT>
Bind port for the web frontend [default: 8080]
--user-frequency <USER_FREQUENCY>
User-space controller update period in ms [default: 500]
-h, --help
Print help
-V, --version
Print version
Netto exposes the real time results as a Wasm-powered web page accessible on http://localhost:8080
Folder | Contents |
---|---|
images |
Images used on this README |
netto |
Main Rust binary crate |
netto/src/bpf |
BPF-C programs |
metrics-common |
Bridge Rust library crate for main and web-frontend |
web-frontend |
Rust WebAssembly frontend |
www |
Static files for the web frontend |
xtask |
Utility binary crate for managing coordination between the other crates |