GPU監控2.0基於Exporter+Prometheus+Grafana體系打造更為豐富的GPU可觀性情境,支援您基於Container Service開發的GPU Exporter監控指標構建Grafana大盤。本文介紹GPU監控2.0指標的詳細資料。
指標說明
GPU監控2.0使用的GPU Exporter在相容開源DCGM Exporter提供的監控指標的基礎上,根據某些業務情境,增加了自訂指標。關於DCGM Exporter的更多資訊,請參見DCGM Exporter。
計費說明
GPU監控使用自訂指標會引起額外的費用。
為避免產生額外的費用,建議在啟用此功能前,仔細閱讀阿里雲Prometheus的計費概述,瞭解自訂指標的收費策略。費用將根據您的叢集規模和應用數量等因素產生變動。您可以通過資源消耗統計功能,監控和管理您的資源使用方式。
DCGM支援的指標
利用率(Utilization)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_GPU_UTIL | Gauge | % | 表示GPU利用率,即在一個周期時間內(1s或1/6s,根據GPU產品而定),一個或多個核函數處於Active的時間。 該指標僅能夠展示有核函數在用的GPU資源,但無法展示具體的使用方式。 |
DCGM_FI_DEV_MEM_COPY_UTIL | Gauge | % | 表示記憶體頻寬利用率。 以英偉達GPU V100為例,其最大記憶體頻寬為900 GB/sec,如果當前的記憶體頻寬為450 GB/sec,則記憶體頻寬利用率為50%。 |
DCGM_FI_DEV_ENC_UTIL | Gauge | % | 表示編碼器利用率。 |
DCGM_FI_DEV_DEC_UTIL | Gauge | % | 表示解碼器利用率。 |
記憶體(Memory)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_FB_FREE | Gauge | MiB | 表示幀緩衝(Framebuffer Memory)剩餘數。 說明 幀緩衝一般也被稱為顯存。 |
DCGM_FI_DEV_FB_USED | Gauge | MiB | 表示幀緩衝已使用數。 該值與nvidia-smi命令中Memory-Usage的已使用值對應。 |
剖析(Profiling)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_PROF_GR_ENGINE_ACTIVE | Gauge | % | 表示在一個時間間隔內,Graphics或Compute引擎處於Active的時間佔比。 該值表示所有Graphics和Compute引擎的平均值。 Graphics或Compute引擎處於Active是指Graphics或Compute Context綁定到線程,並且Graphics或Compute Context處於Busy狀態。 |
DCGM_FI_PROF_SM_ACTIVE | Gauge | % | 表示在一個時間間隔內,至少一個線程束在一個SM(Streaming Multiprocessor)上處於Active的時間佔比。 該值表示所有SM的平均值,且該值對每個塊的線程數不敏感。 線程束處於Active是指一個線程束被調度且分配資源後的狀態,可能是在Computing、也可能是非Computing狀態(例如等待記憶體請求)。 該值小於0.5表示未高效利用GPU,大於0.8是必要的。 假設一個GPU有N個SM:
|
DCGM_FI_PROF_SM_OCCUPANCY | Gauge | % | 表示在一個時間間隔內,駐留在SM上的線程束與該SM最大可駐留線程束的比例。 該值表示一個時間間隔內的所有SM的平均值。 佔用率越高不代表GPU使用率越高。只有在GPU記憶體頻寬受限的工作負載(DCGM_FI_PROF_DRAM_ACTIVE)情況下,更高的佔用率表示更有效GPU使用率。 |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE | Gauge | % | 表示Tensor(HMMA/IMMA) Pipe處於Active狀態的周期分數。 該值表示一個時間間隔內的平均值,而不是瞬時值。 較高的值表示Tensor Cores的利用率較高。 該值為1(100%)表示在整個時間間隔內每隔一個指令周期發出一個Tensor指令(兩個周期完成一條指令)。 假設該值為0.2(20%),可能有如下情況:
|
DCGM_FI_PROF_PIPE_FP64_ACTIVE | Gauge | % | 表示FP64(雙精確度)Pipe處於Active狀態的周期分數。 該值表示一個時間間隔內的平均值,而不是瞬時值。 較高的值代表FP64 Cores有較高的利用率。 該值為 1(100%)表示在整個時間間隔內上每四個周期(以Volta類型卡為例)執行一次FP64指令。 假設該值為0.2(20%),可能有如下情況:
|
DCGM_FI_PROF_PIPE_FP32_ACTIVE | Gauge | % | 表示乘加操作FMA(Fused Multiply-Add)管道處於Active的周期分數,乘加操作包括FP32(單精確度)和整數。 該值表示一個時間間隔內的平均值,而不是瞬時值。 較高的值代表FP32 Cores有較高的利用率。 該值為1(100%)表示在整個時間間隔內上每兩個周期(Volta類型卡為例)執行一次FP32指令。 假設該值為0.2(20%),可能有如下情況:
|
DCGM_FI_PROF_PIPE_FP16_ACTIVE | Gauge | % | 表示FP16(半精度)管道處於Active的周期分數。 該值表示一個時間間隔內的平均值,而不是瞬時值。 較高的值代表FP16 Cores有較高的利用率。 該值為 1 (100%) 表示在整個時間間隔內上每兩個周期(Volta類型卡為例)執行一次FP16指令。 假設該值為0.2(20%),可能有如下情況:
|
DCGM_FI_PROF_DRAM_ACTIVE | Gauge | % | 表示記憶體頻寬利用率(Memory BW Utilization)將資料發送到裝置記憶體或從裝置記憶體接收資料的周期分數。 該值表示時間間隔內的平均值,而不是瞬時值。 較高的值表示裝置記憶體的利用率較高。 該值為1(100%)表示在整個時間間隔內的每個周期執行一條 DRAM 指令(實際上,峰值約為 0.8 (80%) 是可實現的最大值)。 假設該值為0.2(20%),表示20%的周期在時間間隔內讀取或寫入裝置記憶體。 |
| Counter | B/s | 表示通過PCIe匯流排傳輸/接收的資料速率,包括協議標題和資料承載。 該值表示一個時間間隔內的平均值,而不是瞬時值。 該速率在時間間隔內平均。例如,在1秒內傳輸1 GB資料,則無論以恒定速率還是突發傳輸資料,速率都是1 GB/s。理論上的最大PCIe Gen3頻寬為每通道985 MB/s。 |
| Counter | B/s | 表示通過NVLink傳輸/接收的資料速率,不包括協議標題。 該值表示一個時間間隔內的平均值,而不是瞬時值。 該速率在時間間隔內平均。例如,在1秒內傳輸1 GB資料,則無論以恒定速率還是突發傳輸資料,速率都是1 GB/s。理論上,最大NVLink Gen2頻寬為每個方向每個鏈路25 GB/s。 |
頻率(Clock)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_SM_CLOCK | Gauge | MHz | 表示SM時鐘頻率。 |
DCGM_FI_DEV_MEM_CLOCK | Gauge | MHz | 表示記憶體時鐘頻率。 |
DCGM_FI_DEV_APP_SM_CLOCK | Gauge | MHz | 表示SM應用時鐘頻率。 |
DCGM_FI_DEV_APP_MEM_CLOCK | Gauge | MHz | 表示記憶體應用時鐘頻率。 |
DCGM_FI_DEV_CLOCK_THROTTLE_REASONS | Gauge | MHz | 表示時鐘慢下來的原因。 |
XID錯誤&違規行為(XidError & Violations)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_XID_ERRORS | Gauge | - | 表示一段時間內,最後發生的XID錯誤號碼。 |
DCGM_FI_DEV_POWER_VIOLATION | Counter | μs(微秒) | 表示因功率上限而導致的違規,該值為違規的時間。 |
DCGM_FI_DEV_THERMAL_VIOLATION | Counter | μs(微秒) | 表示由於熱限制導致的違規,該值為違規的時間。 |
DCGM_FI_DEV_SYNC_BOOST_VIOLATION | Counter | μs(微秒) | 表示由於同步提升限制而導致的違規,該值為違規的時間。 |
DCGM_FI_DEV_BOARD_LIMIT_VIOLATION | Counter | μs(微秒) | 表示由於電路板限制而導致的違規,該值為違規的時間。 |
DCGM_FI_DEV_LOW_UTIL_VIOLATION | Counter | μs(微秒) | 表示低利用率限制導致的違規,該值為違規的時間。 |
DCGM_FI_DEV_RELIABILITY_VIOLATION | Counter | μs(微秒) | 表示電路板可靠性限制導致違規,該值為違規的時間。 |
BAR1
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_BAR1_USED | Gauge | MB | 表示已使用的BAR1。 |
DCGM_FI_DEV_BAR1_FREE | Gauge | MB | 表示剩餘的BAR1。 |
溫度&功率(Temperature & Power)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_MEMORY_TEMP | Gauge | C | 表示記憶體溫度。 |
DCGM_FI_DEV_GPU_TEMP | Gauge | C | 表示GPU溫度。 |
DCGM_FI_DEV_POWER_USAGE | Gauge | W | 表示功率。 |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION | Counter | J | 表示從驅動載入開始,已消耗的能量。 |
停用的記憶體頁面(Retired Pages)
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_FI_DEV_RETIRED_SBE | Gauge | - | 表示由單bit錯誤而停用的頁面。 |
DCGM_FI_DEV_RETIRED_DBE | Gauge | - | 表示用雙bit錯誤而停用的頁面。 |
自訂指標
指標名稱 | 指標類型 | 單位 | 說明 |
DCGM_CUSTOM_PROCESS_SM_UTIL | Gauge | % | 表示GPU線程的SM利用率。 |
DCGM_CUSTOM_PROCESS_MEM_COPY_UTIL | Gauge | % | 表示GPU線程的記憶體拷貝利用率。 |
DCGM_CUSTOM_PROCESS_ENCODE_UTIL | Gauge | % | 表示GPU線程的編碼器利用率。 |
DCGM_CUSTOM_PROCESS_DECODE_UTIL | Gauge | % | 表示GPU線程的解碼器利用率。 |
DCGM_CUSTOM_PROCESS_MEM_USED | Gauge | MiB | 表示GPU線程當前使用的顯存。 |
DCGM_CUSTOM_CONTAINER_MEM_ALLOCATED | Gauge | MiB | 表示為容器分配顯存。 |
DCGM_CUSTOM_CONTAINER_CP_ALLOCATED | Gauge | - | 表示為容器分配的一張GPU卡上部分算力占該GPU卡總算力的比例。值的區間為[0,1]。 獨佔GPU或者共用GPU只申請顯存時,該指標的值為0,表示不限制算力。 假設GPU卡有100算力,為一個容器分配30算力,那麼為該容器分配的算力比例為30/100=0.3。 |
DCGM_CUSTOM_DEV_FB_TOTAL | Gauge | MiB | 表示GPU卡的總顯存。 |
DCGM_CUSTOM_DEV_FB_ALLOCATED | Gauge | - | 表示GPU卡已指派顯存佔總顯存的比例,值的區間為[0,1]。 |
DCGM_CUSTOM_ALLOCATE_MODE | Gauge | - | 表示節點啟動並執行模式,有如下幾種:
|
將被棄用的指標
將被棄用的指標 | 替換的新指標 | 說明 |
nvidia_gpu_temperature_celsius | DCGM_FI_DEV_GPU_TEMP | |
nvidia_gpu_power_usage_milliwatts | DCGM_FI_DEV_POWER_USAGE | |
nvidia_gpu_sharing_memory | DCGM_CUSTOM_DEV_FB_ALLOCATED * DCGM_CUSTOM_DEV_FB_TOTAL | 每一張GPU裝置顯存被申請的比例 * 該裝置顯存的總量 = 該裝置被申請的顯存數 |
nvidia_gpu_memory_used_bytes | DCGM_FI_DEV_FB_USED | |
nvidia_gpu_memory_total_bytes | DCGM_CUSTOM_DEV_FB_TOTAL | |
nvidia_gpu_memory_allocated_bytes | DCGM_CUSTOM_DEV_FB_ALLOCATED * DCGM_CUSTOM_DEV_FB_TOTAL | 每一張GPU裝置顯存被申請的比例 * 該裝置顯存的總量 = 該裝置被申請的顯存數 |
nvidia_gpu_duty_cycle | DCGM_FI_DEV_GPU_UTIL | |
nvidia_gpu_allocated_num_devices | sum(DCGM_CUSTOM_DEV_FB_ALLOCATED) | sum(節點上每一張GPU裝置顯存被申請的比例) = 該節點上被申請的總卡數 |
nvidia_gpu_num_devices | DCGM_FI_DEV_COUNT |