帮你快速理解、总结文档立即下载

GPU 监控指标获取

最近更新时间:2026-09-20 15:01:02
本文档已由 AI 辅助审校
我的收藏

组件介绍

TKE 开发了 gpu-exporter 组件,用于获取 GPU 相关 Pod /容器维度的监控指标。主要包含以下内容:
GPU 卡利用率
Pod / 容器 GPU 资源利用率
GPU 硬件相关的指标

部署方式

TKE gpu-exporter 会随 qGPU 或 nvidia-gpu 组件自动安装,不需要单独部署:
qGPU 组件 - kube-system 命名空间下名称为 elastic-gpu-exporter 的 DaemonSet。
nvidia-gpu 组件 - kube-system 命名空间下名称为 nvidia-gpu-exporter 的 DaemonSet。

确认运行状态

安装 qGPU 或 nvidia-gpu 组件后,可以通过 Kubernetes 命令行工具 kubectl 从本地客户端机器 连接 TKE 集群,查看工作负载和 Pod。
以 qGPU 为例,查看 kube-system 下 elastic-gpu-exporter 的状态:
kubectl get daemonset elastic-gpu-exporter -n kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
elastic-gpu-exporter 1 1 1 1 1 <none> 3m36s
符合条件的节点上会有一个运行的 elastic-gpu-exporter 的 Pod:
kubectl get pod
NAME READY STATUS RESTARTS AGE
elastic-gpu-exporter-dblqm 1/1 Running 0 6s

获取监控指标

elastic-gpu-exporter / nvidia-gpu-exporter 的服务运行所在节点 5678 端口,监控指标会输出到 /metrics 路径下,因此也可以通过如下命令获取监控指标:
$ curl NodeIP:5678/metrics

GPU 卡相关指标

指标名称
说明
单位
gpu_core_usage
该卡上所有 GPU 进程的 SM 利用率之和。单卡满负荷时约为 100,多进程并行时会累加,可能大于 100。1 秒瞬时采样。
无(0~100 对应 1 张卡负荷刻度)
gpu_mem_usage
该卡已用显存。
MiB
gpu_core_utilization_percentage
该卡整体算力利用率(NVML 驱动视角),取值 0~100,不会超过 100。与 gpu_core_usage 口径不同,二者不可混用。
%
gpu_mem_utilization_percentage
该卡显存利用率(已用显存 / 总显存 × 100)。
%
gpu_core_allocatable
该卡可分配算力,固定为 100(仅 qGPU)。
等同于 qgpu-core(100 = 1 张卡)
gpu_core_allocated
该卡上已分配算力(仅 qGPU)。
等同于 qgpu-core(100 = 1 张卡)
gpu_core_available
GPU 可分配剩余算力,100 - 已分配,下限截断到 0(仅 qGPU)。
等同于 qgpu-core(100 = 1 张卡)
gpu_mem_allocatable
GPU 可分配显存份数(仅 qGPU )。
GiB
gpu_mem_allocated
GPU 已分配显存份数(仅 qGPU )。
GiB
gpu_mem_available
该卡剩余可分配显存份数,下限截断到 0(仅 qGPU)。
GiB
gpu_enc_utilization_percentage
视频编码引擎利用率。
%
gpu_dec_utilization_percentage
视频解码引擎利用率。
%
标签说明:
card 表示 GPU 的序号,node 表示所在节点,namespace 表示 Pod 所属命名空间,pod_name 表示 Pod 名称,container_name 表示容器名称。示例如下:
gpu_core_allocatable{card="0",node="172.21.112.100"} 100
gpu_core_allocated{card="0",container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="tf-bench-d4f4755c4-c7cp6"} 50
gpu_core_available{card="0",node="172.21.112.100"} 50
gpu_core_usage{card="0",node="172.21.112.100"} 91
gpu_core_utilization_percentage{card="0",node="172.21.112.100"} 91
gpu_mem_allocatable{card="0",node="172.21.112.100"} 31
gpu_mem_allocated{card="0",container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="tf-bench-d4f4755c4-c7cp6"} 7
gpu_mem_available{card="0",node="172.21.112.100"} 24
gpu_mem_usage{card="0",node="172.21.112.100"} 5241
gpu_mem_utilization_percentage{card="0",node="172.21.112.100"} 16.12
gpu_enc_utilization_percentage{card="0",node="172.21.112.100"} 0
gpu_dec_utilization_percentage{card="0",node="172.21.112.100"} 0

