상태: 초안 (2026-10-05), 실측 반영. 지표 목록, 값, 레이블, 로그는 실험 환경의 dcgm-exporter 에서 읽기 전용으로 받은 것입니다. 지표 의미의 보충 설명은 NVIDIA DCGM 과 dcgm-exporter 문서에 근거하며, 이 글을 쓰는 시점에 문서를 다시 열어 대조하지는 않았습니다(미확인). PromQL 예시는 실행하지 않았습니다(미실행). 작성 규칙: 실측 데이터가 기본이고, 못 잰 것은 「미실측」으로 표시합니다.
목차
- 1. 구조와 실험 환경의 구성
- 2. 실제로 나온 18개 지표
- 3. 레이블
- 4. 레이블로 드러나는 차이와 관찰
- 5. 나오지 않는 것과 그 이유
- 6. 쿼리 예시 (미실행)
- 7. 면접에서 나올 만한 질문
- 8. 흔한 오해
- 외부 근거: 공식 문서와 소스로 확인한 것
- 확인하지 못한 것
- 참고 자료
- 확인한 버전과 날짜
1. 구조와 실험 환경의 구성
DCGM(Data Center GPU Manager)은 NVIDIA 의 GPU 관리·모니터링 라이브러리이고, dcgm-exporter 는 DCGM 이 읽은 값을 Prometheus 형식으로 내보내는 프로그램입니다. 흐름은 「GPU 드라이버(NVML) → DCGM → dcgm-exporter(HTTP 9400) → Prometheus」입니다.
실험 환경의 구성은 다음과 같습니다.
| 항목 | 값 |
|---|---|
| 이미지 | nvcr.io/nvidia/k8s/dcgm-exporter:4.5.3-4.8.2-distroless |
| 배포 방식 | GPU Operator 의 DaemonSet |
| 서비스 | nvidia-dcgm-exporter ClusterIP, 포트 9400 |
| 수집 목록 | 환경변수 DCGM_EXPORTER_COLLECTORS=/etc/dcgm-exporter/dcp-metrics-included.csv |
| 쿠버네티스 연동 | DCGM_EXPORTER_KUBERNETES=true |
2. 실제로 나온 18개 지표
8GB급 노트북 GPU 한 장의 출력 54줄에 지표 18개가 있었고, 같은 세대의 다른 노트북 GPU 에서도 같은 18개였습니다. 아래 표의 값은 이 GPU 가 유휴일 때의 예시 값입니다. 의미는 지표의 HELP 문구와 DCGM 문서에 근거합니다.
2.1 클럭, 온도, 전력
| 지표 | 종류 | 단위 | 의미 | 예시 값 |
|---|---|---|---|---|
DCGM_FI_DEV_SM_CLOCK |
gauge | MHz | SM(연산 유닛) 클럭 | 210 |
DCGM_FI_DEV_MEM_CLOCK |
gauge | MHz | 메모리 클럭 | 8001 |
DCGM_FI_DEV_GPU_TEMP |
gauge | ℃ | GPU 온도 | 40 |
DCGM_FI_DEV_MEMORY_TEMP |
gauge | ℃ | 메모리 온도 | 0 |
DCGM_FI_DEV_POWER_USAGE |
gauge | W | 순간 전력 | 1.22 |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION |
counter | mJ | 부팅 후 누적 에너지 | 8,447,476,600 |
- 메모리 온도는 관찰한 GPU 모두 0 입니다. 지표가 「0℃」를 뜻하는 것이 아니라 이 GPU 들이 값을 주지 않는 것으로 보이지만, 원인은 확인하지 못했습니다. 알림 조건을 만들 때 0 을 정상값으로 취급하면 안 됩니다.
- 누적 에너지는 카운터입니다. 값을 그대로 보지 말고 증가분으로 봐야 합니다. mJ 단위이므로
rate()를 1000 으로 나누면 평균 와트입니다. 예를 들어 위 예시의 누적 8,447,476,600mJ 은 약 2.3kWh 입니다(부팅 후). - 유휴 클럭은 낮습니다. 관찰한 GPU 모두 유휴일 때 SM 클럭이 210MHz 였습니다.
2.2 사용률
| 지표 | 종류 | 단위 | 의미 | 예시 값 |
|---|---|---|---|---|
DCGM_FI_DEV_GPU_UTIL |
gauge | % | 샘플 구간에서 커널이 하나라도 실행 중이던 시간 비율 | 0 |
DCGM_FI_DEV_MEM_COPY_UTIL |
gauge | % | 메모리 컨트롤러가 읽기·쓰기에 쓰인 시간 비율 | 0 |
DCGM_FI_DEV_ENC_UTIL |
gauge | % | 비디오 인코더 사용률 | 0 |
DCGM_FI_DEV_DEC_UTIL |
gauge | % | 비디오 디코더 사용률 | 0 |
GPU_UTIL 의 가장 큰 함정은 이름이 주는 인상입니다. 이 값은 「SM 이 얼마나 꽉 차 있는가」가 아니라 「커널이 하나라도 돌고 있던 시간의 비율」입니다(문서 기준). 작은 커널 하나가 계속 돌면 SM 대부분이 놀아도 100% 가 나옵니다. 그래서 LLM 서빙에서 GPU 가 실제로 포화되었는지는 이 값만으로 알 수 없습니다. 아래 5절에서 보듯 이 실험 환경의 GPU 는 더 정확한 지표(프로파일링)를 받을 수 없습니다.
2.3 메모리
| 지표 | 단위 | 의미 | 예시 값(8GB급 노트북 GPU) |
|---|---|---|---|
DCGM_FI_DEV_FB_USED |
MiB | 사용 중인 프레임버퍼 | 12 |
DCGM_FI_DEV_FB_FREE |
MiB | 비어 있는 프레임버퍼 | 7,795 |
DCGM_FI_DEV_FB_RESERVED |
MiB | 드라이버가 예약한 영역 | 380 |
세 값을 더하면 GPU 의 전체 메모리가 됩니다. 위 예시는 12 + 7,795 + 380 = 8,187MiB 이고, 같은 급의 다른 카드에서는 8,186MiB, 24GB급 소비자용 GPU 에서는 24,575MiB 로 각각 8GiB 급과 24GiB 급 카드에 맞습니다. 그래서 사용률을 계산할 때 분모에는 USED + FREE 가 아니라 USED + FREE + RESERVED 를 써야 정확합니다. 예약 영역은 모델이 쓸 수 없는 공간입니다.
2.4 오류와 신뢰성
| 지표 | 종류 | 의미 | 값 |
|---|---|---|---|
DCGM_FI_DEV_PCIE_REPLAY_COUNTER |
counter | PCIe 재전송 누적 횟수 | 0 |
DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS |
counter | 정정 불가 오류로 재배치된 메모리 행 수 | 0 |
DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS |
counter | 정정 가능 오류로 재배치된 메모리 행 수 | 0 |
DCGM_FI_DEV_ROW_REMAP_FAILURE |
gauge | 행 재배치 실패 여부(0 이 정상) | 0 |
DCGM_FI_DEV_VGPU_LICENSE_STATUS |
gauge | vGPU 라이선스 상태 | 0 |
- PCIe 재전송이 늘어나면 링크 품질 문제를 의심합니다. PCIe 링크 폭이 낮아져 있는 경우가 대표적인 점검 대상입니다.
- 재배치된 행 지표는 GPU 마다 달랐습니다. Ada 세대 노트북 GPU 에서는 세 지표가 모두 출력되었는데, 24GB급 소비자용 GPU 에서는 이 세 개가 출력에서 빠져 15개 지표만 나왔습니다. GPU 가 해당 값을 지원하지 않으면 exporter 가 지표를 내지 않는 것으로 보이지만, 정확한 규칙은 확인하지 못했습니다.
ROW_REMAP_FAILURE가 1 이면 데이터센터 GPU 에서는 교체를 검토하는 신호입니다(문서 기준). 관찰한 GPU 는 전부 0 이었습니다.
3. 레이블
모든 지표에 같은 레이블이 붙습니다.
| 레이블 | 값의 예 | 용도 |
|---|---|---|
gpu |
0 |
노드 안의 GPU 번호 |
UUID |
GPU-… |
GPU 를 영구적으로 구별(교체를 추적) |
pci_bus_id |
00000000:01:00.0 |
물리 위치 |
device |
nvidia0 |
장치 노드 |
modelName |
GPU 모델 이름 | 모델 |
Hostname |
노드 이름 | 노드 |
DCGM_FI_DRIVER_VERSION |
595.91.07 |
드라이버 버전 |
GPU 를 쓰는 파드가 있으면 container, namespace, pod 레이블이 더해집니다. GPU 를 쓰는 파드가 있는 GPU 에서 이 세 레이블이 붙은 것을 확인했습니다. 이 세 가지는 kubelet 의 pod-resources 소켓에서 얻으며, GPU 가 비어 있는 경우에는 붙어 있지 않았습니다.
파드의 사용자 정의 레이블을 붙이려면 exporter 가 API 서버를 읽을 권한이 필요합니다. 실험 환경에서는 exporter 가 클러스터 안에서 API 서버에 접근하지 못하는 상태였고, 로그에 Failed to get in-cluster config, pod labels will not be available 가 남았습니다. 파드 레이블로 팀이나 프로젝트별 비용을 집계하려면 exporter 에 API 서버 읽기 권한을 주어야 한다는 뜻이지만, 그렇게 바꾸어 보지는 않았습니다(미시험).
레이블 값의 종류는 GPU 수에 비례하므로 이 지표의 카디널리티는 작습니다. 다음 글(Cilium 지표)의 Hubble 과 대비되는 점입니다.
4. 레이블로 드러나는 차이와 관찰
- 같은 클러스터에 드라이버 버전이 섞일 수 있고, 그 사실은
DCGM_FI_DRIVER_VERSION레이블로 바로 드러납니다. 실험 환경에서는 595.91.07 과 570.195.03 두 버전이 함께 있었습니다. 문제의 원인이라는 뜻이 아니라, 업그레이드나 장애 조사 때 먼저 걸러 볼 변수라는 뜻입니다. - 유휴 전력이 GPU 모델마다 다릅니다. 8GB급 노트북 GPU 는 유휴에서 1.22W 였고, 24GB급 소비자용 GPU 는 유휴에서도 21.1W 를 썼습니다.
5. 나오지 않는 것과 그 이유
exporter 시작 로그에 이유가 그대로 남아 있습니다(8GB급 노트북 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
| 없는 지표 | 의미 | 이 환경에서 없는 이유 |
|---|---|---|
DCGM_FI_PROF_GR_ENGINE_ACTIVE |
그래픽 엔진이 활성인 시간 비율 | 이 GPU 군은 프로파일링 미지원(로그) |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE |
텐서 코어가 활성인 비율 | 위와 같음 |
DCGM_FI_PROF_DRAM_ACTIVE |
메모리 인터페이스가 활성인 비율 | 위와 같음 |
DCGM_FI_PROF_PCIE_TX/RX_BYTES |
PCIe 송수신 바이트 | 위와 같음 |
| NVSwitch, NVLink 지표 | 스위치와 링크 상태 | 스위치가 없음(로그) |
| 호스트 CPU 지표 | CPU 코어 상태 | DCGM 모듈 미로드(로그) |
LLM 서빙 운영에서 가장 아쉬운 것은 프로파일링 지표입니다. 텐서 코어 활성 비율과 DRAM 활성 비율을 알아야 「연산이 병목인가, 메모리 대역폭이 병목인가」를 가를 수 있는데, 이 소비자용 노트북 GPU 들에서는 받을 수 없습니다. 데이터센터 GPU 에서는 같은 설정으로 나온다고 알려져 있지만 이 실험 환경에서는 확인할 수 없습니다(미실측).
XID 오류 지표와 전력·열 제한 위반 지표는 이 출력에 없습니다. 로그의 건너뜀 목록에도 없습니다. 처음에는 사용하는 수집 목록에 XID 가 애초에 없는 것으로 추정했지만, 외부 자료로 확인하니 그 추정이 틀렸습니다. 이 파드의 설정은 DCGM_EXPORTER_COLLECTORS=/etc/dcgm-exporter/dcp-metrics-included.csv, 이미지 태그는 4.5.3-4.8.2-distroless 이고, 업스트림 저장소의 같은 태그 파일(원문 확인)에는 DCGM_FI_DEV_XID_ERRORS 가 활성 줄(주석을 뺀 순번 11)로 들어 있습니다. 같은 파일의 다섯 PROF 줄이 로그의 「Skipping line 21」에서 「line 25」와 정확히 겹치고, 우리가 본 18개 지표가 이 파일의 활성 26줄에서 XID, NVLink 대역폭, PROF 다섯 줄을 뺀 것과 정확히 같습니다. 따라서 목록에는 있으나 이 GPU 에서 값이 나오지 않은 것으로 보입니다(추정. exporter 소스는 DCGM 이 blank 값을 돌려주면 그 지표를 건너뜁니다. 실행 중인 파일을 열어 보지는 못했고(distroless), 지금 DCGM_FI_DEV_XID_ERRORS 계열 줄은 0개입니다). 전력·열 제한 위반 지표는 업스트림 파일에서 주석 처리되어 있어 애초에 목록에 없습니다. 지금 XID 는 커널 로그(NVRM: Xid)로만 확인할 수 있고, 이 흐름은 11편에서 이어서 다룹니다.
6. 쿼리 예시 (미실행)
실제 Prometheus 에 실행하지 않은 예시입니다. 지표 이름과 단위는 위 실측과 맞췄습니다.
# 평균 전력(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. 면접에서 나올 만한 질문
GPU_UTIL이 100% 면 GPU 가 포화된 것인가? 아닙니다. 커널이 하나라도 돌고 있던 시간의 비율이라서, SM 점유나 텐서 코어 사용과는 별개입니다.- 연산 병목인지 메모리 병목인지는 어떤 지표로 가르는가? 프로파일링 지표(텐서 활성, DRAM 활성)입니다. 지원하지 않는 GPU 에서는 서빙 지표(토큰당 시간, 배치 크기)로 간접 추정해야 합니다.
- XID 는 어디서 보는가? 커널 로그가 기본이고, 수집 목록에 필드를 추가하면 지표로도 볼 수 있습니다.
- 같은 클러스터에서 드라이버 버전이 다를 때 무엇이 문제가 되는가? CUDA 호환, 컨테이너 툴킷, 오류 동작이 달라질 수 있어 장애 조사에서 먼저 걸러야 합니다.
8. 흔한 오해
- 「메모리 온도 0 은 정상이다」: 값이 없는 것일 수 있습니다.
- 「
FB_USED + FB_FREE가 전체 메모리다」: 예약 영역이 따로 있습니다. - 「exporter 만 띄우면 모든 지표가 나온다」: GPU 군과 수집 목록에 따라 달라집니다. 이 실험 환경에서는 18개였습니다.
외부 근거: 공식 문서와 소스로 확인한 것
| 주제 | 자료와 확인한 위치 | 확인한 내용 | 이 글과의 관계 |
|---|---|---|---|
| 프로파일링 지표가 안 나오는 이유 | DCGM Feature Overview(지원 제품 표), dcgm-exporter default-counters.csv 주석과 소스(pkg/cmd/app.go, fieldIsSupported) |
프로파일링 지표는 데이터센터 Volta 이상에서만 지원. exporter 는 시작할 때 DCGM 에 프로파일링 지원을 물어 실패하면 「Not collecting DCP metrics」를 남기고 PROF 줄을 「metric not enabled」로 건너뜀 | 지지. 이 글이 본 로그 문구와 일치 |
| 소비자용 GPU 의 DCGM 기능 | 같은 표 | 소비자용 제품군에서는 필드 값 감시, 설정 관리, 헬스 체크, 작업 통계, 토폴로지가 되고 정책 알림은 Tesla 에서만, 진단은 레벨 1 만 | 지지. 「제한된 기능」 서술과 일치 |
| XID 지표가 안 나오는 이유 | dcgm-exporter 업스트림 dcp-metrics-included.csv(태그 4.5.3-4.8.2) |
DCGM_FI_DEV_XID_ERRORS 가 활성 줄이고 PROF 다섯 줄의 순번이 로그와 정확히 겹침 |
반박(원래 추정). 목록에 없어서가 아니라 값이 나오지 않은 것으로 고침 |
확인하지 못한 것
- 시계열의 시간 변화. 이 글의 값은 모두 한 시점의 스냅샷이고, 부하가 있을 때의 값은 측정하지 않았습니다.
- 메모리 온도가 0 인 원인과, 24GB급 소비자용 GPU 에서 재배치 행 지표가 빠진 정확한 규칙.
- 사용 중인
dcp-metrics-included.csv의 실행 중 내용(이미지에 셸이 없어 열지 못함. 업스트림 같은 태그 파일로 대신 확인했고, XID 값이 나오지 않는 정확한 이유는 미확인). - 지표 의미의 보충 설명이 인용하는 DCGM 문서를 이번에 다시 열어 대조하지 않았습니다.
- exporter 에 API 서버 읽기 권한을 주었을 때 파드 레이블이 실제로 붙는지.
참고 자료
- https://github.com/NVIDIA/dcgm-exporter
- https://docs.nvidia.com/datacenter/dcgm/latest/
확인한 버전과 날짜
2026-10-05 기준. dcgm-exporter 4.5.3-4.8.2, 드라이버 595.91.07 과 570.195.03.