GPU使用率持续飙升问题排查
问题现象
在生产环境的ML模型服务中,发现GPU使用率持续飙升至95%以上,导致推理延迟增加300%,部分请求超时。
排查步骤
- 实时监控指标收集
# 使用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
- 定位问题进程
# 查找占用GPU的进程
nvidia-smi pmon -c 10
# 根据PID查找具体服务
ps -ef | grep [pid]
- 代码层面分析
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使用率持续飙升。

讨论