监控GPU资源指标
通过Prometheus和Grafana,可以实现对GPU资源指标的观测。本文以实际示例介绍如何通过Prometheus查看集群的GPU显存的使用。
本文将通过一个示例应用演示如何监控GPU资源指标,具体步骤如下:
- 访问Prometheus
(可选)为Prometheus绑定LoadBalancer类型的Service,支持从外部访问Prometheus。
- 监控GPU指标
在集群中部署使用GPU能力的工作负载,将自动上报GPU监控指标。
- 访问Grafana
从Grafana可视化面板中查看Prometheus的监控数据。
前提条件
- 集群中已安装云原生监控插件插件。
- 集群中已安装CCE AI套件(NVIDIA GPU)插件,且插件版本不低于2.0.10。
- 如果需要监控GPU虚拟化监控指标,集群中需要已安装Volcano调度器插件,且插件版本不低于1.10.5。
访问Prometheus
Prometheus插件安装完成后会在集群中部署一系列工作负载和Service。其中Prometheus的Server端会在monitoring命名空间下以有状态工作负载进行部署。
您可以创建一个公网LoadBalancer类型Service,这样就可以从外部访问Prometheus。
- 登录CCE控制台,选择一个已安装Prometheus的集群,单击集群名称进入集群,在左侧导航栏中选择“服务”。
- 单击右上角“YAML创建”,创建一个公网LoadBalancer类型的Service。
apiVersion: v1 kind: Service metadata: name: prom-lb #服务名称,可自定义 namespace: monitoring labels: app: prometheus component: server annotations: kubernetes.io/elb.id: 038ff*** #请替换为集群所在VPC下的ELB实例ID,且ELB实例为公网访问类型 spec: ports: - name: cce-service-0 protocol: TCP port: 88 #服务端口号,可自定义 targetPort: 9090 #Prometheus的默认端口号,无需更改 selector: #标签选择器可根据Prometheus Server实例的标签进行调整 app.kubernetes.io/name: prometheus prometheus: server type: LoadBalancer
- 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Prometheus。
图1 访问Prometheus
- 单击“Status > Targets”,可以查看到Prometheus监控了哪些目标。
图2 查看监控目标
监控GPU指标
创建一个使用GPU的工作负载,等工作负载正常运行后,访问Prometheus,在“Graph”页面中,查看GPU指标。
类型 |
指标 |
监控级别 |
说明 |
---|---|---|---|
利用率指标 |
cce_gpu_utilization |
GPU卡 |
GPU卡算力使用率 |
cce_gpu_memory_utilization |
GPU卡 |
GPU卡显存使用率 |
|
cce_gpu_encoder_utilization |
GPU卡 |
GPU卡编码使用率 |
|
cce_gpu_decoder_utilization |
GPU卡 |
GPU卡解码使用率 |
|
cce_gpu_utilization_process |
GPU进程 |
GPU各进程算力使用率 |
|
cce_gpu_memory_utilization_process |
GPU进程 |
GPU各进程显存使用率 |
|
cce_gpu_encoder_utilization_process |
GPU进程 |
GPU各进程编码使用率 |
|
cce_gpu_decoder_utilization_process |
GPU进程 |
GPU各进程解码使用率 |
|
内存指标 |
cce_gpu_memory_used |
GPU卡 |
GPU显存使用量 |
cce_gpu_memory_total |
GPU卡 |
GPU显存总量 |
|
cce_gpu_memory_free |
GPU卡 |
GPU显存空闲量 |
|
cce_gpu_bar1_memory_used |
GPU卡 |
GPU bar1 内存使用量 |
|
cce_gpu_bar1_memory_total |
GPU卡 |
GPU bar1 内存总量 |
|
频率 |
cce_gpu_clock |
GPU卡 |
GPU时钟频率 |
cce_gpu_memory_clock |
GPU卡 |
GPU显存频率 |
|
cce_gpu_graphics_clock |
GPU卡 |
GPU图形处理器频率 |
|
cce_gpu_video_clock |
GPU卡 |
GPU视频处理器频率 |
|
物理状态数据 |
cce_gpu_temperature |
GPU卡 |
GPU温度 |
cce_gpu_power_usage |
GPU卡 |
GPU功率 |
|
cce_gpu_total_energy_consumption |
GPU卡 |
GPU总能耗 |
|
带宽数据 |
cce_gpu_pcie_link_bandwidth |
GPU卡 |
GPU PCIE 带宽 |
cce_gpu_nvlink_bandwidth |
GPU卡 |
GPU nvlink 带宽 |
|
cce_gpu_pcie_throughput_rx |
GPU卡 |
GPU PCIE 接收带宽 |
|
cce_gpu_pcie_throughput_tx |
GPU卡 |
GPU PCIE 发送带宽 |
|
cce_gpu_nvlink_utilization_counter_rx |
GPU卡 |
GPU nvlink 接收带宽 |
|
cce_gpu_nvlink_utilization_counter_tx |
GPU卡 |
GPU nvlink 发送带宽 |
|
隔离内存页面 |
cce_gpu_retired_pages_sbe |
GPU卡 |
GPU单比特错误隔离页数量 |
cce_gpu_retired_pages_dbe |
GPU卡 |
GPU双比特错误隔离页数量 |
指标 |
监控级别 |
说明 |
---|---|---|
xgpu_memory_total |
GPU进程 |
GPU虚拟化显存总量。 |
xgpu_memory_used |
GPU进程 |
GPU虚拟化显存使用量。 |
xgpu_core_percentage_total |
GPU进程 |
GPU虚拟化算力总量。 |
xgpu_core_percentage_used |
GPU进程 |
GPU虚拟化算力使用量。 |
gpu_schedule_policy |
GPU卡 |
GPU虚拟化分三种模式:
|
xgpu_device_health |
GPU卡 |
GPU虚拟化设备的健康情况。
|
访问Grafana
Prometheus插件同时安装了Grafana(一款开源可视化工具),并且与Prometheus进行了对接。您可以创建一个公网LoadBalancer类型Service,这样就可以从公网访问Grafana,从Grafana中看到Prometheus的监控数据。
单击访问地址,访问Grafana,选择合适的DashBoard,即可以查到相应的聚合内容。
- 登录CCE控制台,选择一个已安装Prometheus插件的集群,单击集群名称进入集群,在左侧导航栏中选择“服务”。
- 单击右上角“YAML创建”,为Grafana创建一个公网LoadBalancer类型Service。
apiVersion: v1 kind: Service metadata: name: grafana-lb #服务名称,可自定义 namespace: monitoring labels: app: grafana annotations: kubernetes.io/elb.id: 038ff*** #请替换为集群所在VPC下的ELB实例ID,且ELB实例为公网访问类型 spec: ports: - name: cce-service-0 protocol: TCP port: 80 #服务端口号,可自定义 targetPort: 3000 #Grafana的默认端口号,无需更改 selector: app: grafana type: LoadBalancer
- 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Grafana并选择合适的DashBoard,即可查看GPU资源状态。
图4 查看GPU虚拟化资源