Skip to content

xpustat 0.6.0

Choose a tag to compare

@Bekhouche Bekhouche released this 27 Oct 13:55
· 5 commits to main since this release

Feature release: a browser page for one machine or a whole cluster, served by the exporter with no new dependency, and continuous integration on three platforms.

Web UI

  • xpustat --ui serves http://127.0.0.1:9400/: one self-contained HTML page, nothing loaded from the network, that shows every -a column (memory bar, utilization, temperature, power, fan, clocks, P-state, health badges), MIG instances under their GPU, the CPU row with --cpu, and two sparklines per device for the time the tab is open.
  • Click a device for its detail: UUID, free memory, hotspot and memory temperatures, codec load, ECC counts, throttle reasons, energy, PCIe link, ANE power on Apple, and the processes with PID, user, device memory, SM share, host RSS, CPU share, container or SLURM job and full command line.
  • Host, vendor and text filters, a compact mode so forty devices fit on one screen, expand all, pause; /?expand starts with every row open.
  • /json, /metrics and the new /cluster answer on the same port, so one process serves the browser, scripts and Prometheus. --port and --host set the bind address; the UI binds to loopback by default because the page shows command lines.

Cluster page

  • xpustat --ui --ssh node1 node2 ..., --hosts http://node:9400 ... or --hosts-file lab.txt put every host on one page with a summary bar: hosts up and down, devices and how many are free, device memory used, processes, the hottest device, throttled and faulted devices.
  • The server polls the hosts itself on the -i timer, in parallel, and caches the answer: many open tabs cost one ssh fan-out. A host that stops answering keeps its last snapshot, marked stale with the error; a host that never answered is shown as unreachable; the others are unaffected.
  • This machine is the first block unless --no-local is given. --ssh-command and --timeout work as for the terminal cluster view.
  • From Python: xpustat.ui.serve_ui() and xpustat.ui.ClusterCollector.

Continuous integration and fixes

  • GitHub Actions runs the tests on Ubuntu, macOS and Windows with Python 3.9 and 3.13, a CLI smoke run on a machine without accelerators, the sdist and wheel build, twine check and a strict docs build, on every push and pull request.
  • Prometheus: a textual P-state such as P2 from a plugin backend is exported as 2, and states that are not numbers are skipped instead of raising.

Tested hardware

Platform Device
Apple Apple M5, 10-core GPU, macOS 26
NVIDIA 7x NVIDIA L4 (cc8.9), dual Xeon Silver 4314, Linux
AMD Radeon AI PRO R9700 (gfx1201), ROCm 10.0, Ryzen 9 9950X3D
CPU only Intel N200 (Linux)
Windows 11 Ryzen 7 5800X3D, native Python 3.12 and WSL2

All five, plus one unreachable host, were shown on one cluster page polled over ssh; the suite passes on macOS, Linux and native Windows.

Upgrade

pip install -U xpustat