Your GPUs.
At a glance.
A keyboard-first terminal monitor for GPU infrastructure. See what is happening now, rewind to see what happened before, and trace any GPU back to the process, container and pod using it.
Linux + NVIDIAmacOS + Apple silicon one static binaryno root, no cgo
gputop gpu-node-01 [DEMO: simulated data] CUDA 12.6
GPUs 8 busy 5 active 2 idle 1 power 4012 W health 98
GPU NAME UTIL VRAM TEMP POWER HEALTH STATE
0 NVIDIA H100 80GB HBM 98% 66.3/80 GiB 72°C 654 W 100 busy
1 NVIDIA H100 80GB HBM 96% 66.6/80 GiB 71°C 633 W 100 busy
2 NVIDIA H100 80GB HBM 96% 66.6/80 GiB 70°C 639 W 100 busy
3 NVIDIA H100 80GB HBM 52% 66.4/80 GiB 53°C 376 W 85 active,outlier
4 NVIDIA H100 80GB HBM 97% 66.0/80 GiB 71°C 647 W 100 busy
5 NVIDIA H100 80GB HBM 95% 66.0/80 GiB 71°C 631 W 100 busy
6 NVIDIA H100 80GB HBM 49% 35.4/80 GiB 53°C 361 W 100 active
7 NVIDIA H100 80GB HBM 0% 16.4/80 GiB 34°C 70 W 100 idle
WARNING GPU 3: PCIe link width x8 below maximum x16
Real output from demo mode — no GPU required to try it.
Why gputop
Questions, not dashboards.
Every view exists to answer something you actually ask at 2am.
Which GPU is busy?
OverviewPer-GPU utilization, VRAM, power, temperature, health and state in one dense table.
Which process is eating VRAM?
ProcessesSortable and searchable, resolved through to container, pod and workload.
Why is GPU 4 slow?
GPUs · History · HealthThrottle reasons, PCIe width, Xid events and outlier detection, side by side.
Is this GPU throttling?
Power · ThermalsLive clock-event reasons and the thresholds that triggered them.
Is NVLink healthy?
NVLinkPer-link state, throughput, error counters and topology.
What happened fifteen minutes ago?
HistoryScrub any metric back through time, with events pinned on the timeline.
Which workload owns this GPU?
KubernetesGPU → process → container → pod → workload correlation.
Are we wasting GPUs?
WorkloadsIdle-but-allocated GPUs, stragglers and an efficiency score.
Design rule: no metric without a reason. Unsupported values read
N/A, never 0 — and vendor metrics stay
distinguishable from gputop-derived ones.
Seventeen views
One binary, seventeen lenses.
Tabs appear only when they have something to show, so a laptop with one GPU never renders an empty NVLink page.
Keyboard first
Hands stay home.
Every binding is configurable. A command bar (:) jumps straight to pods, GPUs or the dashboard with tab completion — and the mouse works too, if you want it.
See Configuration to remap any of these.
gpu:0 user:alice ns:ml:pods :gpus :dashHonest status
What is done, and what is not.
gputop is pre-1.0. Rather than flatten that into marketing, here is the real state of each area — the same table the README carries.
| Area | Status |
|---|---|
| NVIDIA via NVML — utilization, memory, power, clocks, throttle reasons, PCIe, NVLink, MIG, ECC, Xid events, processes | ✅ shipped |
| Interactive TUI — 18 tabs, sorting, search, filters, detail views, resizing from 80×24 | ✅ shipped |
| History — configurable retention, on-disk persistence, charts, time scrubbing | ✅ shipped |
| Custom themes, key bindings and mouse navigation | ✅ shipped |
| Host CPU, RAM, disks, network and InfiniBand counters | ✅ shipped |
--once and --json output with a versioned schema | ✅ shipped |
| Apple silicon via IOKit/IOReport/SMC — no root, no cgo | 🧪 experimental |
| Health score (0–100) with itemized reasons | 🧪 experimental |
| Derived metrics — idle allocation, stragglers, efficiency | 🧪 experimental |
| Process → container → pod → workload correlation | 🧪 experimental |
| Service mode — HTTP API, Prometheus, TLS, token auth, mTLS | 🧪 experimental |
Remote TUI (--remote) and remote node summaries | 🧪 experimental |
| NVIDIA DCGM — per-MIG utilization, profiling metrics | 🗺 planned |
| AMD and Intel providers | 🗺 planned |
| Kubelet pod-resources API | 🗺 planned |
Install
Running in about ten seconds.
No agent, no daemon, no database. One binary you can delete afterwards.
$ curl -fLo gputop https://github.com/riteshsonawane1372/gputop/releases/latest/download/gputop-linux-amd64
$ chmod +x gputop && sudo install gputop /usr/local/bin/
$ gputop --demo # try it with no GPU at all
$ go install github.com/riteshsonawane1372/gputop/cmd/gputop@latest
$ git clone https://github.com/riteshsonawane1372/gputop
$ cd gputop && make build
$ ./bin/gputop --demo
Also available: gputop --once --json for one machine-readable
snapshot, gputop --service for the HTTP API and Prometheus
endpoint, and gputop --remote gpu-node-01 to attach to a remote
agent.
Documentation
All ten guides.
Everything from first run to running it across a fleet.
Open source · Apache-2.0