GKE가 NVIDIA Data Center GPU Manager(DCGM) 측정항목을 Cloud Monitoring으로 전송하도록 구성하여 GPU 사용률, 성능, 상태를 모니터링할 수 있습니다.
DCGM 측정항목을 사용 설정하면 GKE는 DCGM-Exporter 도구와 Google 관리 GPU 드라이버를 설치하고 ClusterPodMonitoring 리소스를 배포하여 측정항목을 Google Cloud Managed Service for Prometheus로 전송합니다. 버전 1.32.1-gke.1357000 이상을 실행하여 만든 새 GKE 클러스터의 경우 DCGM 측정항목 패키지가 기본적으로 사용 설정됩니다. 이전 버전을 실행하는 클러스터의 경우 Google Cloud 콘솔, gcloud CLI 또는 Terraform을 사용하여 DCGM 측정항목 수집을 사용 설정할 수 있습니다.
DCGM 측정항목 집합을 맞춤설정하거나 관리형 DCGM 측정항목의 요구사항을 충족하지 않는 클러스터가 있는 경우 자체 관리형 DCGM을 구성할 수도 있습니다.
DCGM 소개
DCGM, 즉 NVIDIA의 Data Center GPU Manager는 NVIDIA GPU를 관리하고 모니터링할 수 있는 NVIDIA의 도구 모음입니다. DCGM은 일명 fields
를 사용하여 다양한 관측 가능성 구조와 카운터를 노출합니다. 각 필드에는 기호 식별자와 필드 번호가 있습니다.
NVIDIA DCGM 필드 ID 목록에서 전체 목록을 확인할 수 있습니다.
GKE에서 DCGM 측정항목을 사용 설정하면 지원되는 측정항목을 Cloud Monitoring에서 자동으로 사용할 수 있습니다. 이러한 측정항목은 GPU 사용률, 성능, 상태를 종합적으로 보여줍니다.
- GPU 사용률 측정항목은 모니터링되는 GPU의 사용 수준과 GPU가 작업 처리에 효과적으로 사용되는지를 나타냅니다. 여기에는 핵심 처리, 메모리, I/O, 전력 사용량 관련 측정항목이 포함됩니다.
- GPU 성능 측정항목은 GPU가 계산 태스크를 얼마나 효과적이고 효율적으로 수행할 수 있는지를 나타냅니다. 여기에는 클럭 속도 및 온도 측정항목이 포함됩니다.
- NVlink 및 PCIe와 같은 GPU I/O 측정항목은 데이터 전송 대역폭을 측정합니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화하세요. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
NVIDIA Data Center GPU Manager(DCGM) 측정항목 요구사항
NVIDIA Data Center GPU Manager(DCGM) 측정항목을 수집하려면 GKE 클러스터가 다음 요구사항을 충족해야 합니다.
- 클러스터는 GKE 버전 1.30.1-gke.1204000 이상을 실행 중이어야 합니다.
- 시스템 측정항목 수집을 사용 설정해야 합니다.
- Google Cloud Managed Service for Prometheus 관리형 수집이 사용 설정되어 있어야 합니다.
- 노드 풀이 GKE 관리형 GPU 드라이버를 실행 중이어야 합니다. 즉,
--gpu-driver-version
의 경우default
또는latest
를 사용하여 노드 풀을 만들어야 합니다. - GKE 버전 1.32.0-gke.1764000 이상의 경우 프로파일링 측정항목이 모든 GKE 지원 GPU 유형에 대해 수집됩니다. 이전 GKE 버전의 경우 프로파일링 측정항목은 NVIDIA H100 80GB GPU에 대해서만 수집됩니다.
제한사항
자체 배포형 NVIDIA Data Center GPU Manager(DCGM) 측정항목 패키지를 실행하는 경우 관리형 NVIDIA Data Center GPU Manager(DCGM) 측정항목을 사용 설정하기 전에 수집을 중지해야 합니다. 그렇지 않으면 측정항목이 중복되거나 잘못될 수 있습니다.
기본 매니페스트 및 컨테이너 이미지를 포함한 관리형 DCGM 측정항목은 GKE 클러스터에서만 작동하도록 설계되었습니다. 관리형 DCGM 측정항목을 단독으로 사용하거나 GKE 외부에서 실행하지 마세요.
DCGM 측정항목 수집 구성
Google Cloud 콘솔, gcloud CLI 또는 Terraform을 사용하여 GKE가 기존 클러스터의 DCGM 측정항목을 수집하도록 할 수 있습니다.
콘솔
-
GPU 드라이버 설치에는 기본값 또는 최신을 사용해야 합니다.
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 이름을 클릭합니다.
Cloud Monitoring 옆에 있는 edit을 클릭합니다.
SYSTEM
과DCGM
을 선택합니다.저장을 클릭합니다.
gcloud
GPU 노드 풀을 만듭니다.
--gpu-driver-version
에는default
또는latest
를 사용해야 합니다.클러스터를 업데이트합니다.
gcloud container clusters update CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --enable-managed-prometheus \ --monitoring=SYSTEM,DCGM
다음을 바꿉니다.
CLUSTER_NAME
: 기존 클러스터의 이름입니다.COMPUTE_LOCATION
: 클러스터의 Compute Engine 위치입니다.
Terraform
Terraform을 사용하여 DCGM 측정항목 수집을 구성하려면 google_container_cluster
용 Terraform 레지스트리에서 monitoring_config
블록을 참조하세요.
Terraform과 함께 Google Cloud 를 사용하는 방법에 관한 일반적인 내용은 Google Cloud에서 Terraform을 참고하세요.
DCGM 측정항목 사용
Google Cloud 콘솔의 대시보드를 사용하거나 클러스터 개요 및 클러스터 세부정보 페이지에서 직접 DCGM 측정항목을 볼 수 있습니다. 자세한 내용은 관측 가능성 측정항목 보기를 참조하세요.
Grafana DCGM 측정항목 대시보드를 사용하여 측정항목을 볼 수 있습니다. 자세한 내용은 Grafana를 사용하여 쿼리를 참조하세요. 오류가 발생하면 API 호환성을 참조하세요.
가격 책정
DCGM 측정항목은 Google Cloud Managed Service for Prometheus를 사용하여 측정항목을 Cloud Monitoring에 로드합니다. Cloud Monitoring은 수집된 샘플의 수를 기준으로 이러한 측정항목의 수집에 대한 요금을 청구합니다. 하지만 이러한 측정항목은 GKE Enterprise 버전이 사용 설정된 프로젝트에 속한 등록된 클러스터에 대해 무료로 제공됩니다.
자세한 내용은 Cloud Monitoring 가격 책정을 참조하세요.
할당량
DCGM 측정항목은 Cloud Monitoring API의 분당 시계열 수집 요청 할당량을 사용합니다. 측정항목 패키지를 사용 설정하기 전에 해당 할당량의 최근 최고 사용량을 확인하세요. 동일한 프로젝트에 클러스터가 많거나 이미 할당량 한도에 도달한 경우 관측 가능성 패키지를 사용 설정하기 전에 할당량 한도 상향 조정을 요청할 수 있습니다.
DCGM 측정항목
이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/
프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.
prometheus_target
모니터링 리소스의 라벨과 함께 GKE에서 수집된 모든 DCGM 측정항목에는 다음 라벨이 연결됩니다.
GPU 라벨:
UUID
: GPU 기기 UUID입니다.device
: GPU 기기 이름-
gpu
: 노드에 있는 GPU 기기의 색인 번호(정수). 예를 들어 GPU가 8개 연결되어 있으면 이 값의 범위는0
~7
입니다. modelName
: GPU 기기 모델의 이름(예:NVIDIA L4
)
Kubernetes 라벨:
container
: GPU 기기를 사용하는 Kubernetes 컨테이너의 이름-
namespace
: GPU 기기를 사용하는 포드 및 컨테이너의 Kubernetes 네임스페이스 pod
: GPU 기기를 사용하는 Kubernetes 포드
PromQL 측정항목 이름 Cloud Monitoring 측정항목 이름 |
|
---|---|
종류, 유형, 단위
모니터링 리소스 필수 GKE 버전 |
설명 |
DCGM_FI_DEV_FB_FREE DCGM_FI_DEV_FB_FREE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
사용 가능한 프레임 버퍼(MB)입니다. |
DCGM_FI_DEV_FB_TOTAL DCGM_FI_DEV_FB_TOTAL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
GPU의 총 프레임 버퍼(MB)입니다. |
DCGM_FI_DEV_FB_USED DCGM_FI_DEV_FB_USED/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
사용된 프레임 버퍼(MB)입니다. |
DCGM_FI_DEV_GPU_TEMP DCGM_FI_DEV_GPU_TEMP/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
기기의 현재 온도 판독값(°C)입니다. |
DCGM_FI_DEV_GPU_UTIL DCGM_FI_DEV_GPU_UTIL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
GPU 사용률(%)입니다. |
DCGM_FI_DEV_MEM_COPY_UTIL DCGM_FI_DEV_MEM_COPY_UTIL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
메모리 사용률(%)입니다. |
DCGM_FI_DEV_MEMORY_TEMP DCGM_FI_DEV_MEMORY_TEMP/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
기기의 메모리 온도(°C)입니다. |
DCGM_FI_DEV_POWER_USAGE DCGM_FI_DEV_POWER_USAGE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
기기의 전원 사용량(와트)입니다. |
DCGM_FI_DEV_SM_CLOCK DCGM_FI_DEV_SM_CLOCK/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
SM 클럭 주파수(MHz)입니다. |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter |
|
CUMULATIVE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
드라이버가 마지막으로 새로고침된 이후 GPU의 총 에너지 소비량(mJ)입니다. |
DCGM_FI_PROF_DRAM_ACTIVE DCGM_FI_PROF_DRAM_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
기기 메모리 인터페이스가 데이터를 송수신하는 활성 상태인 주기의 비율입니다. |
DCGM_FI_PROF_GR_ENGINE_ACTIVE DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
그래픽 엔진이 활성 상태인 시간의 비율입니다. |
DCGM_FI_PROF_NVLINK_RX_BYTES DCGM_FI_PROF_NVLINK_RX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
헤더와 페이로드를 모두 포함한 활성 NvLink rx(읽기) 데이터의 비율(바이트)입니다. |
DCGM_FI_PROF_NVLINK_TX_BYTES DCGM_FI_PROF_NVLINK_TX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
헤더와 페이로드를 모두 포함한 활성 NvLink tx(전송) 데이터의 비율(바이트)입니다. |
DCGM_FI_PROF_PCIE_RX_BYTES DCGM_FI_PROF_PCIE_RX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
헤더와 페이로드를 모두 포함한 활성 PCIe rx(읽기) 데이터의 비율(바이트)입니다. |
DCGM_FI_PROF_PCIE_TX_BYTES DCGM_FI_PROF_PCIE_TX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
헤더와 페이로드를 모두 포함한 활성 PCIe tx(전송) 데이터의 비율(바이트)입니다. |
DCGM_FI_PROF_PIPE_FP16_ACTIVE DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
fp16 파이프가 활성 상태인 주기의 비율입니다. |
DCGM_FI_PROF_PIPE_FP32_ACTIVE DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
fp32 파이프가 활성 상태인 주기의 비율입니다. |
DCGM_FI_PROF_PIPE_FP64_ACTIVE DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
fp64 파이프가 활성 상태인 주기의 비율입니다. |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
텐서 파이프가 활성 상태인 주기의 비율입니다. |
DCGM_FI_PROF_SM_ACTIVE DCGM_FI_PROF_SM_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
SM에 할당된 워프가 1개 이상인 주기의 비율입니다. |
이러한 측정항목의 사용 방법을 이해하는 데 도움이 되도록 다음과 같이 그룹화했습니다.
컴퓨팅 또는 코어 사용률
이러한 측정항목을 사용하면 사용률이 낮은 기기를 식별하고 계산 또는 GPU 할당을 조정하여 사용률을 최적화할 수 있습니다. 사용률이 낮다는 것은 필요 이상의 GPU 용량에 대한 비용을 지불하고 있을 수 있다는 뜻입니다. 이러한 측정항목을 사용하면 더 적은 수의 기기에서 계산을 통합하여 비용을 절감할 수 있습니다.
DCGM_FI_DEV_GPU_UTIL
이 측정항목은 GPU가 활성 상태였던 시간의 비율을 나타냅니다.
예상 사용량: 평균 GPU 사용률에 대한 개요를 제공합니다. 이 측정항목은 GPU 사용률에 대한 보다 정확한 측정항목이 될 수 있는 DCGM_FI_PROF_GR_ENGINE_ACTIVE와 유사합니다.
DCGM_FI_PROF_GR_ENGINE_ACTIVE
이 측정항목은 각 샘플링 간격 동안 그래픽 엔진이 얼마나 바쁘게 작동하고 있는지 나타냅니다. 이 값은 샘플링 간격 동안 사용 가능한 최대 사이클 대비 활성 사이클의 평균 수를 비교하여 파생됩니다. 예를 들어 1초 샘플링 간격 동안 1,000개의 사이클을 사용할 수 있었고 평균 324개의 사이클이 실제로 활성 상태(작업 실행)였다면 결과 측정항목 값은 0.324가 됩니다. 이는 대략 (0.324 x 100) 32.4%의 사용률로 해석할 수 있습니다.
예상 사용량: 평균 GPU 사용률에 대한 개요를 제공합니다. 지속적으로 높은 사용률 값은 GPU에서 시스템 성능 문제를 일으키는 병목 현상일 수 있음을 나타냅니다. 사용률 값이 지속적으로 낮으면 애플리케이션이 사용 가능한 처리 성능을 완전히 사용하지 않고 있음을 나타냅니다.
DCGM_FI_PROF_PIPE_FP16_ACTIVE
, DCGM_FI_PROF_PIPE_FP32_ACTIVE
,
DCGM_FI_PROF_PIPE_FP64_ACTIVE
, DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
이러한 측정항목은 특정 GPU 파이프가 최대 지속 경과 주기 동안 활성화되는 주기의 비율을 나타냅니다.
예상 사용량: GPU의 다양한 컴퓨팅 파이프라인이 얼마나 효과적으로 사용되는지 측정합니다.
DCGM_FI_PROF_SM_ACTIVE
이 측정항목은 SM(스트리밍 멀티 프로세서)에서 하나 이상의 워프가 활성 상태였던 시간의 비율로, 모든 SM의 평균입니다. 예를 들어 GPU에 사용 가능한 SM이 80개 있고 샘플링 기간 동안 16개의 SM이 워프를 실행하고 있었다면 결과 sm_active
값은 (16/80) 0.20이 되며, 이는 사용 가능한 SM의 20%가 워프를 실행한 것으로 해석할 수 있습니다.
예상 사용량: GPU 병렬 처리가 어떻게 사용되는지 측정합니다.
메모리 사용률
이러한 측정항목의 주요 용도는 GPU 기기에 애플리케이션에 충분한 메모리가 없는 경우를 감지하는 것입니다. 이러한 애플리케이션은 더 많은 GPU 용량을 할당함으로써 이점을 얻을 수 있습니다.
DCGM_FI_DEV_FB_FREE
, DCGM_FI_DEV_FB_USED
, DCGM_FI_DEV_FB_TOTAL
이 측정항목은 GPU의 메모리인 프레임 버퍼 메모리에 관한 것입니다. 측정항목은 사용 가능한 메모리, 사용된 메모리를 보고하며 총합을 합산합니다. 사용 가능한 총 메모리도 확인할 수 있습니다.
예상 사용량: GPU 메모리 사용 패턴을 확인합니다. 이를 통해 실제 GPU 메모리 사용량을 예상 사용량의 상관관계를 파악하여 애플리케이션의 메모리 효율성을 확인할 수 있습니다.
DCGM_FI_DEV_MEM_COPY_UTIL
이 측정항목은 전역(기기) 메모리가 읽거나 쓰여진 지난 샘플 기간 동안의 시간 비율을 나타냅니다.
예상 사용량: GPU 메모리와의 데이터 전송 패턴을 결정합니다. 이 측정항목 값이 크고 컴퓨팅 사용률 측정항목의 값이 낮다면 실행 중인 애플리케이션에서 메모리 전송으로 인해 병목 현상이 있음을 나타낼 수 있습니다.
DCGM_FI_PROF_DRAM_ACTIVE
이 측정항목은 GPU 메모리 인터페이스가 데이터를 전송하거나 수신하는 주기의 비율을 나타냅니다. 여기에는 SM에서 실행되는 스레드의 로드 및 저장뿐만 아니라 GPU 메모리와의 메모리 사본이 포함됩니다. 값이 클수록 메모리 트래픽 수준이 높음을 나타냅니다.
예상 사용량: 이 측정항목은 DCGM_FI_DEV_MEM_COPY_UTIL
측정항목과 유사하며 이 측정항목이 더 정확할 수 있습니다.
I/O 사용률
다음 측정항목은 GPU와 호스트 간의 데이터 전송 사용량 또는 여러 GPU 기기 간의 데이터 전송 사용량에 대한 유용한 정보를 제공합니다. 이러한 측정항목을 사용하는 한 가지 방법은 애플리케이션이 상호 연결에 과부하를 일으키는 시점을 감지하는 것입니다. 이러한 전송의 내재된 급등으로 인해 상호연결 동작을 더 세부적으로 파악하려면 더 높은 해상도의 데이터(예: 분포)를 살펴보는 것이 좋습니다.
DCGM_FI_PROF_NVLINK_RX_BYTES
, DCGM_FI_PROF_NVLINK_TX_BYTES
이 측정항목은 바이트 단위로 NVLink 전송(tx) 및 수신(rx) 처리량을 나타냅니다.
예상 사용: NVLink 커넥터(GPU 칩 간)의 부하를 추적합니다. 이러한 측정항목의 값이 사용 가능한 총 NVLink 대역폭에 근접하고 컴퓨팅 사용률 측정항목이 낮다면 실행 중인 애플리케이션에서 NVLink가 병목 현상을 일으키고 있음을 나타낼 수 있습니다.
DCGM_FI_PROF_PCIE_RX_BYTES
, DCGM_FI_PROF_PCIE_TX_BYTES
이 측정항목은 PCIe 전송(tx) 및 수신(rx) 처리량을 바이트 단위로 나타내며, 여기서 tx는 데이터를 전송하는 GPU, rx는 데이터를 수신하는 GPU입니다.
예상 사용량: PCIe 버스(CPU와 GPU 간)의 부하를 추적합니다. 이러한 측정항목의 값이 PCIe 버스의 총 대역폭에 근접하고 컴퓨팅 사용률 측정항목이 낮다면 실행 중인 애플리케이션에서 PCIe 버스가 병목 현상을 일으키고 있음을 나타낼 수 있습니다.
전력 사용률
다음 측정항목은 GPU 전력 사용률에 대한 유용한 정보를 제공하며, 경우에 따라 워크로드 성능과 효율성에 중요한 역할을 담당합니다.
DCGM_FI_DEV_GPU_TEMP
이 측정항목은 모든 GPU 코어의 평균 온도를 나타냅니다.
예상 사용량: GPU가 과열에 가까워지는 시점을 추적하여 주로 클럭 제한과 연관시킵니다. 이 측정항목을 사용하여 고급 애플리케이션의 부하를 줄이기 위해 과열되기 쉬운 GPU를 식별할 수도 있습니다.
DCGM_FI_DEV_POWER_USAGE
이 측정항목은 GPU 전력 소비량(와트)을 나타냅니다. 전력 사용량을 GPU 사용 측정항목으로 추적하는 것이 좋습니다. NVIDIA GPU는 수행하는 작업량에 따라 엔진 클럭을 조정합니다. 클럭 속도(및 사용률)가 증가하면 전력 소비도 증가합니다.
예상 사용량: GPU가 사용자 애플리케이션에 사용하는 전력량을 추적합니다.
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
이 측정항목은 드라이버가 마지막으로 새로고침된 후의 총 GPU 에너지 소비량(mJ)을 나타냅니다. 이 측정항목을 기준으로 계산된 비율은 전력 소비 측정항목과 일치해야 합니다.
예상 사용량: GPU가 사용자 애플리케이션에 사용하는 전력량을 추적합니다.
GPU 성능 측정항목
GPU 성능은 GPU가 계산 태스크를 얼마나 효과적이고 효율적으로 수행할 수 있는지 나타냅니다.
DCGM_FI_DEV_MEMORY_TEMP
이 측정항목은 메모리 블록의 평균 온도를 나타냅니다.
예상 사용: 메모리 블록의 온도를 표시하고 GPU 온도와 상관관계를 파악합니다.
DCGM_FI_DEV_SM_CLOCK
이 측정항목은 모든 SM의 평균 클럭 속도를 나타냅니다. 이 측정항목은 지정된 시간 간격에 대해 계산됩니다.
예상 사용량: 클럭 속도를 추적하여 제한을 감지하고 애플리케이션 성능과의 상관관계를 파악합니다.
다음 단계
- 관측 가능성 측정항목 보기 방법 알아보기