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 compile the tool 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 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]
-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 |
main |
Main Rust binary crate |
main/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 |