metrics: NVIDIA GPUs via nvidia-smi — device busy, VRAM, clocks, temp, power and the pmon process table

The proprietary driver's DRM card says DRIVER=nvidia, which the driver list did not
know, so the card was never enumerated; and it exposes no sysfs busy counter or
fdinfo engine totals. Read it with nvidia-smi instead (--query-gpu per sample,
pmon -c 1 -s um for clients), by PCI address. Parsers unit-tested, including an
older pmon column layout and [N/A] fields.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Mitchell-Johnson
2026-10-23 00:29:46 -07:00
co-authored by Claude Fable 5.1
parent 450a9d3327
commit 8fc71496f0
3 changed files with 188 additions and 2 deletions
+7 -1
View File
@@ -314,7 +314,13 @@ something long in one, switch away and back, refresh — it's all still there.
exposes without root; `intel_gpu_top` shows the same number) or amdgpu's own percent;
per-process and per-engine shares are DRM fdinfo deltas, the way nvtop reads them. Other
users' fdinfo needs root, so a daemon running as `core` keeps **one** root child
(`hamlab drm-clients`, over a pipe) rather than a sudo a second. The Arc A380 on i915 6.12
(`hamlab drm-clients`, over a pipe) rather than a sudo a second. **NVIDIA's proprietary
driver (2026-10-23)** has neither a sysfs busy counter nor fdinfo engine totals, and its DRM
card reports `DRIVER=nvidia` (not `nvidia-drm`), so until then such a card was not even
listed; now it is read through `nvidia-smi` — `--query-gpu` for busy/encoder/decoder, VRAM,
SM clock, temperature and power, and `pmon -c 1 -s um` for the per-process table (sm/enc/dec
shares, framebuffer MiB) — two ~20–75 ms calls per sample, selected by PCI address, no root.
First machine: `link`, the Surface Studio's GTX 965M. The Arc A380 on i915 6.12
exposes power, energy and fan but **no temperature**, so its box shows none; an integrated
GPU shows the CPU package temperature marked `*`. Asahi (the Mac mini) has neither a busy
counter nor fdinfo in 6.19, so it lists the device and says so. No NVIDIA path: nothing here