// the find
fasterthanlime/mevi
A memory visualizer in Rust (ptrace + userfaultfd)
mevi is a Linux memory visualizer that uses ptrace + userfaultfd to track page faults in real time and render them in a browser-based frontend compiled to WASM. It was built as a companion to a YouTube video explaining memory internals — a working demo more than a production tool. The target audience is systems programmers who want to watch allocation patterns unfold visually.
The combination of ptrace and userfaultfd to catch both syscall-level and page-fault-level events without eBPF is genuinely interesting — it shows how far the older APIs can be pushed. The frontend is also Rust (Yew + Trunk to WASM), so the whole stack is one language. The README is unusually honest: it names known failure modes, explains the RSS discrepancy, and explicitly says this is a research project with no maintenance promise. The workspace structure is clean — common types, driver, and frontend are split into separate crates with no circular dependencies.
Multi-threaded programs are broken by design: userfaultfd events lack thread IDs and ptrace sees events out of order, so the visualization desyncs. This rules out most real-world targets. Requiring `vm.unprivileged_userfaultfd=1` is a sysctl change that weakens kernel security, and the README's advice to 'only do this in a VM or if you're reckless' is honest but also a blocker for anyone on a shared or production machine. The project only tracks private anonymous mappings, so mapped files and shared memory — a significant portion of what most programs actually do — are invisible. It was explicitly declared abandoned by the author in the README; last meaningful commit was 2024, and it was never published to crates.io.