HPC & GPU Engineering/AI Infrastructure Engineer

[HPC/GPU 클러스터 운영 Zero to Hero 41편] Slurm Exporter·DCGM Exporter 통합 모니터링 대시보드 만들기 – GPU와 스케줄러 상태를 한눈에

ygtoken 2025. 8. 12. 10:57
728x90

 

왜 통합 모니터링이 필요한가

 
HPC/GPU 클러스터 운영에서 GPU 상태와 Job 스케줄러 상태는 서로 밀접하게 연결되어 있습니다.
 

  • Slurm에서 Job이 Pending 상태로 오래 대기 → GPU 리소스 부족 또는 정책 제한 가능성
  • GPU Utilization이 낮음 → 스케줄링 정책 오류, 데이터 I/O 병목 가능성

 
따라서 Slurm ExporterDCGM Exporter 데이터를 Grafana 대시보드에서 통합 시각화하면,
Job 스케줄링 지표와 GPU 성능 지표를 한 화면에서 비교 분석할 수 있어 운영 효율성이 크게 향상됩니다.
 


 

Slurm Exporter 개요

 
Slurm Exporter는 Slurm REST API 또는 Slurm 명령어 출력을 Prometheus 포맷으로 변환하는 Exporter입니다.
 

  • 주요 메트릭
    • slurm_jobs_pending / slurm_jobs_running
    • slurm_nodes_idle / slurm_nodes_allocated
    • 파티션별 Job 수, 자원 할당량

 
설치 예시

git clone https://github.com/vpenso/prometheus-slurm-exporter.git
cd prometheus-slurm-exporter
go build
./slurm_exporter --listen-address=":8080"

 
Prometheus 설정

- job_name: 'slurm'
  static_configs:
    - targets: ['slurm-exporter:8080']

 


 

DCGM Exporter 개요

 
DCGM Exporter는 NVIDIA GPU 상태를 Prometheus 포맷으로 제공하는 Exporter입니다.
 

  • 주요 메트릭
    • DCGM_FI_DEV_GPU_UTIL (GPU 사용률 %)
    • DCGM_FI_DEV_FB_USED (메모리 사용량 MiB)
    • DCGM_FI_DEV_POWER_USAGE (전력 W)
    • DCGM_FI_DEV_TEMP_GPU (온도 °C)

 
설치 예시 (Docker)

docker run -d --gpus all --rm \
  --net=host \
  nvcr.io/nvidia/k8s/dcgm-exporter:3.1.8-1-ubuntu20.04

Prometheus 설정

- job_name: 'gpu'
  static_configs:
    - targets: ['node1:9400']

 


 

Grafana 대시보드 설계

 
1. 데이터 소스
 

  • Prometheus URL: http://prometheus:9090
  • Slurm Exporter와 DCGM Exporter 메트릭을 동일 Prometheus 인스턴스에서 수집

 
2. 주요 패널 구성

패널 이름데이터 소스주요 메트릭설명
GPU UtilizationPrometheusDCGM_FI_DEV_GPU_UTILGPU 사용률 시계열 그래프
GPU Memory UsagePrometheusDCGM_FI_DEV_FB_USEDGPU 메모리 사용량
GPU Temperature & PowerPrometheusDCGM_FI_DEV_TEMP_GPU, DCGM_FI_DEV_POWER_USAGE온도/전력
Job Queue StatusPrometheusslurm_jobs_pending, slurm_jobs_runningPending/Running Job 수
Partition UsagePrometheusslurm_nodes_allocated, slurm_nodes_idle파티션별 노드 상태
GPU per Job MappingPrometheusSlurm Job ID ↔ GPU ID 매핑Job별 GPU 점유 현황

 


 

GPU-Job 매핑 시각화

 
PromQL 예시

slurm_job_gpu_allocation{job_state="RUNNING"} * on(job_id) group_left(gpu_uuid) DCGM_FI_DEV_GPU_UTIL

 

  • Slurm에서 수집한 Job ID와 DCGM Exporter의 GPU UUID를 매핑
  • 특정 Job이 어느 GPU에서 실행되고 있는지와 GPU 사용률을 함께 표시

 


 

알림(Alert) 설정

  • GPU 온도 경고
- alert: HighGPUTemperature
  expr: DCGM_FI_DEV_TEMP_GPU > 85
  for: 2m
  labels:
    severity: warning
  annotations:
    description: "GPU 온도가 85°C 이상입니다. 노드={{ $labels.instance }}"

 

  • Job 대기 시간 경고
- alert: LongPendingJob
  expr: slurm_jobs_pending > 50
  for: 10m
  labels:
    severity: critical
  annotations:
    description: "Pending Job이 50개 이상이며 10분 이상 지속 중입니다."

 


 

운영 시 활용 시나리오

 

  1. 자원 병목 분석
    • Pending Job 증가 + GPU Idle → 스케줄링 정책 문제
  2. 성능 최적화
    • GPU Utilization 낮음 + 높은 CPU I/O Wait → 데이터 프리페치 필요
  3. 장애 예측
    • 특정 노드 GPU 온도 급상승 → 냉각 문제 사전 대응

 


 

Kubernetes 환경 통합 예시

 
Helm Chart 기반 통합 배포:

helm install monitoring grafana/loki-stack \
  --set grafana.enabled=true \
  --set prometheus.enabled=true

 

  • Slurm Exporter/ DCGM Exporter DaemonSet 구성
  • Prometheus Operator의 ServiceMonitor로 자동 수집

 


 

장점과 단점

 
장점

  • GPU 성능과 Job 스케줄링 상태를 한눈에 확인 가능
  • 자원 활용률 향상 및 병목 진단 속도 증가
  • 알림을 통한 장애 사전 예방 가능

 
단점

  • Exporter와 Prometheus, Grafana 구성 복잡
  • 대규모 클러스터에서 Prometheus 성능 튜닝 필요
  • GPU-Job 매핑 로직이 환경별 커스터마이징 요구

 


 

정리하며

Slurm Exporter와 DCGM Exporter를 통합하면 **“누가 어떤 GPU를 어떻게 쓰고 있는지”**를 실시간으로 파악할 수 있습니다.
이는 HPC/GPU 클러스터 운영에서 병목 원인 분석, 장애 예측, 정책 조정에 큰 도움을 줍니다.
운영자는 알림 규칙과 대시보드를 지속적으로 개선해 관찰 가능한 HPC 환경을 구축해야 합니다.
 
 

728x90