跳转到文档内容
版本:下一个

集群设备分配端点

支持情况

分配指标反映调度器给每张卡、每个工作负载分出去了多少,不是实际用了多少;实际用量见实时设备使用。不同模式下,指标从不同的地方取:

模式由谁暴露访问方式粒度
HAMihami-scheduler,端口 9395Service 端口 31993;v2.10.0 为 NodePort,master 为 ClusterIP卡、Pod、配额
HAMi-DRAhami-dra-monitor Deployment,端口 8080ClusterIP Service,端口 8080卡、Pod
Volcano vGPUVolcano 调度器,端口 8080ClusterIP Service volcano-scheduler-service,端口 8080卡、Pod
KAI Scheduler队列控制器,端口 8080ClusterIP Service queue-controller,端口 8080仅队列

HAMi​

从 hami-scheduler Service 的 31993 端口抓取,或者在 HAMi chart 中设置 prometheus.enabled=true 创建 ServiceMonitor。集群中需已有 Prometheus Operator 的 ServiceMonitor CRD,否则 chart 不会创建。

v2.10.0 中该 Service 为 NodePort:

curl {节点 IP}:31993/metrics

master 分支的 chart 中为 ClusterIP,需要端口转发:

kubectl port-forward svc/hami-scheduler 31993:31993 -n kube-system
curl localhost:31993/metrics

它包含以下指标:

指标描述示例
hami_gpu_core_limit_ratioGPU 设备核心限制{device_index="0",device_uuid="GPU-00552014-5c87-89ac-b1a6-7b53aa24b0ec",node="aio-node67",zone="vGPU"} 100
hami_gpu_memory_limit_bytesGPU 设备显存限制{device_index="0",device_uuid="GPU-00552014-5c87-89ac-b1a6-7b53aa24b0ec",node="aio-node67",zone="vGPU"} 3.4359738368e+10
hami_gpu_core_allocated_ratio分配给某个 GPU 的设备核心{device_index="0",device_uuid="GPU-00552014-5c87-89ac-b1a6-7b53aa24b0ec",node="aio-node67",zone="vGPU"} 45
hami_gpu_memory_allocated_bytes分配给某个 GPU 的设备显存{device_cores="0",device_index="0",device_uuid="aio-node74-arm-Ascend310P-0",node="aio-node74-arm",zone="vGPU"} 3.221225472e+09
hami_gpu_shared_count共享此 GPU 的容器数量{device_index="0",device_uuid="GPU-00552014-5c87-89ac-b1a6-7b53aa24b0ec",node="aio-node67",zone="vGPU"} 1
hami_node_gpu_memory_allocated_ratioGPU 已分配显存占总显存的比例(0-1){device_index="0",device_type="NVIDIA-Tesla V100-PCIE-32GB",device_uuid="GPU-00552014-5c87-89ac-b1a6-7b53aa24b0ec",node="aio-node67",zone="vGPU"} 0.3125
hami_node_gpu_overview单个 GPU 的汇总信息。标签包含容量和设备信息,指标值为已分配显存(字节){device_cores="100",device_index="0",device_memory_limit="32768",device_type="NVIDIA-Tesla V100-PCIE-32GB",device_uuid="GPU-00552014-5c87-89ac-b1a6-7b53aa24b0ec",node="aio-node67",zone="vGPU"} 1.073741824e+10
hami_vgpu_core_allocated_ratio分配给某个容器的 vGPU 核心数量{container_index="Ascend310P",device_uuid="aio-node74-arm-Ascend310P-0",node="aio-node74-arm",pod="ascend310p-pod",namespace="default",zone="vGPU"} 50
hami_vgpu_memory_allocated_bytes分配给某个容器的 vGPU 显存{container_index="Ascend310P",device_uuid="aio-node74-arm-Ascend310P-0",node="aio-node74-arm",pod="ascend310p-pod",namespace="default",zone="vGPU"} 3.221225472e+09
hami_resource_quota_usedresourcequota 的使用情况。limit 标签已在 v2.11.0 中弃用,将在 v2.12.0 中移除,请改用 hami_resource_quota_limit。{quota_name="nvidia.com/gpucores", namespace="default",limit="200",zone="vGPU"} 100
hami_resource_quota_limitresourcequota 的限额(仅在配额设置了限额时暴露){quota_name="nvidia.com/gpucores", namespace="default",zone="vGPU"} 200

HAMi-DRA​

HAMi-DRA 的 monitor 默认开启,通过 ClusterIP Service 暴露,Service 名随 Helm release 而定,release 名为 hami-dra 时是 hami-dra-monitor。可以用端口转发访问,或者设置 monitor.service.type=NodePort:

kubectl port-forward svc/hami-dra-monitor 8080:8080 -n <namespace>
curl localhost:8080/metrics

显存单位为 MiB,算力为百分比:

指标描述示例
GPUDeviceCoreLimitGPU 设备核心限制{devicebrand="Tesla",deviceidx="0",devicename="hami-gpu-1",deviceproductname="Tesla P4",deviceuuid="GPU-3ab1-179d-d6dd",nodeid="k8s-node01"} 100
GPUDeviceMemoryLimitGPU 设备显存限制{devicebrand="Tesla",deviceidx="0",devicename="hami-gpu-1",deviceproductname="Tesla P4",deviceuuid="GPU-3ab1-179d-d6dd",nodeid="k8s-node01"} 8192
GPUDeviceCoreAllocated分配给某个 GPU 的设备核心{devicebrand="Tesla",deviceidx="0",devicename="hami-gpu-1",deviceproductname="Tesla P4",deviceuuid="GPU-3ab1-179d-d6dd",nodeid="k8s-node01"} 0
GPUDeviceMemoryAllocated分配给某个 GPU 的设备显存{devicebrand="Tesla",deviceidx="0",devicename="hami-gpu-1",deviceproductname="Tesla P4",deviceuuid="GPU-3ab1-179d-d6dd",nodeid="k8s-node01"} 0
vGPUDeviceCoreAllocated分配给某个 Pod 的 vGPU 核心数量{devicebrand="Tesla",deviceidx="0",devicename="hami-gpu-0",deviceproductname="Tesla P4",deviceuuid="GPU-82be-83fe-3068",nodeid="k8s-node01",podname="pod-0",podnamespace="default"} 100
vGPUDeviceMemoryAllocated分配给某个 Pod 的 vGPU 显存{devicebrand="Tesla",deviceidx="0",devicename="hami-gpu-0",deviceproductname="Tesla P4",deviceuuid="GPU-82be-83fe-3068",nodeid="k8s-node01",podname="pod-0",podnamespace="default"} 4000

Volcano vGPU​

Volcano 调度器按卡、按 Pod 暴露 volcano_vgpu_device_* 指标。Helm chart 和安装 YAML 默认开启指标,Service 上带有 prometheus.io/scrape 注解,按注解发现目标的 Prometheus 会自动抓取。指标列表见监控 Volcano vGPU。

curl {volcano-scheduler-service ip}:8080/metrics

KAI Scheduler​

KAI 只按队列统计 GPU 分配,例如队列控制器的 kai_queue_allocated_gpus 和 kai_queue_deserved_gpus,没有按卡或按 Pod 的分配指标。安装 KAI 时设置 prometheus.enabled=true,如果集群中已有 Prometheus Operator 的 CRD,operator 会为队列控制器创建 ServiceMonitor。未设置 prometheus.externalPrometheusUrl 时,它还会为 KAI 部署一个 Prometheus。详见 KAI 指标说明。

CNCFHAMi 是 CNCF 孵化项目