개요

NVIDIA DCGM(Data Center GPU Manager) 은 데이터센터 환경에서 NVIDIA GPU를 관리·모니터링하기 위한 공식 도구입니다. GPU 상태 모니터링, 진단, 정책 관리, 텔레메트리 수집을 통합 제공합니다.


아키텍처

┌─────────────────────────────────────────┐
│              사용자 / 앱                 │
│   dcgmi CLI │ Python │ Go │ REST API    │
└──────────────┬──────────────────────────┘
               │
┌──────────────▼──────────────────────────┐
│           DCGM HostEngine               │
│  (nv-hostengine 데몬, 포트 5555)        │
└──────────────┬──────────────────────────┘
               │
┌──────────────▼──────────────────────────┐
│           libdcgm.so                    │
│     (핵심 DCGM 라이브러리)               │
└──────────────┬──────────────────────────┘
               │
    ┌──────────▼──────────┐
    │    NVIDIA GPU(s)    │
    │  (NVML / NVDIA SMI) │
    └─────────────────────┘

운영 모드

모드설명
Embedded앱과 같은 프로세스 내 라이브러리로 동작
Standalonenv-hostengine 데몬 별도 실행, 여러 클라이언트 접속 가능

주요 컴포넌트

컴포넌트설명
libdcgm.soC API 핵심 라이브러리
nv-hostengine백그라운드 데몬, GPU 상태 지속 수집
dcgmiCLI 관리 도구
DCGM-ExporterPrometheus 메트릭 익스포터 (Kubernetes 연동)
Python 바인딩pydcgm — 파이썬에서 DCGM API 직접 사용
Go 바인딩DCGM-Exporter 내부 구현에 사용

주요 기능

1. GPU 헬스 모니터링

  • GPU별 온도·전력·클럭·메모리·에러 실시간 추적
  • 백그라운드 헬스 체크 (수동 개입 없이 지속 감시)
  • 이상 감지 시 알림·정책 자동 실행

2. 진단 (Diagnostics)

  • GPU 하드웨어 결함 탐지
  • 수준별 진단:
    • Level 1 (빠름, ~1분): 기본 상태 점검
    • Level 2 (~10분): 메모리 대역폭, 연산 테스트
    • Level 3 (~1시간): 전체 스트레스 테스트

3. 텔레메트리 수집

  • 초당 수십 개의 GPU 메트릭 수집
  • 잡(Job) 수준 통계 — 어떤 워크로드가 GPU를 얼마나 사용하는지
  • NVLink 대역폭, PCI 처리량, SM 활성화율 등 세밀한 프로파일링

4. 정책 관리

  • GPU 클럭·전력 상한 설정
  • 온도 초과 시 자동 스로틀링
  • 엔지니어링 클러스터 전체에 일관된 설정 배포

5. GPU 그룹 관리

  • 여러 GPU를 논리적으로 그룹핑
  • 그룹 단위 명령·모니터링 적용

주요 메트릭

활용률

메트릭설명단위
DCGM_FI_DEV_GPU_UTILGPU 전체 활용률%
DCGM_FI_DEV_MEM_COPY_UTIL메모리 복사 엔진 활용률%
DCGM_FI_DEV_ENC_UTIL인코더 활용률%
DCGM_FI_DEV_DEC_UTIL디코더 활용률%
DCGM_FI_PROF_GR_ENGINE_ACTIVE그래픽 엔진 활성 비율%
DCGM_FI_PROF_SM_ACTIVESM에 워프 할당된 사이클 비율%
DCGM_FI_PROF_SM_OCCUPANCYSM 점유율 (워프 수 / 최대 워프 수)%

메모리

메트릭설명단위
DCGM_FI_DEV_FB_USED프레임버퍼(VRAM) 사용량MiB
DCGM_FI_DEV_FB_FREE프레임버퍼 여유 용량MiB
DCGM_FI_DEV_FB_TOTAL프레임버퍼 전체 용량MiB
DCGM_FI_PROF_DRAM_ACTIVEDRAM 대역폭 활성 비율%

온도 / 전력

메트릭설명단위
DCGM_FI_DEV_GPU_TEMPGPU 코어 온도°C
DCGM_FI_DEV_MEMORY_TEMP메모리 온도°C
DCGM_FI_DEV_POWER_USAGE현재 전력 소비W
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION부팅 후 누적 에너지mJ
DCGM_FI_DEV_POWER_MGMT_LIMIT전력 제한 설정값W

