收集及查看 DCGM 指標


您可以將 GKE 設為將 NVIDIA Data Center GPU Manager (DCGM) 指標傳送至 Cloud Monitoring,藉此監控 GPU 使用率、效能和健康狀態。

啟用 DCGM 指標後,GKE 會安裝 DCGM-Exporter 工具、安裝 Google 代管的 GPU 驅動程式,並部署 ClusterPodMonitoring 資源,將指標傳送至 Google Cloud Managed Service for Prometheus。如果建立的新 GKE 叢集執行 1.32.1-gke.1357000 以上版本,系統會預設啟用 DCGM 指標指標套件。如要為執行舊版作業的叢集啟用 DCGM 指標收集功能,可以使用 Google Cloud 控制台、gcloud CLI 或 Terraform。

如要自訂 DCGM 指標集,或叢集不符合受管理 DCGM 指標的規定,也可以設定自行管理的 DCGM

什麼是 DCGM

NVIDIA Data Center GPU Manager (DCGM) 是 NVIDIA 提供的一組工具,可讓您管理及監控 NVIDIA GPU。DCGM 會使用所謂的 fields,公開各種可觀測的結構和計數器。每個欄位都有符號 ID 和欄位編號。 如需完整清單,請參閱「NVIDIA DCGM list of Field IDs」。

在 GKE 上啟用 DCGM 指標後,Cloud Monitoring 會自動提供支援的指標。這些指標可全面呈現 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 驅動程式。也就是說,您必須使用 defaultlatest 建立節點集區,才能使用 --gpu-driver-version
  • 如果是 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 指標。

主控台

  1. 建立 GPU 節點集區

    您必須使用「預設」或「最新」選項安裝 GPU 驅動程式。

  2. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  3. 按一下叢集名稱。

  4. 按一下「Cloud Monitoring」旁邊的

  5. 選取 SYSTEMDCGM

  6. 按一下「儲存」。

gcloud

  1. 建立 GPU 節點集區

    您必須使用 defaultlatest 做為 --gpu-driver-version

  2. 更新叢集:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus \
        --monitoring=SYSTEM,DCGM
    

    更改下列內容:

Terraform

如要使用 Terraform 設定 DCGM 指標的收集作業,請參閱 google_container_clusterTerraform 登錄檔中的 monitoring_config 區塊。如要瞭解如何搭配使用 Google Cloud 與 Terraform,請參閱「Terraform with Google Cloud」。

使用 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 裝置的索引編號 (整數)。舉例來說,如果附加 8 個 GPU,這個值可能介於 07 之間。
  • modelName:GPU 裝置型號名稱,例如 NVIDIA L4

Kubernetes 標籤:

  • container:使用 GPU 裝置的 Kubernetes 容器名稱。
  • namespace:使用 GPU 裝置的 Pod 和容器的 Kubernetes 命名空間。
  • pod:使用 GPU 裝置的 Kubernetes Pod。
PromQL 指標名稱
Cloud Monitoring 指標名稱
種類、類型、單位
受監控的資源
必要 GKE 版本
說明
DCGM_FI_DEV_FB_FREE
DCGM_FI_DEV_FB_FREE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
以 MB 為單位的可用影格緩衝區。
DCGM_FI_DEV_FB_TOTAL
DCGM_FI_DEV_FB_TOTAL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
GPU 的訊框緩衝區總量,以 MB 為單位。
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_FB_USED/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
以 MB 為單位的已用框架緩衝區。
DCGM_FI_DEV_GPU_TEMP
DCGM_FI_DEV_GPU_TEMP/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
裝置目前的溫度讀數 (以攝氏度為單位)。
DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_GPU_UTIL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
GPU 使用率 (以百分比表示)。
DCGM_FI_DEV_MEM_COPY_UTIL
DCGM_FI_DEV_MEM_COPY_UTIL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
記憶體使用率 (以百分比表示)。
DCGM_FI_DEV_MEMORY_TEMP
DCGM_FI_DEV_MEMORY_TEMP/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
裝置的記憶體溫度 (以攝氏度為單位)。
DCGM_FI_DEV_POWER_USAGE
DCGM_FI_DEV_POWER_USAGE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
裝置的耗電量 (以瓦特為單位)。
DCGM_FI_DEV_SM_CLOCK
DCGM_FI_DEV_SM_CLOCK/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
SM 時脈頻率 (以 MHz 為單位)。
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter

