Runpeek NVIDIA GPU monitoring

nvidia-smi: monitor GPU usage, memory and processes live

Run nvidia-smi to see each NVIDIA GPU's utilization, memory, temperature and processes, while Runpeek streams the tqdm bar of a training run you start with tqdml run to your phone. nvidia-smi -l 1 repeats the report every second (a bare -l defaults to 5 seconds), watch -n 1 nvidia-smi refreshes it in place, and --query-gpu with --format=csv logs plain numbers to a file. A 100% GPU-Util only means a kernel was running.

5 min readLogs and monitoring

At a glance

  • nvidia-smi -l 1 or watch -n 1 nvidia-smi refreshes GPU stats every second.
  • tqdml run -- python train.py puts the training loop's tqdm bars and logs on a Runpeek link, so you see which step it is on.
  • --query-gpu with --format=csv,noheader,nounits logs clean numbers to a file.
  • nvidia-smi dmon and nvidia-smi pmon stream one line per GPU or process, for up to 16 GPUs.
  • 100% Volatile GPU-Util means a kernel ran during the sample period, not that every core was busy.

Read the nvidia-smi summary

nvidia-smi ships with the NVIDIA driver. Run with no options, it prints a snapshot of every NVIDIA GPU on the machine: the top table shows each device with its temperature, power, memory use and Volatile GPU-Util, and the bottom table lists the processes using the GPUs.

Bash
nvidia-smi

Some devices and environments don't support every metric. When a value isn't supported on your hardware or container setup, the table shows N/A in its place.

Refresh it every few seconds

A single snapshot won't tell you whether training stalls between batches, so poll the card. -l (or --loop=SEC) repeats the report at an interval in seconds until you press Ctrl+C; a bare -l uses 5 seconds. For sub-second checks, -lms takes milliseconds.

Bash
nvidia-smi -l 1
nvidia-smi -lms 500
watch -n 1 nvidia-smi

-l and -lms print a whole new report on each tick, which fills your scrollback fast. To keep the table pinned in one spot, wrap the command in watch, which refreshes every 2 seconds by default (see the Linux watch command guide).

A busy GPU doesn't tell you which epoch you're on, how many steps are left, or whether the loop has hung while a stray kernel keeps utilization at 100%. Your training loop's progress bar does, and with the run under Runpeek, a stalled alert can ping you when the bar and logs stop moving.

Log GPU metrics to a CSV file

The table is hard to parse from a script, so --query-gpu= pulls specific fields by name. Pass a comma-separated list of properties with --format=csv and each interval prints one line per GPU, ready for pandas or a spreadsheet.

Bash
nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu \
  --format=csv,noheader,nounits -l 5 >> gpu.csv

noheader drops the column title row and nounits drops the unit suffixes, leaving plain numbers and commas. Run nvidia-smi --help-query-gpu to see every property your driver supports.

Stream compact metrics with dmon and pmon

nvidia-smi dmon prints one compact line per GPU per cycle, for up to 16 devices, without the borders of the summary table:

  • -s picks metric groups: p power and temperature, u utilization, c clocks, m frame buffer and BAR1 memory, e ECC and PCIe replay errors, t PCIe throughput.
  • -d sets the interval in seconds, and -c stops after a number of samples.
  • -o D or -o T prepends the date or time to each line, and --format csv prints CSV.

When several jobs share a machine, nvidia-smi pmon shows which process does the work, in the same one-line layout. Its -d interval must be between 1 and 10 seconds.

Bash
nvidia-smi dmon -s u -d 5
nvidia-smi dmon -s pucm -c 10 --format csv
nvidia-smi pmon -d 5

What Volatile GPU-Util actually measures

NVIDIA defines GPU utilization as the percent of time over the past sample period during which one or more kernels was executing on the GPU. Depending on the product, the sample period is between 1 second and 1/6 second.

Because it only checks whether some kernel is running, it says nothing about how many cores are busy: a tiny kernel running back to back reports 100%. If the number stays low or bounces during training, the GPU sits idle for part of each period, often waiting on CPU data loading.

For a richer live view, three open-source tools build on the same data. nvtop 3.3.2 (February 2026) also covers AMD, Intel, Apple and other GPUs, gpustat 1.1.1 (August 2023) prints a compact status, and nvitop 1.7.2 (October 2026) is an interactive NVIDIA process viewer.

ToolHow it updatesBest forInstall
nvidia-smi -l 1Prints a new full report every secondQuick checks over SSHShips with the driver
watch -n 1 nvidia-smiRedraws the report in placeOne screen that stays currentwatch from procps
nvidia-smi --query-gpu=... -l 5One CSV line per GPU per intervalLogging a whole run to a fileShips with the driver
nvidia-smi dmon and pmonOne line per GPU or process per cycleScrolling metrics per device or PIDShips with the driver
nvtopInteractive top-style viewMachines with GPUs from several vendorsapt, dnf or snap
gpustatCompact status line per GPUA quick summarypip install gpustat
nvitopInteractive process and metric viewManaging NVIDIA GPU processespip3 install --upgrade nvitop or uvx nvitop

FAQ

How do I run nvidia-smi continuously?

Use nvidia-smi -l 1 to print a new report every second until you press Ctrl+C; a bare -l defaults to 5 seconds and -lms takes milliseconds. To update the table in place instead of scrolling, run watch -n 1 nvidia-smi.

Why does GPU-Util show 100% when training is slow?

Volatile GPU-Util is the share of the last sample period during which at least one kernel was executing. It doesn't measure how many cores are busy, so a small kernel that runs continuously still shows 100%.

How do I log GPU usage to a file?

Combine --query-gpu with --format=csv,noheader,nounits and -l, then redirect the output to a file. You get one row of plain numbers per GPU per interval; nvidia-smi --help-query-gpu lists the fields you can query.

What does N/A mean in nvidia-smi output?

It means your GPU model or environment doesn't support reporting that value. It is normal to see N/A in fields that don't apply to a given card or container setup.

Is there a top-style GPU monitor?

Yes. nvtop and nvitop are interactive, top-style terminal monitors, and gpustat prints a compact status line. Install nvtop with apt, dnf or snap, and nvitop or gpustat with pip.

Does Runpeek show GPU usage?

No. Runpeek shows a run's tqdm bars, output, status and exit code, not GPU metrics. Keep nvidia-smi or nvtop in a terminal for utilization and memory, and use the Runpeek link to see which step the training loop is on, from any device.

Check on long runs from your phone

Change one import and every tqdm bar prints a link you can open on any device. Get a Discord or Slack message when the run finishes, fails or stalls.

Get a live linkpip install tqdm-live

Sources