Repository navigation
xpustat 0.6.0
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 --uiserveshttp://127.0.0.1:9400/: one self-contained HTML page, nothing loaded from the network, that shows every-acolumn (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;
/?expandstarts with every row open. /json,/metricsand the new/clusteranswer on the same port, so one process serves the browser, scripts and Prometheus.--portand--hostset 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.txtput 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
-itimer, 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-localis given.--ssh-commandand--timeoutwork as for the terminal cluster view. - From Python:
xpustat.ui.serve_ui()andxpustat.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 checkand a strict docs build, on every push and pull request. - Prometheus: a textual P-state such as
P2from 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