Prometheus-Grafana-vLLM监控实战指南

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。

相关推荐
是梦终空3 天前
React Native 性能优化指南
react native·性能优化
明月_清风3 天前
前端异常捕获:从“页面崩了”到“精准定位”的实战架构
前端·javascript·监控
侑虎科技4 天前
在UE5中,预测脚步IK实现-PredictFootIK
性能优化·unreal engine
bluceli6 天前
前端性能优化实战指南:让你的网页飞起来
前端·性能优化
冰_河7 天前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
无聊的小强7 天前
被告警吵醒太多次,我做了个让告警自动修复的监控工具
监控
叶智辽8 天前
【Three.js内存管理】那些你以为释放了,其实还在占着的资源
性能优化·three.js
BigByte9 天前
我用 6 个 WASM 编码器干掉了 Canvas.toBlob(),图片压缩率直接提升 15%
性能优化·webassembly·图片资源
DemonAvenger10 天前
Kafka性能调优:从参数配置到硬件选择的全方位指南
性能优化·kafka·消息队列