fake-dcgm-exporter

Nov 19, 2024 21:00 · 421 words · 1 minute read Golang

fake-dcgm-exporter 是一个 DCGM Exporter 模拟器,为不具备 NVIDIA GPU 的开发环境提供虚假 GPU 指标。

通过配置文件来自定义 GPU 规格、数量、指标数据以及工作负载(Pod):

model: A100 # GPU 型号(3 种可选)
number: 8 # GPU 总数量
workloads:
- podName: test-pod1
  namespace: foo
  gpus: 1 # foo 命名空间下的 test-pod1 Pod 使用 1 个 GPU
- podName: test-pod2
  namespace: bar
  gpus: 4 # bar 命名空间下的 test-pod2 Pod 使用 4 个 GPU
- podName: test-pod3
  namespace: baz
  gpus: 3 # baz 命名空间下的 test-pod3 Pod 使用 3 个 GPU
# Pod 使用 GPU 的数量和不能超过 GPU 总数

目前内置 3 种 NVIDIA GPU 的规格(数据均为真实环境采样得来,将逐渐补充主流 GPU):

  • A100-SXM4-40GB(默认):配置文件中 model 字段的值设置为 A100
  • GeForce RTX 4090:配置文件中 model 字段的值设置为 4090
  • A800-SXM4-80GB:配置文件中 model 字段的值设置为 A800

Docker

使用 Docker 快速运行 fake-dcgm-exporter:

$ mkdir -p /etc/fake-dcgm-exporter
$ curl -sSL -o /etc/fake-dcgm-exporter/config.yaml https://raw.githubusercontent.com/crazytaxii/fake-dcgm-exporter/refs/heads/main/config.yaml
# 根据需求修改配置文件

$ docker run --name=fake-dcgm-exporter --rm -d --network=host -v /etc/fake-dcgm-exporter:/etc/fake-dcgm-exporter crazytaxii/fake-dcgm-exporter:latest

通过 curl 访问并测试:

$ curl http://127.0.0.1:9400/metrics

Kubernetes

在 Kubernetes 上部署 fake-dcgm-exporter:

$ curl -sSL https://raw.githubusercontent.com/crazytaxii/fake-dcgm-exporter/refs/heads/main/manifests/all.
yaml
# 根据需求修改配置文件

$ kubectl create -f all.yaml

通过 curl 访问并测试:

$ SERVICE_IP=$(kubectl get svc -n monitoring dcgm-exporter -o jsonpath='{.spec.clusterIP}')
$ curl http://${SERVICE_IP}:9400/metrics