TT Lab
Blog

한국어 English 日本語 中文

Get started
Blog

Blog

Anatomy of all DCGM exporter metrics: 18 that actually appear and ones that do not

Status: Draft (2026-10-05, updated 2026-10-09), reflects actual measurements. Metric lists, values, labels, and logs were received as read-only from dcgm-exporter in the experimental environment. Supplementary explanations of metric meanings are based on NVIDIA DCGM and dcgm-exporter documentation; the documentation was not reopened and cross-checked at the time of writing this article (unconfirmed). PromQL examples were not executed (unexecuted). Writing rule: Actual measurement data is the default, and unmeasured items are marked as "Unmeasured".

Table of Contents

1. Architecture and Experimental Environment Configuration

DCGM (Data Center GPU Manager) is NVIDIA's GPU management and monitoring library, and dcgm-exporter is a program that exports values read by DCGM in Prometheus format. The flow is "GPU Driver (NVML) → DCGM → dcgm-exporter (HTTP 9400) → Prometheus".

The configuration of the experimental environment is as follows.

Item Value
Image nvcr.io/nvidia/k8s/dcgm-exporter:4.5.3-4.8.2-distroless
Deployment Method GPU Operator DaemonSet
Service nvidia-dcgm-exporter ClusterIP, Port 9400
Collection List Environment Variable DCGM_EXPORTER_COLLECTORS=/etc/dcgm-exporter/dcp-metrics-included.csv
Kubernetes Integration DCGM_EXPORTER_KUBERNETES=true

2. 18 Metrics That Actually Appeared

There were 18 metrics in 54 lines of output from a single 8GB-class laptop GPU, and they were the same 18 metrics on another laptop GPU of the same generation. The values in the table below are example values when this GPU is idle. The meanings are based on the metric HELP text and DCGM documentation.

2.1 Clocks, Temperature, and Power

Metric Type Unit Meaning Example Value
DCGM_FI_DEV_SM_CLOCK gauge MHz SM (Streaming Multiprocessor) Clock 210
DCGM_FI_DEV_MEM_CLOCK gauge MHz Memory Clock 8001
DCGM_FI_DEV_GPU_TEMP gauge ℃ GPU Temperature 40
DCGM_FI_DEV_MEMORY_TEMP gauge ℃ Memory Temperature 0
DCGM_FI_DEV_POWER_USAGE gauge W Instantaneous Power 1.22
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION counter mJ Cumulative Energy Since Boot 8,447,476,600

2.2 Utilization

Metric Type Unit Meaning Example Value
DCGM_FI_DEV_GPU_UTIL gauge % Time ratio during which at least one kernel was running in the sample interval 0
DCGM_FI_DEV_MEM_COPY_UTIL gauge % Time ratio during which the memory controller was used for reads and writes 0
DCGM_FI_DEV_ENC_UTIL gauge % Video encoder utilization 0
DCGM_FI_DEV_DEC_UTIL gauge % Video decoder utilization 0

GPU_UTIL The biggest pitfall of is the impression given by its name. This value is not "how full the SM is" but "the ratio of time during which at least one kernel was running" (per documentation). If a single small kernel runs continuously, it will show 100% even if most of the SM is idle. Therefore, you cannot tell whether a GPU is actually saturated in LLM serving using this value alone. As seen in Section 5 below, the GPUs in this experimental environment cannot receive more accurate metrics (profiling).

2.3 Memory

Metric Unit Meaning Example Value (8GB-class Laptop GPU)
DCGM_FI_DEV_FB_USED MiB Framebuffer in use 12
DCGM_FI_DEV_FB_FREE MiB Free framebuffer 7,795
DCGM_FI_DEV_FB_RESERVED MiB Reserved region by the driver 380

