GPU使用率持续飙升问题排查

WarmNora +0/-0 0 0 正常 2025-12-24T07:01:19 DevOps

GPU使用率持续飙升问题排查

问题现象

在生产环境的ML模型服务中,发现GPU使用率持续飙升至95%以上,导致推理延迟增加300%,部分请求超时。

排查步骤

  1. 实时监控指标收集
# 使用nvidia-smi监控GPU状态
watch -n 1 nvidia-smi

# 获取详细GPU指标
nvidia-smi --query-gpu=utilization.gpu,utilization.memory,memory.used,memory.total,temperature.gpu,power.draw,power.limit -format=csv -l 1 > gpu_metrics.csv
  1. 定位问题进程
# 查找占用GPU的进程
nvidia-smi pmon -c 10

# 根据PID查找具体服务
ps -ef | grep [pid]
  1. 代码层面分析
import torch
import psutil
import GPUtil

# 监控单个模型推理过程中的GPU使用
for i in range(100):
    # 每次推理前检查GPU状态
    gpus = GPUtil.getGPUs()
    for gpu in gpus:
        print(f"GPU {gpu.id}: {gpu.memoryUtil*100:.1f}% memory")
    
    # 执行推理
    result = model(input_tensor)
    
    # 检查内存泄漏
    torch.cuda.empty_cache()

告警配置方案

# prometheus告警规则
groups:
- name: gpu_monitoring
  rules:
  - alert: HighGPUUtilization
    expr: nvidia_gpu_utilization > 85
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "GPU utilization is high"
      description: "GPU utilization has been above 85% for 5 minutes"
  
  - alert: GPUUtilizationSpikes
    expr: rate(nvidia_gpu_utilization[1m]) > 10
    for: 2m
    labels:
      severity: critical
    annotations:
      summary: "GPU utilization spike detected"
      description: "GPU utilization increased by more than 10% in 1 minute"

根本原因

通过排查发现,模型推理过程中存在未正确释放的CUDA缓存,导致内存泄漏,最终引发GPU使用率持续飙升。

推广
广告位招租

讨论

0/2000
Bob918
Bob918 · 2026-01-08T10:24:58
GPU使用率飙到95%不是小事,得赶紧看是不是模型推理没释放显存,特别是长连接服务里容易漏掉torch.cuda.empty_cache()。
BigDragon
BigDragon · 2026-01-08T10:24:58
nvidia-smi pmon配合ps查进程挺管用,但别只盯着一个点,看看是不是有多个进程在抢GPU资源。
GoodKyle
GoodKyle · 2026-01-08T10:24:58
监控告警设得太晚才触发没意义,建议提前到70%就预警,留出时间排查或限流,别等超时再动手。
Luna487
Luna487 · 2026-01-08T10:24:58
如果代码里用了动态batch或者梯度累积,也可能是隐式的内存泄漏,得结合profile工具具体分析推理路径。