您可以將 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 驅動程式。也就是說,您必須使用
default
或latest
建立節點集區,才能使用--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 指標。
主控台
-
您必須使用「預設」或「最新」選項安裝 GPU 驅動程式。
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下叢集名稱。
按一下「Cloud Monitoring」旁邊的 edit。
選取
SYSTEM
和DCGM
。按一下「儲存」。
gcloud
建立 GPU 節點集區。
您必須使用
default
或latest
做為--gpu-driver-version
。更新叢集:
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
區塊。如要瞭解如何搭配使用 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 裝置 UUIDdevice
:GPU 裝置名稱。-
gpu
:節點上 GPU 裝置的索引編號 (整數)。舉例來說,如果附加 8 個 GPU,這個值可能介於0
到7
之間。 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 |
|
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 |
裝置目前的溫度讀數 (以攝氏度為單位)。 |
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 |
裝置的記憶體溫度 (以攝氏度為單位)。 |
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 的能源消耗量總和 (單位為毫焦耳)。 |
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 傳輸資料速率,包括標頭和酬載。 |
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 平均使用率。 這項指標與 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_ACTIVE
、DCGM_FI_PROF_PIPE_FP32_ACTIVE
、
DCGM_FI_PROF_PIPE_FP64_ACTIVE
、DCGM_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_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) 的處理量,以位元組為單位。
預期用途: 追蹤 GPU 晶片之間,NVLink 連接器的負載。如果這些指標的值接近 NVLink 的可用總頻寬,且運算資源使用率指標偏低,可能表示 NVLink 是執行中應用程式的瓶頸。
DCGM_FI_PROF_PCIE_RX_BYTES
、DCGM_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 的平均時脈速度。這項指標是在指定時間間隔內計算得出。
預期用途: 追蹤時脈速度,偵測節流情形,並與應用程式效能建立關聯。
後續步驟
- 瞭解如何查看觀測指標。