whyslow
- 1 Devlogs
- 18 Total hours
whyslow traces sched_switch, futex, and block I/O events via eBPF to show you the actual causal chain behind a slow Linux process, not just isolated symptoms. Built at a 48hr hackathon in my house!
whyslow traces sched_switch, futex, and block I/O events via eBPF to show you the actual causal chain behind a slow Linux process, not just isolated symptoms. Built at a 48hr hackathon in my house!
Every Linux dev has hit “my program is slow” and reached for strace,
perf, or py-spy — but each tool sees one layer. None of them tell you
why across layers. You end up manually cross-referencing three terminal
windows and timestamps by hand.
whyslow — a CLI that watches sched_switch, futex, and block I/O events
via eBPF and stitches them into a single causal chain:
$ sudo whyslow run -- ./my-slow-program
14:32:07.001 — tid 4821 blocked 412ms on futex 0x7f2a3c001000
← woken by tid 4809
← tid 4809 blocked 380ms on block I/O (dev nvme0n1p2, sector 88213)
No manual correlation. It finds the root cause and walks you back to it.
aya for pure-Rust eBPF (no libbpf/C toolchain needed)whyslow-cli, whyslow-ebpf, whyslow-common
CAP_BPF — no way around that, eBPF is privilegedcurl -sSf .../install.sh | shDISTRIBUTION.md
cargo install works via --git for nowcargo install whyslow just works