RamSleuth — RAM telemetry + memory benchmark for Linux

It’s been a while since I first posted about RamSleuth, and honestly it’s changed a lot since then (2.2.1 → 2.4.12). A few things are worth calling out, because the day-to-day experience is much smoother now and it covers a lot more hardware than the original.

The big one: it’s a real one-click setup now

Previously, getting the privileged daemon running plus the out-of-tree kernel driver was a handful of manual steps. That’s gone. Now:

  • Install it, open the app, and hit “Set up RamSleuth” once.
  • That single click starts the daemon, grants your account access to it, and builds + loads the kernel driver for you automatically via DKMS — ryzen_smu on AMD, the IMC module on Intel.
  • Secure Boot is handled: if it’s on, the driver gets signed with a persistent key and you get a clear one-time “enroll this key / reboot” step (or just turn Secure Boot off). After that it’s done for good.
  • It runs entirely non-interactively (no terminal to babysit), it’s self-healing (re-clicking always recovers a half-done state), and if it genuinely can’t do something it will tell you why and points you at a log.

Easier to get

It’s in the AUR as ramsleuth-bin (prebuilt binaries — install and go) and ramsleuth (build from source). There are also two optional standalone driver packages, ryzen-smu-dkms and ramsleuth-intel-dkms, if you only want the kernel driver without the app.

More hardware, deeper data

  • Intel now spans Skylake all the way through Arrow Lake, including DDR5 (the extra subchannels and the memory-controller-latency blocks, not just the basic timing set).
  • Channel mode (dual symmetric / flex, single, triple) and ECC status are reported on both AMD and Intel.
  • The SPD decode was re-baselined to the actual JESD specs (DDR4 / DDR5) — proper manufacturer (JEP106), density, rank, base speed, and XMP 2.0 / 3.0 / EXPO profiles, all unprivileged.

Everything from the original is still there — the bandwidth/latency grid (AVX2 / AVX-512, one worker pinned per physical core), the burn-in soak, and the unprivileged SPD read. This is all additive on top.

You always know what’s going on

  • Every “N/A” is now self-explanatory — “this CPU doesn’t expose the memory-controller registers,” “this firmware version isn’t in the supported set,” “driver not loaded” — so you can tell “working, just no data on this part” from a real problem at a glance. (This bit me on a few oddball SoCs, so I made the app say so plainly.)
  • There’s a one-click diagnostic “probe report” you can generate and attach to a bug report, so nobody has to go hunting through logs.

Under the hood it’s the same shape as before: one small privileged daemon holding only CAP_SYS_RAWIO, with every client (GUI / TUI / CLI) running unprivileged.

It’s a much more complete tool than the version I originally posted, and the setup pain is basically gone. As always, feedback and bug reports are very welcome — and if your machine reports something unexpected (or a clean N/A you don’t understand), the probe report makes it easy to show me.

As always, feedback is more than welcome. Thanks!

6 Likes

I’ve already been informed of an Intel related bug that causes the timings not to poll. I’m actively looking into it. If there is any information that can provided on Intel systems (I’m limited with an old skylake system myself for testing) I would grateful for any and all feedback.

4 Likes

Bump — a lot has landed since I first shared this, and it’s at 2.4.12 now.

The change I’m most happy about: setup is finally a real one-click. Install from the AUR (yay -S ramsleuth-bin), open the app, and hit “Set up RamSleuth” — it takes care of the daemon, your access to it, and building/loading the kernel driver for you, Secure Boot included (with a clear one-time step if that’s on). The terminal fumbling is gone, and if it ever can’t do something it tells you exactly why.

A few other things that have come along since the original post:

  • Intel support now spans Skylake → Arrow Lake, including DDR5 — the extra subchannels and the memory-controller latency blocks, not just the basic timing set.
  • Channel mode (dual symmetric / flex, single, triple) and ECC status on both AMD and Intel.
  • SPD decoding re-baselined to the actual JESD specs — real manufacturer (JEP106), density, rank, base speed, and XMP 2.0 / 3.0 / EXPO profiles.
  • Self-explanatory readouts: every “N/A” now says why (“this part doesn’t expose those registers”, “that firmware version isn’t in the supported set”, “driver not loaded”), so you can tell “just no data on this part” from a real problem at a glance.
  • A one-click diagnostic “probe report” you can attach to a bug report, so nobody has to dig through logs.

The core design is the same as before: one small privileged daemon holding only CAP_SYS_RAWIO, with every client (GUI / TUI / CLI) running unprivileged.

Full details are in the OP above. As always, feedback and bug reports are very welcome — and if a machine reports something you don’t expect, the probe report makes it easy to show me.

2 Likes