Contents
Chapter 3

Watching the Fleet

Telemetry, error codes and finding the one broken thing

At scale, something is always failing. This chapter is about seeing it: what nvidia-smi and DCGM can tell you, how the driver reports faults through Xid codes, what memory errors mean, and how a single throttled GPU can quietly slow a thousand others.

3.1nvidia-smi

nvidia-smi talks to the driver through NVML. The default table shows each GPU's temperature, power draw versus cap, memory use, utilization and the processes using it.

The views that answer real questions

nvidia-smi                                   # overview + processes
nvidia-smi -q -d PERFORMANCE                 # why are clocks low? (event reasons)
nvidia-smi -q -d TEMPERATURE,POWER,ECC       # thermals, power limits, memory errors
nvidia-smi --query-gpu=index,temperature.gpu,clocks.sm,power.draw --format=csv
nvidia-smi topo -m                           # NVLink/PCIe/NIC topology matrix
nvidia-smi nvlink -s                         # per-link NVLink status
sudo nvidia-smi -pl 500                      # set a power limit

Caveat: "GPU-Util" means a kernel was running during the sample window. It does not mean the GPU was busy. A GPU waiting at a barrier for a straggler still spins. For real saturation metrics use DCGM profiling fields such as SM activity and tensor pipe activity.

Checkpoint+50 XP30 XP if you need a retry
This GPU draws 437 W while its neighbors draw ~650 W at the same job. Which command shows *why*?
| N/A   85C    P0             437W / 700W |  70471MiB / 81560MiB |   98%      Default |
Which nvidia-smi flag sets a GPU power limit?

3.2Power & thermals

Every GPU has a power limit (TDP; 700 W for H100 SXM) and thermal thresholds. When it would exceed either, firmware lowers clocks:

  • SW Power Cap: drawing the configured limit; clocks drop slightly. Often intentional. See Power capping.
  • HW Slowdown / HW Thermal Slowdown: an emergency brake, typically from overheating (failed fan, blocked airflow, hot inlet air). Clocks can drop by half.

In synchronous training, one throttled GPU turns into a cluster-wide slowdown. Every collective waits for it. That's a straggler.

Where to look

  • nvidia-smi -q -d PERFORMANCE shows "Clocks Event Reasons" (formerly throttle reasons).
  • nvidia-smi -q -d TEMPERATURE shows current, slowdown and shutdown temperatures.
  • DCGM fields such as DCGM_FI_DEV_GPU_TEMP, DCGM_FI_DEV_POWER_USAGE and the clock-throttle bitmask feed alerting.
LIVE Power cap trade-off (H100, fully loaded)
throughputenergy / token
40%60%80%100%300 W400 W500 W600 W700 Wpower limit% of uncappedthroughputenergy / token91%
Throughput
91%
Power
79%
Energy per token
86%

Only the compute-bound share of each step slows with clocks; communication and data loading don't.

Checkpoint+50 XP30 XP if you need a retry
What's the most likely cause?
    Clocks Event Reasons
        SW Power Cap                      : Not Active
        HW Slowdown                       : Active
            HW Thermal Slowdown           : Active
In synchronous training, one GPU drops to 55% clock. Whole-job throughput becomes roughly…

3.3Xid errors

An Xid is the driver's way of saying "this GPU had a problem". It appears in the kernel log (dmesg, journalctl -k) as NVRM: Xid (PCI:0000:xx:00.0): <code>, .... The messages are emitted by the kernel driver, which you can read in NVIDIA's open-gpu-kernel-modules.

Codes every GPU operator should recognize

XidMeaningTypical action
13, 31, 43Application errors (bad memory access, illegal instruction)Usually the user's code
48Uncorrectable (double-bit) ECC errorReset GPU, check row remapping, watch for repeats
63, 64Row-remapping eventsReset when idle; RMA if remapping fails
74NVLink errorCheck links, reseat, run nccl-tests
79GPU has fallen off the busDrain node, reboot, likely hardware ticket
94, 95Contained / uncontained ECC errorContained: affected app only. Uncontained: reset