Adding the three values gives the total memory of the GPU. The above example is 12 + 7,795 + 380 = 8,187MiB, and on other cards of the same class it is 8,186MiB, and on a 24GB-class consumer GPU it is 24,575MiB, matching 8GiB-class and 24GiB-class cards respectively. Therefore, when calculating utilization, the denominator should use USED + FREE rather than USED + FREE + RESERVED to be accurate. The reserved area is space that the model cannot use.

2.4 Errors and Reliability

Metric Type Meaning Value
DCGM_FI_DEV_PCIE_REPLAY_COUNTER counter Cumulative PCIe retransmission count 0
DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS counter Memory rows retired due to uncorrectable errors 0
DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS counter Memory rows retired due to correctable errors 0
DCGM_FI_DEV_ROW_REMAP_FAILURE gauge Row retirement failure status (0 is normal) 0
DCGM_FI_DEV_VGPU_LICENSE_STATUS gauge vGPU license status 0

3. Labels

The same labels are attached to all metrics.

Label Example Value Purpose
gpu 0 GPU number within node
UUID GPU-… Permanently identify GPU (track replacements)
pci_bus_id 00000000:01:00.0 Physical location
device nvidia0 Device node
modelName GPU model name Model
Hostname Node name Node
DCGM_FI_DRIVER_VERSION 595.91.07 Driver version

If there is a Pod using the GPU, container, namespace, pod labels are added. We verified that these three labels are attached on GPUs that have pods using them. These three are obtained from kubelet's pod-resources socket, and were not attached when the GPU was idle.

To attach custom labels of pods, the exporter needs permission to read the API server. In the experimental environment, the exporter was unable to access the API server within the cluster, and Failed to get in-cluster config, pod labels will not be available remained in the logs. This means that to aggregate costs by team or project using pod labels, the exporter must be granted permission to read the API server, but we did not test changing it that way (untested).

Since the variety of label values is proportional to the number of GPUs, the cardinality of this metric is small. This contrasts with Hubble in the next post (Cilium metrics).

4. Differences and Observations Revealed by Labels

5. What Does Not Appear and Why

The reasons remain intact in the exporter startup logs (8GB-class laptop GPU, 2026-09-23).

Not collecting DCP metrics: Profiling is not supported for this group of GPUs or GPU
Skipping line 21 ('DCGM_FI_PROF_GR_ENGINE_ACTIVE'): metric not enabled
Skipping line 22 ('DCGM_FI_PROF_PIPE_TENSOR_ACTIVE'): metric not enabled
Skipping line 23 ('DCGM_FI_PROF_DRAM_ACTIVE'): metric not enabled
Skipping line 24 ('DCGM_FI_PROF_PCIE_TX_BYTES'): metric not enabled
Skipping line 25 ('DCGM_FI_PROF_PCIE_RX_BYTES'): metric not enabled
Not collecting NvSwitch metrics; no switches to monitor
Not collecting CPU metrics; ... DCGM module that is not currently loaded
Missing Metric Meaning Reason for Absence in This Environment
DCGM_FI_PROF_GR_ENGINE_ACTIVE Time ratio with graphics engine active Profiling not supported for this GPU family (log)
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE Ratio with tensor cores active Same as above
DCGM_FI_PROF_DRAM_ACTIVE Ratio with memory interface active Same as above
DCGM_FI_PROF_PCIE_TX/RX_BYTES PCIe transmit/receive bytes Same as above
NVSwitch and NVLink metrics Switch and link status No switch present (log)
Host CPU metrics CPU core status DCGM module not loaded (log)