CUMULATIVEDOUBLE1 prometheus_target
1.30.1-gke.1204000
自上次重新載入驅動程式以來,GPU 的能源消耗量總和 (單位為毫焦耳)。
DCGM_FI_PROF_DRAM_ACTIVE
DCGM_FI_PROF_DRAM_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
裝置記憶體介面主動傳送或接收資料的週期比例。
DCGM_FI_PROF_GR_ENGINE_ACTIVE
DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
圖形引擎處於使用中狀態的時間比率。
DCGM_FI_PROF_NVLINK_RX_BYTES
DCGM_FI_PROF_NVLINK_RX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
以位元組為單位的有效 NvLink rx (讀取) 資料速率,包括標頭和酬載。
DCGM_FI_PROF_NVLINK_TX_BYTES
DCGM_FI_PROF_NVLINK_TX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
以位元組為單位的有效 NvLink tx (傳輸) 資料速率,包括標頭和酬載。
DCGM_FI_PROF_PCIE_RX_BYTES
DCGM_FI_PROF_PCIE_RX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
以位元組為單位的有效 PCIe rx (讀取) 資料速率,包括標頭和酬載。
DCGM_FI_PROF_PCIE_TX_BYTES
DCGM_FI_PROF_PCIE_TX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
以位元組為單位的有效 PCIe 傳輸資料速率,包括標頭和酬載。
DCGM_FI_PROF_PIPE_FP16_ACTIVE
DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp16 管道處於使用中狀態的週期占比。
DCGM_FI_PROF_PIPE_FP32_ACTIVE
DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp32 管道處於使用中狀態的週期占比。
DCGM_FI_PROF_PIPE_FP64_ACTIVE
DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp64 管道處於活躍狀態的週期比例。
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
任何張量管道處於使用中狀態的週期比例。
DCGM_FI_PROF_SM_ACTIVE
DCGM_FI_PROF_SM_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
SM 至少有 1 個經指派的經紗的週期比例。

為協助您瞭解如何使用這些指標,我們將指標分組如下:

運算或核心使用率

您可以透過這些指標找出使用率偏低的裝置,並調整運算或 GPU 分配,盡可能提高使用率。使用率偏低表示您可能支付了超出需求的 GPU 容量。這些指標可協助您在較少的裝置上整合運算作業,進而節省費用。

DCGM_FI_DEV_GPU_UTIL

這項指標代表 GPU 處於使用中狀態的時間占比。

預期用途: 概略瞭解 GPU 平均使用率。 這項指標與 DCGM_FI_PROF_GR_ENGINE_ACTIVE 類似,後者可能是更準確的 GPU 使用率指標。

DCGM_FI_PROF_GR_ENGINE_ACTIVE

這項指標代表每個取樣間隔的 Graphics Engine 忙碌程度。這個值是根據取樣間隔內可用的最大週期數,與平均有效週期數計算而得。舉例來說,如果在一秒的取樣間隔內有 1000 個週期可用,但平均只有 324 個週期實際處於活動狀態 (執行工作),則產生的指標值為 0.324。這大約可解讀為 (0.324 x 100) 32.4% 的使用率。

預期用量: 概略瞭解 GPU 平均使用率。如果使用率值持續偏高,表示 GPU 可能會成為瓶頸,導致系統效能問題。如果使用率值持續偏低,表示應用程式未充分運用可用的處理效能。

DCGM_FI_PROF_PIPE_FP16_ACTIVEDCGM_FI_PROF_PIPE_FP32_ACTIVEDCGM_FI_PROF_PIPE_FP64_ACTIVEDCGM_FI_PROF_PIPE_TENSOR_ACTIVE

這些指標代表任何指定 GPU 管道的活躍週期,在過往長期最大週期的占比。

預期用途:評估 GPU 中各種運算 pipeline 的使用效率。

DCGM_FI_PROF_SM_ACTIVE

這項指標代表 SM(串流多處理器) 中,至少有一個 Warp 處於使用中狀態的時間占比,為所有 SM 的平均值。舉例來說,如果 GPU 有 80 個 SM 可用,且在取樣期間有 16 個 SM 執行了 warp,則產生的 sm_active 值為 (16/80) 0.20,可解讀為 20% 的可用 SM 執行了 warp。

預期用途: 衡量 GPU 平行處理作業的使用程度。

記憶體使用率

這些指標的主要用途是偵測 GPU 裝置是否沒有足夠的應用程式記憶體。這些應用程式可能需要分配更多 GPU 容量。

DCGM_FI_DEV_FB_FREEDCGM_FI_DEV_FB_USEDDCGM_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_BYTESDCGM_FI_PROF_NVLINK_TX_BYTES

這些指標代表 NVLink 傳輸 (tx) 和接收 (rx) 的處理量,以位元組為單位。

預期用途: 追蹤 GPU 晶片之間,NVLink 連接器的負載。如果這些指標的值接近 NVLink 的可用總頻寬,且運算資源使用率指標偏低,可能表示 NVLink 是執行中應用程式的瓶頸。

DCGM_FI_PROF_PCIE_RX_BYTESDCGM_FI_PROF_PCIE_TX_BYTES

這些指標代表 PCIe 傳輸 (tx) 和接收 (rx) 的處理量,以位元組為單位。其中,tx 是指 GPU 傳輸資料,rx 則是 GPU 接收資料。

預期用途: 追蹤 CPU 和 GPU 之間,PCIe 匯流排的負載。如果這些指標的值接近 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 的總能源消耗量 (毫焦耳)。根據這項指標計算出的速率應與耗電量指標相符。

預期用量: 追蹤 GPU 用於使用者應用程式的耗電量。

GPU 效能指標

GPU 效能是指 GPU 執行運算工作的效率和效能。

DCGM_FI_DEV_MEMORY_TEMP

這項指標表示記憶體區塊的平均溫度。

預期用途: 顯示記憶體區塊的溫度,並與 GPU 溫度建立關聯。

DCGM_FI_DEV_SM_CLOCK

這項指標代表所有 SM 的平均時脈速度。這項指標是在指定時間間隔內計算得出。

預期用途: 追蹤時脈速度,偵測節流情形,並與應用程式效能建立關聯。

後續步驟