Prometheus + Grafana + vLLM 监控实战指南
基于 4x RTX 3090 + vLLM (Qwen2.5-14B) 真实生产环境编写 所有数据、查询、示例均来自 192.168.1.30 实际运行的服务
一、架构总览
scss
vLLM (:9090/metrics) ──┐
├── Prometheus (:9490) ── Grafana (:3000)
dcgm-exporter (:9400) ──┘ (拉取+存储) (查询+可视化)
| 组件 | 镜像 | 端口 | 职责 |
|---|---|---|---|
| Prometheus | prom/prometheus:v2.51.0 | 9490 (宿主机) → 9090 (容器) | 每 15 秒拉取指标,存储时序数据 |
| Grafana | grafana/grafana:10.4.0 | 3000 | Dashboard 可视化 |
| dcgm-exporter | nvcr.io/nvidia/k8s/dcgm-exporter:3.3.5 | 9400 | 采集 NVIDIA GPU 硬件指标 |
| vLLM | 业务自部署 | 9090 | LLM 推理服务,内置 /metrics 端点 |
数据流 :vLLM/DCGM 暴露 HTTP /metrics 端点 → Prometheus 定时 GET 拉取 → 存入本地 TSDB → Grafana 通过 PromQL 查询并渲染
二、Prometheus 四种数据模型
Prometheus 的所有指标只有 4 种类型,理解它们是写 PromQL 和设计告警的基础。
2.1 Counter(计数器)-- 只增不减
定义:从 0 开始只能递增的数字,仅在进程重启时归零。类比汽车里程表。
我们系统中的实例:
ini
# vLLM 成功请求总数 -- 累计 3523 个请求
vllm:request_success_total{finished_reason="stop"} 3523.0
# vLLM 处理的 prompt token 总数 -- 累计约 825 万
vllm:prompt_tokens_total 8.252902e+06
# vLLM 生成的 token 总数
vllm:generation_tokens_total 298620.0
# GPU 累计能耗(焦耳)
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION{gpu="0"} 持续递增...
使用方式 :Counter 的原始值(一个不断增大的数字)直接看没什么意义,必须用 rate() 或 increase() 提取速率和增量:
promql
-- 每秒处理多少请求(QPS)
rate(vllm:request_success_total[5m])
-- 过去 1 小时生成了多少 token
increase(vllm:generation_tokens_total[1h])
适用场景:请求数、token 数、错误数、字节数 -- 一切"累计发生了多少次"的事情。
2.2 Gauge(仪表盘)-- 可升可降
定义:一个可以任意上下波动的瞬时值,代表当前状态的快照。类比温度计。
我们系统中的实例:
ini
# 当前正在 GPU 上运行的请求数
vllm:num_requests_running 0
# 当前排队等待的请求数
vllm:num_requests_waiting 0
# GPU KV Cache 使用率(0~1)
vllm:gpu_cache_usage_perc 0.0
# GPU 温度(摄氏度)-- 4 张卡各不相同
DCGM_FI_DEV_GPU_TEMP{gpu="0"} 51
DCGM_FI_DEV_GPU_TEMP{gpu="1"} 31
DCGM_FI_DEV_GPU_TEMP{gpu="2"} 53
DCGM_FI_DEV_GPU_TEMP{gpu="3"} 51
# GPU 显存使用 (MiB)
DCGM_FI_DEV_FB_USED{gpu="0"} 17350 # vLLM 占用
DCGM_FI_DEV_FB_USED{gpu="1"} 26 # 几乎空闲
DCGM_FI_DEV_FB_USED{gpu="2"} 24156 # vLLM 占用
DCGM_FI_DEV_FB_USED{gpu="3"} 24154 # vLLM 占用
# GPU 功耗 (瓦特)
DCGM_FI_DEV_POWER_USAGE{gpu="0"} 30.05
使用方式 :Gauge 直接查就有意义,不需要 rate():
promql
-- 直接查当前 GPU 温度
DCGM_FI_DEV_GPU_TEMP{gpu="0"}
-- 也可以看趋势
avg_over_time(DCGM_FI_DEV_GPU_TEMP{gpu="0"}[1h])
delta(DCGM_FI_DEV_GPU_TEMP[5m]) -- 5分钟内温度变化量
适用场景:温度、队列深度、内存使用量、连接数 -- 一切"当前是多少"的状态。
2.3 Histogram(直方图)-- 分布统计
定义 :把观测值按预定义的区间 (bucket) 分桶计数。每次记录一个值时,所有 le >= 该值 的桶的计数器 +1。
我们系统中的实例(TTFT -- 首 Token 延迟):
ini
# 每个 bucket 记录"延迟 <= X 秒的请求数"(累积分布)
vllm:time_to_first_token_seconds_bucket{le="0.06"} 15 # <=60ms
vllm:time_to_first_token_seconds_bucket{le="0.1"} 86 # <=100ms
vllm:time_to_first_token_seconds_bucket{le="0.25"} 670 # <=250ms
vllm:time_to_first_token_seconds_bucket{le="0.5"} 2403 # <=500ms
vllm:time_to_first_token_seconds_bucket{le="1.0"} 2714 # <=1s
vllm:time_to_first_token_seconds_bucket{le="5.0"} 3310 # <=5s
vllm:time_to_first_token_seconds_bucket{le="+Inf"} 3418 # 所有请求
# 附带 _sum 和 _count
vllm:time_to_first_token_seconds_sum 3514.47 # 所有请求 TTFT 的总和
vllm:time_to_first_token_seconds_count 3418 # 总请求数
从真实数据读出的信息:
| 指标 | 计算方式 | 结果 |
|---|---|---|
| 500ms 内完成率 | 2403 / 3418 | 70.3% |
| 5s 内完成率 | 3310 / 3418 | 96.8% |
| 超过 5s 的请求数 | 3418 - 3310 | 108 个 |
| 平均 TTFT | 3514.47 / 3418 | 1.03 秒 |
使用方式 :用 histogram_quantile() 算分位数(P50/P95/P99):
promql
-- P50: 50% 的请求 TTFT 低于此值
histogram_quantile(0.5, rate(vllm:time_to_first_token_seconds_bucket[5m]))
-- P95: 关注尾部延迟
histogram_quantile(0.95, rate(vllm:time_to_first_token_seconds_bucket[5m]))
-- P99
histogram_quantile(0.99, rate(vllm:time_to_first_token_seconds_bucket[5m]))
我们系统中所有的 Histogram 指标:
| 指标 | 含义 |
|---|---|
vllm:time_to_first_token_seconds |
首 Token 延迟 (TTFT) |
vllm:time_per_output_token_seconds |
每 Token 延迟 (TPOT) |
vllm:e2e_request_latency_seconds |
端到端请求延迟 |
vllm:request_queue_time_seconds |
排队等待时间 |
vllm:request_prefill_time_seconds |
Prefill 阶段耗时 |
vllm:request_decode_time_seconds |
Decode 阶段耗时 |
vllm:request_prompt_tokens |
Prompt 长度分布 |
vllm:request_generation_tokens |
生成长度分布 |
适用场景:延迟、请求大小、token 数 -- 一切需要看分布的数值。
2.4 Summary(摘要)-- 客户端算分位数
定义:和 Histogram 类似也统计分布,但分位数在客户端(应用进程内)直接计算好再暴露。
我们的系统没有使用 Summary -- vLLM 和 DCGM 全部选择了 Histogram。这不是偶然。
Histogram vs Summary 关键区别:
| Histogram | Summary | |
|---|---|---|
| 分位数在哪算 | Prometheus 服务端 | 应用客户端 |
| 能否跨实例聚合 | 能(bucket 可以相加) | 不能 |
| CPU 开销 | 低(只做计数) | 高(维护流式分位数) |
| 精度 | 取决于 bucket 粒度 | 精确 |
为什么生产环境用 Histogram:假设扩展到 2 个 vLLM 实例做负载均衡:
- Histogram: 两个实例的 bucket 直接相加,
histogram_quantile()算出全局 P99 -- 正确 - Summary: 两个实例各自报 P99=1s 和 P99=3s,无法算出全局 P99 -- 无法聚合
2.5 四种类型总览(我们的系统)
scss
Counter (只增不减) Gauge (可升可降)
------------------------- -------------------------
request_success_total num_requests_running
prompt_tokens_total num_requests_waiting
generation_tokens_total gpu_cache_usage_perc
num_preemptions_total GPU_TEMP / GPU_UTIL
TOTAL_ENERGY_CONSUMPTION FB_USED / FB_FREE
PCIE_REPLAY_COUNTER POWER_USAGE / SM_CLOCK
Histogram (分桶分布) Summary (客户端分位数)
------------------------- -------------------------
time_to_first_token (未使用)
time_per_output_token (生产环境推荐用 Histogram)
e2e_request_latency
request_queue_time
request_prefill_time
三、PromQL 查询语法
PromQL 是 Prometheus 的查询语言。所有 Grafana 面板底下都是 PromQL。 可在 http://192.168.1.30:9490/graph 页面直接执行以下查询。
3.1 基础查询 -- 直接写指标名
promql
-- 查 GPU 温度,返回 4 条结果(4 张卡)
DCGM_FI_DEV_GPU_TEMP
→ {gpu="0"} 51
→ {gpu="1"} 31
→ {gpu="2"} 53
→ {gpu="3"} 51
3.2 Label 过滤 -- 用 {} 选数据
promql
-- 精确匹配
DCGM_FI_DEV_GPU_TEMP{gpu="0"} → 51
-- 正则匹配(gpu0 和 gpu2)
DCGM_FI_DEV_FB_USED{gpu=~"0|2"} → {gpu="0"} 17350, {gpu="2"} 24156
-- 排除
DCGM_FI_DEV_FB_USED{gpu!="1"} → 返回 gpu0, gpu2, gpu3
-- 多条件
vllm:request_success_total{job="vllm", finished_reason="stop"}
3.3 时间范围选择器 -- [5m] 语法
在指标名后加 [时间],获取一段时间内的所有采样点(不能单独使用,配合函数):
promql
vllm:prompt_tokens_total[5m] -- 最近 5 分钟的所有采样点(每 15 秒一个,约 20 个点)
vllm:prompt_tokens_total[1h] -- 最近 1 小时
vllm:prompt_tokens_total[1d] -- 最近 1 天
3.4 核心函数
rate() -- Counter 求速率(最常用)
promql
-- 过去 5 分钟平均每秒处理多少个请求 (QPS)
rate(vllm:request_success_total[5m])
-- 过去 5 分钟平均每秒处理/生成多少 token
rate(vllm:prompt_tokens_total[5m])
rate(vllm:generation_tokens_total[5m])
时间窗口影响平滑度:[1m] 波动大反应快,[5m] 生产常用,[15m] 很平滑反应慢。
increase() -- Counter 求增量
promql
-- 过去 1 小时生成了多少 token
increase(vllm:generation_tokens_total[1h])
-- 过去 24 小时处理了多少请求
increase(vllm:request_success_total[24h])
increase(x[5m]) 约等于 rate(x[5m]) * 300
histogram_quantile() -- 算分位数
promql
-- 公式固定: histogram_quantile(分位数, rate(xxx_bucket[时间窗口]))
-- TTFT P50/P95/P99
histogram_quantile(0.5, rate(vllm:time_to_first_token_seconds_bucket[5m]))
histogram_quantile(0.95, rate(vllm:time_to_first_token_seconds_bucket[5m]))
histogram_quantile(0.99, rate(vllm:time_to_first_token_seconds_bucket[5m]))
-- E2E 延迟 P95
histogram_quantile(0.95, rate(vllm:e2e_request_latency_seconds_bucket[5m]))
聚合函数 -- sum / avg / max / min
promql
-- 4 张卡总功耗
sum(DCGM_FI_DEV_POWER_USAGE) → ≈ 96.4W
-- 4 张卡最高温度
max(DCGM_FI_DEV_GPU_TEMP) → 53
-- 4 张卡平均温度
avg(DCGM_FI_DEV_GPU_TEMP) → 46.5
-- 4 张卡总显存已用
sum(DCGM_FI_DEV_FB_USED) → 65686 MiB ≈ 64GB
-- by() 分组聚合
sum by (finished_reason) (rate(vllm:request_success_total[5m]))
3.5 运算符 -- 指标之间做数学
promql
-- GPU 显存使用率 = used / (used + free)
DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_USED + DCGM_FI_DEV_FB_FREE)
→ {gpu="0"} 0.718 -- 71.8%
→ {gpu="1"} 0.001 -- 空闲
→ {gpu="2"} 0.999 -- 几乎满
→ {gpu="3"} 0.999 -- 几乎满
-- 平均每个请求的 prompt 长度
rate(vllm:prompt_tokens_total[5m]) / rate(vllm:request_success_total[5m])
-- 平均每个请求生成多少 token
rate(vllm:generation_tokens_total[5m]) / rate(vllm:request_success_total[5m])
3.6 时间函数
promql
-- GPU 温度 5 分钟内变化量(正=升温,负=降温)
delta(DCGM_FI_DEV_GPU_TEMP[5m])
-- 过去 1 小时平均温度
avg_over_time(DCGM_FI_DEV_GPU_TEMP{gpu="0"}[1h])
3.7 告警规则常用查询
promql
-- GPU 显存 > 95%
DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_USED + DCGM_FI_DEV_FB_FREE) > 0.95
-- 排队请求 > 10
vllm:num_requests_waiting > 10
-- TTFT P99 > 5 秒
histogram_quantile(0.99, rate(vllm:time_to_first_token_seconds_bucket[5m])) > 5
-- GPU 温度 > 85 度
DCGM_FI_DEV_GPU_TEMP > 85
四、数据链路详解 -- 一个数字从哪来到哪去
以 Dashboard 上 "Prompt Tokens = 8,252,902" 为例,追踪完整链路:
第 1 步:vLLM 进程内部
vLLM 用 prometheus_client 库定义了一个 Counter,每处理一个请求就累加该请求的 prompt token 数:
python
from prometheus_client import Counter
prompt_tokens_total = Counter('vllm:prompt_tokens_total', '...', ['model_name'])
# 每个请求处理完
prompt_tokens_total.labels(model_name="Qwen2.5-14B").inc(该请求的prompt长度)
第 2 步:vLLM /metrics 端点
vLLM 在 9090 端口同时提供推理 API 和 metrics 端点。任何人都可以 GET:
bash
$ curl http://192.168.1.30:9090/metrics | grep prompt_tokens_total
vllm:prompt_tokens_total{model_name="/home/pub/llms/Qwen2.5-14B-Instruct-1M"} 8.252902e+06
第 3 步:Prometheus 定时拉取
Prometheus 根据 prometheus.yml 配置,每 15 秒 GET 一次上述端点,把值存入时序数据库:
yaml
scrape_configs:
- job_name: "vllm"
static_configs:
- targets: ["host.docker.internal:9090"]
第 4 步:Grafana 查询展示
Dashboard 面板的 PromQL 为 vllm:prompt_tokens_total{job="vllm"},Grafana 发给 Prometheus API:
bash
$ curl "http://192.168.1.30:9490/api/v1/query?query=vllm:prompt_tokens_total"
→ {"status":"success","data":{"result":[{"value":[...,"8252902"]}]}}
Grafana 拿到 8252902,渲染成 Stat 面板。
五、Grafana Dashboard 配置
5.1 已部署的 Dashboard
| Dashboard | URL | 面板数 |
|---|---|---|
| vLLM Inference Monitor | http://192.168.1.30:3000/d/vllm-monitor/ | 8 |
| GPU Hardware Monitor | http://192.168.1.30:3000/d/gpu-hardware/ | 6 |
5.2 vLLM Inference Monitor -- 面板与 PromQL 对照
| 面板 | 类型 | PromQL | 语法要点 |
|---|---|---|---|
| Total Stats | Stat | vllm:request_success_total{job="vllm"} |
直接查 Counter 原始值 |
| Request QPS | TimeSeries | rate(vllm:request_success_total{job="vllm"}[5m]) |
rate() + Counter |
| Request Queue | TimeSeries | vllm:num_requests_running{job="vllm"} |
直接查 Gauge |
| KV Cache Usage | Gauge | vllm:gpu_cache_usage_perc{job="vllm"} |
直接查 Gauge |
| TTFT (P50/P95/P99) | TimeSeries | histogram_quantile(0.95, rate(vllm:time_to_first_token_seconds_bucket{job="vllm"}[5m])) |
histogram_quantile + rate |
| TPOT (P50/P95/P99) | TimeSeries | histogram_quantile(0.95, rate(vllm:time_per_output_token_seconds_bucket{job="vllm"}[5m])) |
同上 |
| E2E Latency | TimeSeries | histogram_quantile(0.95, rate(vllm:e2e_request_latency_seconds_bucket{job="vllm"}[5m])) |
同上 |
| Token Throughput | TimeSeries | rate(vllm:prompt_tokens_total{job="vllm"}[5m]) |
rate() + Counter |
5.3 GPU Hardware Monitor -- 面板与 PromQL 对照
| 面板 | PromQL | 说明 |
|---|---|---|
| GPU Utilization | DCGM_FI_DEV_GPU_UTIL{gpu=~"$gpu"} |
计算利用率 (%) |
| GPU Memory Used | DCGM_FI_DEV_FB_USED{gpu=~"$gpu"} |
显存使用 (MiB) |
| GPU Temperature | DCGM_FI_DEV_GPU_TEMP{gpu=~"$gpu"} |
温度 (C) |
| GPU Power Usage | DCGM_FI_DEV_POWER_USAGE{gpu=~"$gpu"} |
功耗 (W) |
| Memory Utilization | DCGM_FI_DEV_MEM_COPY_UTIL{gpu=~"$gpu"} |
显存带宽利用率 (%) |
| Clock Speed | DCGM_FI_DEV_SM_CLOCK / DCGM_FI_DEV_MEM_CLOCK |
时钟频率 (MHz) |
六、vLLM 量化方案对比
6.1 两个阶段的区别
量化部署分为两个完全独立的阶段:
阶段 1: 量化转换(离线、一次性) -- 把 FP16 权重压缩成低精度权重,生成新的模型文件:
bash
# AWQ 量化(耗时几小时,需要 GPU)
pip install autoawq
python -m awq.entry --model_path Qwen/Qwen2.5-14B-Instruct \
--w_bit 4 --q_group_size 128
# 输入: 原始 FP16 模型 (~28GB, 8个分片文件)
# 输出: 量化后的模型 (~8GB, 1个文件) + 新的 config.json
阶段 2: 部署推理(长期运行) -- 用量化后的模型文件启动 vLLM 服务:
bash
# 加载已量化好的 AWQ/GPTQ 模型
vllm serve /path/to/Qwen2.5-14B-Instruct-AWQ --port 9090
# FP8 特殊: 不需要阶段 1,在加载时动态转换
vllm serve Qwen/Qwen2.5-14B-Instruct --quantization fp8 --port 9090
6.2 三种量化方案对比
| AWQ | GPTQ | FP8 | |
|---|---|---|---|
| 需要离线转换 | 需要 | 需要 | 不需要 |
| 加载方式 | 直接 vllm serve 路径 |
直接 vllm serve 路径 |
加 --quantization fp8 |
| 精度 | 4-bit | 4-bit | 8-bit |
| 模型体积 | 原来的 ~1/4 | 原来的 ~1/4 | 原来的 ~1/2 |
| 质量损失 | <1% | <2% | 几乎无 |
| 推理速度 | 快(有专用 kernel) | 中等 | 快 |
| GPU 要求 | 任意 NVIDIA GPU | 任意 NVIDIA GPU | 需要 Ada/Hopper 架构 |
| RTX 3090 支持 | 支持 | 支持 | 不支持 |
6.3 我们的实际情况
当前部署(FP16 原始模型):
makefile
模型: Qwen2.5-14B-Instruct-1M
显存占用: gpu0=17350MiB + gpu2=24156MiB + gpu3=24154MiB ≈ 64GB
gpu-memory-utilization: 0.98(3 张 RTX 3090 几乎吃满)
如果换 AWQ 4-bit:
makefile
模型体积: ~8GB(原来的 1/3.5)
预计显存: 1 张 RTX 3090 即可(24GB > 8GB + KV Cache)
多出的 GPU: 可跑其他模型或做 Tensor Parallelism
代价: 生成质量可能有 <1% 下降
七、部署配置参考
7.1 docker-compose.yaml
yaml
# /home/pub/monitoring/docker-compose.yaml
services:
prometheus:
image: prom/prometheus:v2.51.0
container_name: prometheus
restart: unless-stopped
ports:
- "9490:9090" # 宿主机 9490,避免与 vLLM 9090 冲突
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus-data:/prometheus
extra_hosts:
- "host.docker.internal:host-gateway"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.retention.time=30d"
grafana:
image: grafana/grafana:10.4.0
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
dcgm-exporter:
image: nvcr.io/nvidia/k8s/dcgm-exporter:3.3.5-3.4.1-ubuntu22.04
container_name: dcgm-exporter
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
ports:
- "9400:9400"
volumes:
prometheus-data:
grafana-data:
7.2 prometheus.yml
yaml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "vllm"
static_configs:
- targets: ["host.docker.internal:9090"]
metrics_path: /metrics
- job_name: "dcgm-exporter"
static_configs:
- targets: ["dcgm-exporter:9400"]
metrics_path: /metrics
7.3 Grafana 数据源配置
添加 Prometheus 数据源时,URL 填 http://prometheus:9090(同一 compose 网络内通信,不走宿主机端口)。
八、vLLM 暴露的完整指标清单
Counter 类型
| 指标 | 含义 |
|---|---|
vllm:request_success_total |
成功请求总数 (label: finished_reason) |
vllm:prompt_tokens_total |
处理的 prompt token 总数 |
vllm:generation_tokens_total |
生成的 token 总数 |
vllm:num_preemptions_total |
抢占次数(KV Cache 不足时发生) |
Gauge 类型
| 指标 | 含义 |
|---|---|
vllm:num_requests_running |
当前 GPU 上运行的请求数 |
vllm:num_requests_waiting |
排队等待的请求数 |
vllm:num_requests_swapped |
被换出到 CPU 的请求数 |
vllm:gpu_cache_usage_perc |
GPU KV Cache 使用率 (0~1) |
vllm:cpu_cache_usage_perc |
CPU KV Cache 使用率 (0~1) |
vllm:gpu_prefix_cache_hit_rate |
GPU 前缀缓存命中率 |
Histogram 类型
| 指标 | 含义 |
|---|---|
vllm:time_to_first_token_seconds |
首 Token 延迟 (TTFT) |
vllm:time_per_output_token_seconds |
每 Token 延迟 (TPOT) |
vllm:e2e_request_latency_seconds |
端到端请求延迟 |
vllm:request_queue_time_seconds |
排队等待时间 |
vllm:request_prefill_time_seconds |
Prefill 阶段耗时 |
vllm:request_decode_time_seconds |
Decode 阶段耗时 |
vllm:request_prompt_tokens |
单次请求 prompt 长度分布 |
vllm:request_generation_tokens |
单次请求生成长度分布 |
vllm:iteration_tokens_total |
单次 engine step 处理的 token 数分布 |
九、DCGM Exporter 指标清单
| 指标 | 类型 | 含义 |
|---|---|---|
DCGM_FI_DEV_GPU_UTIL |
Gauge | GPU 计算利用率 (%) |
DCGM_FI_DEV_MEM_COPY_UTIL |
Gauge | 显存带宽利用率 (%) |
DCGM_FI_DEV_GPU_TEMP |
Gauge | GPU 核心温度 (C) |
DCGM_FI_DEV_MEMORY_TEMP |
Gauge | 显存温度 (C) |
DCGM_FI_DEV_POWER_USAGE |
Gauge | 实时功耗 (W) |
DCGM_FI_DEV_FB_USED |
Gauge | 已用显存 (MiB) |
DCGM_FI_DEV_FB_FREE |
Gauge | 空闲显存 (MiB) |
DCGM_FI_DEV_SM_CLOCK |
Gauge | SM 时钟频率 (MHz) |
DCGM_FI_DEV_MEM_CLOCK |
Gauge | 显存时钟频率 (MHz) |
DCGM_FI_DEV_ENC_UTIL |
Gauge | 编码器利用率 (%) |
DCGM_FI_DEV_DEC_UTIL |
Gauge | 解码器利用率 (%) |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION |
Counter | 累计能耗 (J) |
DCGM_FI_DEV_PCIE_REPLAY_COUNTER |
Counter | PCIe 重传计数 |
DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL |
Counter | NVLink 累计带宽 |
DCGM_FI_DEV_XID_ERRORS |
Gauge | XID 错误码 (0=正常) |
每个指标都带有 gpu="0/1/2/3" 和 modelName="NVIDIA GeForce RTX 3090" 等 label。