Ops pattern: alert on Xid via DCGM, drain the node in Slurm with the Xid in the reason, requeue affected jobs from their checkpoints, then diagnose offline.

Checkpoint+50 XP30 XP if you need a retry
You find this in dmesg on node-2. What's the right first response?
NVRM: Xid (PCI:0000:9a:00.0): 79, pid='<unknown>', name=<unknown>, GPU has fallen off the bus.
Xids 13, 31 and 43 usually point to…

3.4ECC errors & row remapping

Data-center GPUs protect HBM (and on-chip SRAM) with ECC:

  • Single-bit (correctable): fixed on the fly and counted. A slowly growing count is normal. A rapidly growing one is a warning.
  • Double-bit (uncorrectable, DBE): the data is lost. The application gets an error (Xid 48 / 94 / 95) and the GPU usually needs a reset.

A100 and later GPUs use row remapping: a bad DRAM row is replaced with a spare at the next GPU reset. nvidia-smi -q -d ECC shows "Remapped Rows → Pending: Yes" until you reset. If remapping fails (spares exhausted), the GPU needs replacing.

Procedure: drain → wait for jobs to leave → nvidia-smi -r -i <gpu> → dcgmi diag -r 2 → return to service if clean.

Checkpoint+50 XP30 XP if you need a retry
`nvidia-smi -q -d ECC` shows Remapped Rows → Pending: Yes. What's needed?
Single-bit ECC errors are…

3.5DCGM

DCGM runs a host engine (nv-hostengine) on each node and exposes:

  • Telemetry fields: temperature, power, clocks, ECC, NVLink counters, Xid events and profiling metrics (SM_ACTIVE, SM_OCCUPANCY, PIPE_TENSOR_ACTIVE, DRAM_ACTIVE).
  • Health watches that flag thermal, power, memory, PCIe and NVLink issues.
  • Diagnostics: dcgmi diag -r 1|2|3, from quick deployment checks to stress tests. Run level 1 before a node rejoins the pool and level 3 after hardware work.
  • dcgm-exporter for Prometheus, so it feeds Grafana dashboards and alert rules.

Alerts worth having on day one

  • Any Xid event (critical ones page someone).
  • HW thermal slowdown active for more than a minute.
  • Uncorrectable ECC or pending row remap.
  • GPU busy while the scheduler shows no job on that node. That catches leaks and Cryptojacking on GPU clusters.
Checkpoint+50 XP30 XP if you need a retry
Which alert catches both leaked processes and cryptominers?
A node is back from hardware repair. Before it rejoins the pool, run…

3.6Stragglers

Every collective is a barrier. If one of 1,024 GPUs runs 40% slower (a thermal throttle, a flaky link, a noisy neighbor or a slow disk on one node), all 1,024 run 40% slower.

Signatures

  • Throughput drops with no errors in the logs.
  • Per-GPU utilization looks inverted: the straggler shows ~100%, the others less, because they idle at the barrier.
  • The straggler's SM clock is low. nvidia-smi -q -d PERFORMANCE shows HW Thermal Slowdown or SW Power Cap.
  • NCCL or framework timing shows one rank consistently arriving late to collectives.

Response: identify, drain, restart from a checkpoint on healthy hardware, and file a hardware ticket. At scale, automate it: continuous per-rank timing plus DCGM clocks and temperatures, and automatic cordoning.

Checkpoint+50 XP30 XP if you need a retry
Which GPU is the straggler?
index, utilization.gpu, clocks.sm
0, 61 %, 1980 MHz
1, 60 %, 1980 MHz
5, 99 %, 1089 MHz
6, 61 %, 1980 MHz
Why do the healthy GPUs show *lower* utilization during a straggler event?
◆ Boss mission

Fallen Off the Bus

A training job died overnight. Find the bad GPU, quarantine the node and get the run going again.

🔒 Master 3 more section(s) in this chapter to unlock.Play anyway
◆ Boss mission

The Slow Lane

Throughput just halved across 32 GPUs, but nothing failed. Find the straggler.

🔒 Master 3 more section(s) in this chapter to unlock.Play anyway