v0.2.x · pre-1.0 — experimental areas marked below

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 — Overview LIVE
$ gputop --demo --demo-gpus 8
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
↑ select · ⏎ detail · h history · p pause · ? help · q quit

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.

1OverviewFleet, live charts, top processes, alerts
2GPUsPer-GPU detail and inventory
3ProcessesSortable, searchable, correlated
4MemoryVRAM, reserved, bandwidth, ECC
5PowerDraw, energy, limits, capping
6ThermalsTemperatures and throttle reasons
7NVLinkLink state, throughput, errors
8PCIeGeneration, width, throughput
9MIGPartition layout and use
·NodesRemote node summaries
·Kubernetesk9s-style pods, describe, logs
·WorkloadsIdle allocation and stragglers
·InferenceTTFT, ITL, tokens/s, KV cache
·NetworkHost NICs and InfiniBand
·DashboardMetrics dashboard
·HistoryTime machine and scrubbing
·EventsTimeline and active alerts
·Health0–100 score with reasons

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.

1…9 TabJump to a tab, or cycle
/Search the current view
fFilter — gpu:0 user:alice ns:ml
hHistory — the time machine
, .Scrub back and forward in time
s SNext sort column / reverse
:Command bar — :pods :gpus :dash
d lDescribe pod / pod logs
pPause display — collection continues
?Help

Honest 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.

AreaStatus
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.

linux · amd64
$ 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

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

Bring clarity to your compute.

Star on GitHub