Pod 相关指标

指标名称
说明
单位
pod_core_usage
Pod 内所有容器的所有进程,在所有卡上采样到的 SM 利用率之和。单卡满负荷约 100。1 秒瞬时采样。
无(0~100 对应 1 张卡负荷刻度)
pod_mem_usage
Pod 实际使用的显存。
MiB
pod_core_utilization_percentage
Pod 实际使用算力占其申请算力(qgpu-core)的比率。计算方式为:pod_core_usage / pod_core_request × 100%。值可超过 100%,表示 Pod 实际用量超出了申请量。
%
pod_mem_utilization_percentage
pod_mem_usage / pod_mem_request × 100。分母在两种情况下并非 Pod 真实 limit:
① 整卡 Pod(申请 core 为 100 的整数倍)→ 强制改为 单卡显存 × 卡数,即使显式申请了 qgpu-memory 也会被覆盖;
② 只申请算力未申请显存(如 core=50)→ 按 core / 100 × 单卡显存 推算。
%
pod_core_occupy_node_percentage
pod_core_usage / (节点卡数 × 100) × 100,Pod 占整节点算力的比例。
%
pod_mem_occupy_node_percentage
pod_mem_usage / 节点所有卡总显存 × 100。
%
pod_core_request
pod 申请的算力。
等同于 qgpu-core(100 = 1 张卡)
pod_mem_request
pod 申请的显存。
MiB
pod_enc_utilization_percentage
pod 视频编码使用率。
%
pod_dec_utilization_percentage
pod 视频解码使用率。
%
说明:
pod_core_usage 与 pod_core_utilization_percentage 的区别:
pod_core_usage:绝对量指标,反映 Pod 对 GPU 卡算力的实际消耗,以 GPU 卡总算力百分比(%)为单位,范围通常为 0~100。
pod_core_utilization_percentage:相对量指标,反映 Pod 对其申请算力(qgpu-core)的利用率(%),计算方式为 pod_core_usage / pod_core_request × 100%,值可超过 100%(表示实际使用量超出申请量)。
以示例数据为参考:若 pod_core_request=50(申请了 GPU 卡 50% 的算力),pod_core_usage=91(实际使用了 GPU 卡 91% 的算力),则 pod_core_utilization_percentage = 91 ÷ 50 × 100% = 182,表示 Pod 实际使用量是申请量的 1.82 倍。
标签说明:
namespace 表示 Pod 所在的 namespace,node 表示 Pod 所在节点,pod 表示 Pod 的名称。示例如下:
pod_core_occupy_node_percentage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 91
pod_core_request{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 50
pod_core_usage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 91
pod_core_utilization_percentage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 182
pod_mem_occupy_node_percentage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 16.12
pod_mem_request{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 7168
pod_mem_usage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 5239
pod_mem_utilization_percentage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 73.09
pod_dec_utilization_percentage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 0
pod_enc_utilization_percentage{namespace="default",node="172.21.112.100",pod="test-d4f4755c4-c7cp6"} 0

容器相关指标

指标名称
说明
单位
container_assigned_card
容器分配到的 GPU 卡,指标值恒为 1,卡序号与 UUID 分别在 card / uuid 标签中(仅 qGPU)。
-
container_gpu_utilization
容器内所有进程的 SM 利用率之和。
无(0~100 对应 1 张卡负荷刻度)
container_gpu_memory_total
容器内所有进程占用的显存之和。
MiB
container_core_utilization_percentage
container_gpu_utilization / container_request_gpu_utilization × 100
%
container_mem_utilization_percentage
container_gpu_memory_total / container_request_gpu_memory × 100
%
container_request_gpu_memory
容器申请的显存。
MiB
container_request_gpu_utilization
容器申请算力,整卡时固定为 100。
等同于 qgpu-core(100 = 1 张卡)
container_enc_utilization_percentage
容器视频编码使用率
%
container_dec_utilization_percentage
容器视频解码使用率
%
标签说明:
container_name 表示容器名称,namespace 表示容器所在的 namespace,node 表示容器所在节点,pod_name 表示容器所在的 Pod 的名称,card 表示分配到卡的序号,uuid 表示卡的 UUID。示例如下:
container_assigned_card{card="0",contaienr_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6",uuid="GPU-uuid"} 1
container_core_utilization_percentage{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 182
container_dec_utilization_percentage{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 0
container_enc_utilization_percentage{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 0
container_gpu_memory_total{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 5239
container_gpu_utilization{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 91
container_mem_utilization_percentage{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 73.09
container_request_gpu_memory{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 7168
container_request_gpu_utilization{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 50
container_dec_utilization_percentage{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 0
container_enc_utilization_percentage{container_name="cuda-container",namespace="default",node="172.21.112.100",pod_name="test-d4f4755c4-c7cp6"} 0

GPU 硬件相关的指标

指标名称
说明
单位
gpu_count
节点 GPU 卡数量。
个
gpu_info
显卡信息,值恒为 1,卡型号 / UUID / 驱动版本挂在标签上,用于与其他指标做标签关联。
-
gpu_mem_each_card
每张显卡的显存。
MiB
gpu_mem_clock
显存时钟频率。
MHz
gpu_graphics_clock
图形处理器时钟频率。
MHz
gpu_sm_clock
流处理器时钟频率。
MHz
gpu_video_clock
视频处理器时钟频率。
MHz
gpu_max_mem_clock
最大显存时钟频率。
MHz
gpu_max_graphics_clock
最大图形处理器时钟频率。
MHz
gpu_max_sm_clock
最大流处理器时钟频率。
MHz
gpu_max_video_clock
最大视频处理器时钟频率。
MHz
gpu_persistence_mode
是否开启持久模式,1 表示开启,0 表示未开启。
-
gpu_power_usage
功率
W
gpu_ecc_mode
是否开启 ECC 模式,1 表示开启,0 表示未开启
-
gpu_ecc_error_count
ECC 错误累计数量。仅当 gpu_ecc_mode = 1 时输出,ECC 关闭或读取失败时该 series 不存在。
个
示例:
gpu_count 1
gpu_info{card="0",driver_version="470.182.03",name="Tesla V100-SXM2-32GB",node="172.21.112.100",uuid="GPU-uuid"} 1
gpu_mem_each_card{card="0",node="172.21.112.100"} 32510
gpu_ecc_error_count{card="0",counter_type="aggregate",error_type="correctable",node="172.21.112.100"} 0
gpu_ecc_error_count{card="0",counter_type="aggregate",error_type="uncorrectable",node="172.21.112.100"} 0
gpu_ecc_error_count{card="0",counter_type="volatile",error_type="correctable",node="172.21.112.100"} 0
gpu_ecc_error_count{card="0",counter_type="volatile",error_type="uncorrectable",node="172.21.112.100"} 0
gpu_ecc_mode{card="0",node="172.21.112.100"} 1
gpu_graphics_clock{card="0",node="172.21.112.100"} 1530
gpu_mem_clock{card="0",node="172.21.112.100"} 877
gpu_max_graphics_clock{card="0",node="172.21.112.100"} 1530
gpu_max_mem_clock{card="0",node="172.21.112.100"} 877
gpu_max_sm_clock{card="0",node="172.21.112.100"} 1530
gpu_max_video_clock{card="0",node="172.21.112.100"} 1372
gpu_persistence_mode{card="0",node="172.21.112.100"} 1
gpu_power_usage{card="0",node="172.21.112.100"} 246.39
gpu_sm_clock{card="0",node="172.21.112.100"} 1530
gpu_video_clock{card="0",node="172.21.112.100"} 1372