The most disappointing thing in LLM serving operations is profiling metrics. You need to know the tensor core active ratio and DRAM active ratio to determine whether computation is the bottleneck or memory bandwidth is the bottleneck, but these consumer laptop GPUs cannot receive them. We re-verified up to a desktop 24GB-class GPU on 2026-10-09. We simply read the collector output of five GPUs in the cluster (four models: two generations of laptops and one desktop) via API proxy, and the number of lines starting with DCGM_FI_PROF_ was 0 across all five cards. They did not appear simply because it was a desktop GPU. The metric types were also not identical; the latest generation laptop GPU had 18 types, while the previous generation laptop and desktop GPUs had 15 types, with the three missing being row remapping metrics (DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS, ..._UNCORRECTABLE_REMAPPED_ROWS, DCGM_FI_DEV_ROW_REMAP_FAILURE). NVIDIA documentation only notes "limited DCGM functionality" for non-datacenter GPUs such as consumer and workstation products, and the feature table (Features Supported on Different GPU Products) also lacks a profiling line, so we could not distinguish from documentation which products output them. Whether they actually appear on datacenter GPUs remains unmeasured since we lack the equipment.

XID error metrics and power/thermal limit violation metrics are absent from this output. They are not even in the skipped list in the logs. We initially presumed that XID was omitted from the collection list in the first place, but verification with external materials proved that presumption wrong. This Pod's configuration is DCGM_EXPORTER_COLLECTORS=/etc/dcgm-exporter/dcp-metrics-included.csv, the image tag is 4.5.3-4.8.2-distroless , and the same tag file in the upstream repository (original text checked) contains DCGM_FI_DEV_XID_ERRORS as active lines (sequence 11 excluding comments). The five PROF lines in the same file correspond exactly to "Skipping line 21" through "line 25" in the log, and the 18 metrics we observed are exactly the 26 active lines in this file minus XID, NVLink bandwidth, and the five PROF lines. Therefore, it appears that they are in the list but values do not come out on this GPU(presumption. The exporter source skips a metric if DCGM returns a blank value. We could not open the running file (distroless), and currently, lines in the DCGM_FI_DEV_XID_ERRORS family are 0). Power and thermal limit violation metrics are commented out in the upstream file, so they are not in the list to begin with. Currently, XID can only be checked via kernel logs (NVRM: Xid), and this workflow will be covered further in part 11.

6. Query Examples (Unexecuted)

These are examples that were not actually executed in Prometheus. Metric names and units match the actual measurements above.

# 평균 전력(W): 누적 에너지(mJ)의 증가율을 1000 으로 나눈다
rate(DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION[5m]) / 1000

# 메모리 사용률: 분모에 예약 영역까지 포함한다
DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_USED + DCGM_FI_DEV_FB_FREE + DCGM_FI_DEV_FB_RESERVED)

# 알림 후보
DCGM_FI_DEV_ROW_REMAP_FAILURE > 0
increase(DCGM_FI_DEV_PCIE_REPLAY_COUNTER[1h]) > 0

7. Potential Interview Questions

8. Common Misconceptions

External Evidence: Verified via official documentation and source code

Topic Material and Verified Location Verified Content Relationship to this post
Why profiling metrics do not appear DCGM Feature Overview (Supported Products Table), dcgm-exporter default-counters.csv comments and source (pkg/cmd/app.go, fieldIsSupported) Profiling metrics are supported only on datacenter Volta and later. Upon startup, the exporter queries DCGM for profiling support, and if it fails, logs "Not collecting DCP metrics" and skips the PROF lines with "metric not enabled". Supports. Matches the log phrases seen in this post
DCGM features for consumer GPUs Same table On consumer product lines, field value monitoring, configuration management, health checks, job statistics, and topology are supported; policy alerts are supported only on Tesla, and diagnostics are level 1 only. Supports. Consistent with the description of "limited functionality"
Why XID metrics do not appear dcgm-exporter upstream dcp-metrics-included.csv(tags 4.5.3-4.8.2) DCGM_FI_DEV_XID_ERRORS is the active line, and the sequence of the five PROF lines matches the logs exactly. Rebuttal (original assumption). Corrected to values not appearing rather than being absent from the list.

Things Not Verified

References

Versions and Dates Verified

As of 2026-10-05. dcgm-exporter 4.5.3-4.8.2, drivers 595.91.07 and 570.195.03.

Sign in to like

Comments

No comments yet.

Sign in to leave a comment