At a glance
nvidia-smi -l 1orwatch -n 1 nvidia-smirefreshes GPU stats every second.tqdml run -- python train.pyputs the training loop's tqdm bars and logs on a Runpeek link, so you see which step it is on.--query-gpuwith--format=csv,noheader,nounitslogs clean numbers to a file.nvidia-smi dmonandnvidia-smi pmonstream 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.
nvidia-smiSome 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.
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.
nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu \
--format=csv,noheader,nounits -l 5 >> gpu.csvnoheader 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:
-spicks metric groups:ppower and temperature,uutilization,cclocks,mframe buffer and BAR1 memory,eECC and PCIe replay errors,tPCIe throughput.-dsets the interval in seconds, and-cstops after a number of samples.-o Dor-o Tprepends the date or time to each line, and--format csvprints 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.
nvidia-smi dmon -s u -d 5
nvidia-smi dmon -s pucm -c 10 --format csv
nvidia-smi pmon -d 5What 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.
| Tool | How it updates | Best for | Install |
|---|---|---|---|
nvidia-smi -l 1 | Prints a new full report every second | Quick checks over SSH | Ships with the driver |
watch -n 1 nvidia-smi | Redraws the report in place | One screen that stays current | watch from procps |
nvidia-smi --query-gpu=... -l 5 | One CSV line per GPU per interval | Logging a whole run to a file | Ships with the driver |
nvidia-smi dmon and pmon | One line per GPU or process per cycle | Scrolling metrics per device or PID | Ships with the driver |
nvtop | Interactive top-style view | Machines with GPUs from several vendors | apt, dnf or snap |
gpustat | Compact status line per GPU | A quick summary | pip install gpustat |
nvitop | Interactive process and metric view | Managing NVIDIA GPU processes | pip3 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.
pip install tqdm-liveSources
- NVIDIA: nvidia-smi documentation docs.nvidia.com
- NVIDIA: System Management Interface developer.nvidia.com
- nvtop on GitHub github.com
- gpustat on PyPI pypi.org
- nvitop on GitHub github.com
- watch(1) man page man7.org