更新时间:2024-04-25 GMT+08:00

监控GPU资源指标

通过Prometheus和Grafana,可以实现对GPU资源指标的观测。本文以实际示例介绍如何通过Prometheus查看集群的GPU显存的使用。

本文将通过一个示例应用演示如何监控GPU资源指标,具体步骤如下:

  1. 访问Prometheus

    (可选)为Prometheus绑定LoadBalancer类型的Service,支持从外部访问Prometheus。

  2. 监控GPU指标

    在集群中部署使用GPU能力的工作负载,将自动上报GPU监控指标。

  3. 访问Grafana

    从Grafana可视化面板中查看Prometheus的监控数据。

前提条件

访问Prometheus

Prometheus插件安装完成后会在集群中部署一系列工作负载和Service。其中Prometheus的Server端会在monitoring命名空间下以有状态工作负载进行部署。

您可以创建一个公网LoadBalancer类型Service,这样就可以从外部访问Prometheus。

  1. 登录CCE控制台,选择一个已安装Prometheus的集群,在左侧导航栏中选择“服务”。
  2. 单击右上角“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

  3. 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Prometheus。

    图1 访问Prometheus

  4. 单击“Status > Targets”,可以查看到Prometheus监控了哪些目标。

    图2 查看监控目标

监控GPU指标

创建一个使用GPU的工作负载,等工作负载正常运行后,访问Prometheus,在“Graph”页面中,查看GPU指标。

图3 查看GPU监控指标
表1 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双比特错误隔离页数量

表2 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虚拟化分三种模式:

  • 0:显存隔离算力共享模式
  • 1:显存算力隔离模式
  • 2:默认模式,表示当前卡还没被用于GPU虚拟化设备分配。

xgpu_device_health

GPU卡

GPU虚拟化设备的健康情况。

  • 0:表示GPU虚拟化设备为健康状态。
  • 1:表示GPU虚拟化设备为非健康状态。

访问Grafana

Prometheus插件同时安装了Grafana(一款开源可视化工具),并且与Prometheus进行了对接。您可以创建一个公网LoadBalancer类型Service,这样就可以从公网访问Grafana,从Grafana中看到Prometheus的监控数据。

单击访问地址,访问Grafana,选择合适的DashBoard,即可以查到相应的聚合内容。

  1. 登录CCE控制台,选择一个已安装Prometheus插件的集群,在左侧导航栏中选择“服务”。
  2. 单击右上角“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

  3. 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Grafana并选择合适的DashBoard,即可查看GPU资源状态。

    图4 查看GPU虚拟化资源