클럭

메트릭설명단위
DCGM_FI_DEV_SM_CLOCKSM(쉐이더) 클럭MHz
DCGM_FI_DEV_MEM_CLOCK메모리 클럭MHz

에러 / 안정성

메트릭설명
DCGM_FI_DEV_ECC_SBE_VOL_TOTALECC 단일 비트 에러 (수정 가능)
DCGM_FI_DEV_ECC_DBE_VOL_TOTALECC 이중 비트 에러 (치명적)
DCGM_FI_DEV_RETIRED_PAGES_SBESBE로 인해 은퇴된 메모리 페이지 수
DCGM_FI_DEV_XID_ERRORSXID 에러 (NVIDIA 드라이버 에러 코드)
메트릭설명
DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTALNVLink 전체 대역폭
DCGM_FI_PROF_NVLINK_TX_BYTESNVLink 송신 바이트
DCGM_FI_PROF_NVLINK_RX_BYTESNVLink 수신 바이트
DCGM_FI_PROF_PCIE_TX_BYTESPCIe 송신 바이트
DCGM_FI_PROF_PCIE_RX_BYTESPCIe 수신 바이트

DCGM-Exporter (Kubernetes 연동)

GPU 메트릭을 Prometheus 형식으로 노출하는 컨테이너. Kubernetes GPU 클러스터 모니터링 표준 도구.

배포 방식

# DaemonSet으로 모든 GPU 노드에 배포
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: dcgm-exporter
spec:
  template:
    spec:
      containers:
      - name: dcgm-exporter
        image: nvcr.io/nvidia/k8s/dcgm-exporter:latest
        ports:
        - containerPort: 9400  # Prometheus 스크랩 포트
        securityContext:
          capabilities:
            add: ["SYS_ADMIN"]

메트릭 엔드포인트

http://<node-ip>:9400/metrics

Prometheus + Grafana 스택

GPU 노드
  └─ DCGM-Exporter (포트 9400)
        │  Prometheus 스크랩
        ▼
  Prometheus
        │  쿼리
        ▼
  Grafana Dashboard
  (NVIDIA 공식 대시보드 ID: 12239)

커스텀 메트릭 설정 (csv 파일)

# /etc/dcgm-exporter/default-counters.csv
DCGM_FI_DEV_GPU_UTIL,    gauge, GPU utilization (%)
DCGM_FI_DEV_MEM_COPY_UTIL, gauge, Memory utilization (%)
DCGM_FI_DEV_FB_USED,     gauge, Framebuffer memory used (MiB)
DCGM_FI_DEV_GPU_TEMP,    gauge, GPU temperature (C)
DCGM_FI_DEV_POWER_USAGE, gauge, Power draw (W)
DCGM_FI_PROF_SM_ACTIVE,  gauge, SM active ratio

dcgmi CLI 주요 명령어

# GPU 목록 확인
dcgmi discovery -l
 
# GPU 상태 요약
dcgmi group -c mygroup -a 0,1,2,3
dcgmi health -g mygroup -c
 
# 실시간 메트릭 모니터링
dcgmi dmon -e 203,252,1002,1003,1004  # 지정 필드만
 
# 진단 실행 (Level 1)
dcgmi diag -r 1
 
# 잡 통계 시작/종료
dcgmi stats --enable
dcgmi stats --jstart 1234  # 잡 ID 1234 시작
dcgmi stats --jstop 1234
 
# 정책 설정 (온도 상한 80°C)
dcgmi policy -g mygroup --set 0,0 -t 80

설치

# Ubuntu
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
 
sudo apt-get update
sudo apt-get install -y datacenter-gpu-manager
 
# 서비스 시작
sudo systemctl enable nvidia-dcgm
sudo systemctl start nvidia-dcgm

모니터링 스택 통합

도구연동 방법
PrometheusDCGM-Exporter 스크랩
GrafanaPrometheus 데이터소스 + NVIDIA 공식 대시보드
DatadogDCGM 통합 에이전트
NetdataDCGM 플러그인
IBM Spectrum LSFDCGM 네이티브 통합
KubernetesDaemonSet + ServiceMonitor (Prometheus Operator)

관련 항목