Repository navigation
xpustat 0.5.0
Feature release: the host CPU as a device, per-process and health detail on NVIDIA and AMD, Apple Silicon sensors without sudo, a cluster view, diagnostics, recording, two new NPU vendors, and a native Windows run.
Host CPU, opt-in
xpustat --cpuandquery_all(include_cpu=True)add one[CPU]row: model, ISA, cores and threads,4P+6Elayout on Apple Silicon, sockets, NUMA nodes, frequency, load average, RAM and swap, temperature and power where the OS exposes them, cgroup limits in containers, and the top processes by resident memory. ThecpuJSON key appears only when asked, so existing output is unchanged.
Processes
- Per-process compute utilization (
sm_pct, from NVML samples ornvidia-smi pmon), memory-bandwidth and codec utilization, full command line (--full-cmd), host RSS and CPU. - Container or job attribution on every process from its cgroup:
docker,containerd,podman, Kubernetes pod, SLURM job. Shown with-k, exported as acontainerlabel.
Health and hardware columns
- NVIDIA and AMD: fan (
-F), SM/graphics and memory clocks (-C), encoder/decoder load (-E), and health (-H): P-state or perf level, active throttle reasons, uncorrected ECC.throttledandhealthyon every device, energy counters where available, PCIe link, power limit. - MIG inventory on the
nvidia-smipath; Jetson engines (NVENC, NVDEC, DLA, ...) andnvpmodelmode. --id 0,2to pick devices,--print-completion bash|zsh|fish.
Apple Silicon
- GPU temperature, GPU power and ANE power without sudo, read in-process from the SMC and the IOReport energy counters; the CPU row gets temperature and power too. Free memory is the OS "available" figure.
Several machines, diagnostics, recording
--hosts http://n1:9400 ...reads other exporters' new/jsonendpoint;--ssh n1 n2runs xpustat over ssh. One table with a host column; an unreachable host never hides the others.--doctorexplains every backend: tool path, probe answer, native binding, env vars, device count, errors.--record FILEwrites one JSON frame per line (gzip optional);--replay FILErenders it.
New backends and fixes
- Rebellions (
rbln-stat --json) and FuriosaAI (furiosa-smi), written from the tools' JSON schemas and awaiting a hardware run;RBLN_DEVICESandFURIOSA_DEVICEShonoured. - Plugin backends through the
xpustat.backendsentry point orregister_backend(). - The optional
amdsmiandnvidia-ml-pybindings no longer breakimport xpustatwhen they fail to load against the installed driver. - Windows: the console is switched to UTF-8 so the table renders on cp1252 consoles, and the CPU model is read from the registry.
- Sole author: Salah Eddine Bekhouche; Hichem Telli is acknowledged for testing the Ascend backend.
Tested hardware
| Platform | Device |
|---|---|
| Apple | Apple M5, 10-core GPU, macOS 26 |
| AMD | Radeon AI PRO R9700 (gfx1201), ROCm 10.0 / amd-smi 27.0, Ryzen 9 9950X3D |
| NVIDIA | 7x NVIDIA L4 (cc8.9), nvidia-smi and nvidia-ml-py paths, dual Xeon Silver 4314 |
| CPU only | Intel N200 (Linux) |
| Windows 11 | Ryzen 7 5800X3D, native Python 3.12: suite, CLI, JSON, doctor |
Upgrade
pip install -U xpustat