amdtop is an independent terminal system monitor for AMD systems. It is
inspired by the modern TUI visual style of
nvitop and
btop, and leverages the published
libamdgpu_top crate for AMD GPU
telemetry. It monitors CPUs, AMD GPUs (discrete and APUs), and Strix Halo XDNA
NPUs.
nvitop is great but NVIDIA-only. On AMD — especially a Strix Halo box with an
APU and an XDNA NPU, or a workstation with multiple AMD cards there was no
single TUI with that look-and-feel. amdtop fills that gap by combining its own
CPU/system monitoring with libamdgpu_top telemetry in a modern, themeable
layout.
- Collapsible CPU / GPU / NPU / Processes sections (state persists across runs)
- CPU section, btop-style: per-core grid with braille history mini-graphs, package temp/power, load average, plus system MEM/SWP
- Multi-GPU: one band per device, labeled by index + PCI bus-id
- APU-aware memory: shows the real GTT (unified system RAM) pool on APUs,
VRAM on discrete cards — both labeled
MEM - Adaptive memory-bandwidth telemetry: shows memory-controller utilization where available alongside SoC DRAM read/write throughput on supported APUs
- XDNA NPU: presence detection on
/sys/class/accel; utilization + per-context table when theamdxdnadriver exposes DRM fdinfo telemetry - Process table: per-process resident system memory (
MEM), VRAM/GTT, and engine usage - 41 native bundled themes: available without btop or external data files;
cycle live with
t/T. Defaults totokyo-night. - nvitop-style fixed-track gauges with aligned numeric columns; braille area graphs with theme-gradient fills
Requires Rust 1.88 or newer and libdrm development headers, plus an
AMD GPU/APU running the amdgpu kernel driver.
Install from crates.io:
cargo install amdtopOn Arch Linux and derivatives, install the
amdtop AUR package
(pkg):
yay -S amdtopOr install the latest development version from Git:
cargo install --git https://github.com/lhl/amdtopThis installs the amdtop binary. The published libamdgpu_top crate is
pulled from crates.io and compiled automatically. The only runtime dependency
is libdrm_amdgpu.so.1, which is present on systems with AMD drivers.
Distro packages for the libdrm build headers:
| Distro | Package |
|---|---|
| Arch | libdrm |
| Debian/Ubuntu | libdrm-dev |
| Fedora | libdrm-devel |
amdtop detects AMD XDNA/Ryzen AI NPUs through the Linux accel class
(/sys/class/accel and /dev/accel/accel*). Device detection is enough to show
identity and firmware information, but not live utilization.
Utilization and per-context monitoring require a cumulative drm-engine-*
busy-time counter from the loaded amdxdna kernel module. A drm-driver line
or an installed DKMS package alone is not sufficient. XDNA driver trees also
currently emit more than one engine-key name, and released telemetry parsers do
not recognize all of them.
Temporary Arch/AUR caveat (checked 2026-07-22): the examined
amdxdna-dkmspackage's kernel allowlist permits only Linux 6.17, 6.18, and 6.19. On other kernel versions, installing the package may leave its source in/usr/srcwithout building or loading a DKMS module. Checkdkms statusand the loaded module rather than treating package installation as success.
See the XDNA NPU telemetry and workload guide for direct fdinfo checks, the current driver/parser compatibility matrix, matched XRT/driver build instructions, Arch package caveats, memlock setup, validation workloads, and troubleshooting.
amdtopamdtop lists all physical GPUs in PCI BDF order and shows each BDF beside its
index. This normally matches the physical ordering from rocm-smi and
rocminfo. HIP_VISIBLE_DEVICES and ROCR_VISIBLE_DEVICES can hide or remap
GPU ordinals inside a particular compute process; they do not change amdtop's
system-wide numbering. Use the displayed PCI BDF as the authoritative mapping.
| Key | Action |
|---|---|
q / Esc / Ctrl+C |
quit |
Tab / Shift+Tab |
move between sections |
Space / Enter |
collapse / expand the focused section |
t / T |
next / previous theme |
b / B |
next / previous gauge block style |
Section collapse state, the selected theme, and the gauge block style all persist across runs.
amdtop stores its UI state in:
$XDG_CONFIG_HOME/amdtop/state.json
If XDG_CONFIG_HOME is unset, it uses ~/.config/amdtop/state.json.
A GPU that is already runtime-suspended when amdtop starts remains listed as
sleeping; amdtop does not wake it merely to collect telemetry. When another
workload wakes the GPU, amdtop initializes its telemetry in place without
changing the GPU's index.
For GPUs that are awake when monitoring begins, amdtop keeps discrete-GPU
device handles open. This avoids stale utilization and sensor readings after a
low-power transition or system resume. To allow runtime D3Hot power management
while amdtop is running, set AGT_NO_DROP=0; doing so may make telemetry
unavailable until amdtop is restarted.
Cycle the bar fill glyph with b/B:
3/4 (▊, default), smooth (precise fractional █), dotmatrix (⣿ LED cell),
lines (━/─), squares (■/□), rects (▮/▯), pills (▰/▱).
amdtop embeds 41 themes in its binary, so theme selection does not depend on btop being installed. Native custom themes use amdtop's versioned TOML format and can independently style CPU, GPU, memory, NPU, processes, borders, clocks, power, fans, bandwidth, and positioned gradient stops.
User themes are loaded from $XDG_CONFIG_HOME/amdtop/themes/ and
~/.config/amdtop/themes/; system themes may be installed under
/usr/local/share/amdtop/themes/ or /usr/share/amdtop/themes/. A native file
with the same name as a bundled theme overrides it. See
the native theme format for the complete schema and examples.
- AMD GPU telemetry:
libamdgpu_topby Umio-Yasuno - Inspiration: nvitop, btop
- Themes from btop and original theme authors; see THIRD_PARTY.md
Apache-2.0