Health Monitoring#
The health module is module ID 4. It uses passive field watches to assess subsystem health without running a dedicated workload. The module is loaded when health watches or checks are first requested.
Use dcgmi health for passive health-watch syntax and dcgmi diag for active diagnostic suites, canonical test names, parameters, output, and exit status.
When health monitoring is useful#
Health monitoring is the right starting point when applications must remain running and the question is whether recent telemetry contains evidence of a known problem. It can detect and summarize conditions involving PCIe, GPU memory, InfoROM, the driver, thermal and power behavior, NVLink, NVSwitch, and ConnectX devices, as well as supported NVIDIA CPU thermal and power conditions. Common uses include a node-wide background watch, a check at job completion, and a quick incident query after a workload reports an error.
The module interprets retained field samples; it does not apply load to prove
that a GPU can execute a workload. A Healthy result means that no enabled
health rule found an incident in the retained data. It does not mean that
every subsystem was watched or that an active stress test passed.
Health, policy, and diagnostics occupy different points in a workflow:
Core field watches collect the underlying measurements.
Health converts selected measurements and events into warning or failure incidents that can be polled.
Policy watches a smaller set of conditions and can notify a listener or request an action when a condition occurs.
Diagnostics run active tests when the target hardware can be taken out of ordinary service.
Example: watch a scheduler allocation#
Suppose GPUs 0 and 1 have been assigned to a job. Create a group and enable the passive GPU watches before the workload starts:
$ dcgmi group --create job-4815 --add gpu:0,gpu:1
$ dcgmi health --set pmitnd --group <group-id> \
--update-interval 30 --max-keep-age 600
Replace <group-id> with the ID printed by the create command. The selector
enables PCIe (p), memory (m), InfoROM (i), thermal and power
(t), NVLink (n), and driver (d) watches. The setting remains in
the running host engine after these commands exit.
After the watches have collected data, check the group during or after the job:
$ dcgmi health --fetch --group <group-id>
$ dcgmi health --check --group <group-id>
--fetch confirms what is enabled; it does not assess health. --check
reports the overall severity and every affected entity and subsystem. Some
watches require approximately 60 seconds of samples, so an immediate first
check may not be meaningful.
During job cleanup, disable the watches and remove the transient group:
$ dcgmi health --clear --group <group-id>
$ dcgmi group --delete <group-id>
For a long-lived node monitor, use a stable group and leave the watches enabled instead. Choose a retention window long enough to preserve the event until the monitoring system performs its check.
Choosing passive or active checks#
Use the available mechanisms according to the operational window:
Background health checks are passive and can remain enabled while jobs run.
Prologue diagnostics use the quick suite to test readiness before a job starts.
Epilogue diagnostics use a medium suite or selected tests after a failed job, when the GPU is no longer serving the workload.
Full system validation uses longer suites during administrator-led isolation and investigation.
Warning
All of these are online diagnostics, meaning they run within the current environment. There is potential for factors beyond the GPU to influence behavior in negative ways. While these tools try to identify those situations, full offline diagnostics delivered via a different NVIDIA tool are required for complete hardware validation, and are required for RMA.
Background Health Checks#
This form of health check is based on passive, background monitoring of various hardware and software components. The objective is to identify problems in key areas with low monitoring overhead and without applying a diagnostic workload. These kinds of checks can catch serious problems, such as unresponsive GPUs, corrupted firmware, thermal escapes, etc.
When such issues are identified they are reported by DCGM as warnings or errors. Each situation can require different client responses, but the following guidelines are usually true:
Warning - an issue has been detected that won’t prevent current work from completing, but the issue should be examined and potentially addressed in the future.
Failure - a critical issue has been detected and the current work is likely compromised or interrupted. These situations typically correspond to fatal RAS events and usually indicate the need for job termination and GPU health analysis.
Background health checks can be set and watched via simple DCGM interfaces. Using dcgmi health as the interface, the following code sets several health checks for a group and then verifies that those checks are currently enabled:
$ dcgmi health -g 1 -s mpi
Health monitor systems set successfully.
The available health watch flags are:
p- PCIe watchesm- Memory watchesi- InfoROM watchest- Thermal and power watchesn- NVLink watchesd- Driver watchesx- ConnectX watchesa- All watches
To view the current status of all GPUs in the group the client can simply query for the overall group health. The result is an overall health score for the group as well as individual results for each impacted GPU, identifying key problems.
For example, DCGM would show the following when excessive PCIe replay events or InfoROM issues are detected:
$ dcgmi health -g 1 -c
Health Monitor Report
+----------------------------------------------------------------------------+
| Group 1 | Overall Health: Warning |
+==================+=========================================================+
| GPU ID: 0 | Warning |
| | PCIe system: Warning - Detected more than 8 PCIe |
| | replays per minute for GPU 0: 13 |
+------------------+---------------------------------------------------------+
| GPU ID: 1 | Warning |
| | InfoROM system: Warning - A corrupt InfoROM has been |
| | detected in GPU 1. |
+------------------+---------------------------------------------------------+
System |
Error Code |
Cause |
|---|---|---|
Any |
DCGM_FR_FALLEN_OFF_BUS |
A GPU has fallen off the bus. |
Any |
DCGM_FR_XID_ERROR |
One or more “devastating” XIDs associated with a critical hardware error has occurred. |
Driver |
DCGM_FR_GPU_RECOVERY_DRAIN_P2P |
A GPU requires peer-to-peer traffic to be quiesced. |
Driver |
DCGM_FR_GPU_RECOVERY_DRAIN_RESET |
A GPU is operating at reduced capacity due to a fault. |
Driver |
DCGM_FR_GPU_RECOVERY_REBOOT |
A GPU fault may have left the operating system in an inconsistent state. |
Driver |
DCGM_FR_GPU_RECOVERY_RESET |
A GPU requires a reset to recover from a fault. |
PCIe |
DCGM_FR_PCI_REPLAY_RATE |
There were more than 8 PCIe replays in the last minute. |
PCIe |
DCGM_FR_XID_ERROR |
One or more XIDs associated with bus or fabric errors were reported. |
Memory |
DCGM_FR_FAULTY_MEMORY |
Faulty memory elements were detected on a GPU. |
Memory |
DCGM_FR_VOLATILE_DBE_DETECTED |
One or more volatile DBEs are reported (non-recoverable memory errors since the last GPU reset) |
Memory |
DCGM_FR_PENDING_PAGE_RETIREMENTS |
There is one or more pending page retirement. |
Memory |
DCGM_FR_RETIRED_PAGES_LIMIT |
63 or more retired pages have occurred on one GPU. |
Memory |
DCGM_FR_RETIRED_PAGES_DBE_LIMIT |
There have been more than 15 total retired pages due to DBEs and at least one in the last week. |
Memory |
DCGM_FR_ROW_REMAP_FAILURE |
One or more row remapping failures occurred (XID 64 occurred). |
Memory |
DCGM_FR_UNCONTAINED_ERROR |
A GPU experienced an uncontained error (XID 95 occurred). |
Memory |
DCGM_FR_CONTAINED_ERROR |
A GPU reported a contained error (XID 94 occurred). |
Memory |
DCGM_FR_XID_ERROR |
One or more XIDs associated with memory management units (MMU), push buffer direct management access (PBDMA) units, or Reset Channel Verification were reported. |
Inforom |
DCGM_FR_CORRUPT_INFOROM |
Inforom corruption detected (XID 93). DCGM raises this warning only when XID 93 is observed on Volta GPUs; on all other architectures DCGM ignores XID 93 and does not raise this health warning. |
Thermal |
DCGM_FR_CLOCKS_EVENT_THERMAL |
A thermal violation was detected on a GPU in the last minute. |
Thermal |
DCGM_FR_FIELD_THRESHOLD_DBL |
A CPU’s temperature one minute ago and its current temperature are both above the warning temperature. |
Thermal |
DCGM_FR_FIELD_THRESHOLD_DBL |
A CPU’s current temperature is above the critical temperature. |
Thermal |
DCGM_FR_THERMAL_VIOLATIONS |
Thermal violations were detected on a GPU. |
Thermal |
DCGM_FR_XID_ERROR |
One or more XIDs associated with EDPP Power Brake Thermal Limit were reported. |
Power |
DCGM_FR_CLOCKS_EVENT_POWER |
A GPU had a power violation detected in the last minute. |
Power |
DCGM_FR_FIELD_THRESHOLD_DBL |
A CPU’s power usage is above its power limit. |
Power |
DCGM_FR_POWER_UNREADABLE |
Cannot reliably read the power usage for a GPU. |
Power |
DCGM_FR_XID_ERROR |
One or more XIDs associated with power state change or clock change was reported. |
NVLink |
DCGM_FR_FABRIC_PROBE_STATE |
A GPU has a non-ready fabric state. |
NVLink |
DCGM_FR_FIELD_VIOLATION |
The fabric health mask reports an unhealthy state. |
NVLink |
DCGM_FR_IMEX_UNHEALTHY |
Internode Memory Exchange (IMEX) domain or daemon status is unhealthy. |
NVLink |
DCGM_FR_NVLINK_ERROR_CRITICAL |
An NVLink reported 1 or more errors. This includes datalink CRC, recovery, and replay errors (pre-Blackwell GPUs) and link recovery events (Blackwell+ GPUs). |
NVLink |
DCGM_FR_NVLINK_ERROR_THRESHOLD |
An NVLink reported a rate of errors which exceeds the minimum threshold. |
NVLink |
DCGM_FR_NVLINK_CRC_ERROR_THRESHOLD |
An NVLink reported more than 100 CRC errors per second. |
NVLink |
DCGM_FR_NVLINK_EFFECTIVE_BER_THRESHOLD |
An NVLink reported effective bit error rate which exceeds the minimum threshold. |
NVLink |
DCGM_FR_NVLINK_SYMBOL_BER_THRESHOLD |
An NVLink reported symbol bit error rate which exceeds the minimum threshold. |
NVLink |
DCGM_FR_XID_ERROR |
One or more XIDs associated with NVLink flow control, chip-to-chip (C2C) link correction, or fabric linear addressing (FLA) privilege were reported. |
NVSWitch Fatal |
DCGM_FR_NVSWITCH_FATAL_ERROR |
An NVSwitch reported one or more fatal errors. |
NVSWitch Fatal |
DCGM_FR_NVLINK_DOWN |
One or more NVLinks is being reported as down. |
NVSWitch Non-Fatal |
DCGM_FR_NVSWITCH_NON_FATAL_ERROR |
An NVSwitch reported one or more non-fatal errors. |
ConnectX |
DCGM_FR_FIELD_VIOLATION |
A ConnectX device reported an unhealthy status. |
ConnectX |
DCGM_FR_FIELD_VIOLATION |
A ConnectX device reported PCIe Advanced Error Reporting (AER) uncorrectable errors (fatal or non-fatal). |
Note
The dcgmi interfaces above only report current health status. The underlying data, exposed via other interfaces, captures
more information about the timeframe of the events and their connections to executing processes on the GPU.
Active Diagnostics#
Passive health monitoring and active diagnostics answer different questions. Health watches look for incidents in ordinary telemetry while applications are running. The diagnostic module runs dedicated tests when the target resources can be taken out of normal service. See Diagnostics for diagnostic selection, preparation, and test behavior.
Further reading#
dcgmi health is the exhaustive reference for watch selectors, sampling, retention, output, and lifetime.
dcgmi diag is the exhaustive active- diagnostic command reference.
dcgmi group documents the group lifecycle used in the example.
Health Monitor documents programmatic watch masks and result structures.
Policy explains notification and action policies.