Skip to content

📊 GPU 监控与排故

GPU 不是装上就完事了——持续监控才能提前发现隐患

基础监控:nvidia-smi

bash
# 实时刷新
watch -n 1 nvidia-smi

# 只看关键信息
nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,memory.used,memory.total,power.draw --format=csv

关键指标:

指标正常范围警告阈值
温度30-75°C>85°C 降频,>90°C 危险
GPU 利用率0-100%推理时应在 80-100%
显存占用>95% 快 OOM 了
功耗闲置 15-30W满载不应超 TDP 10%
风扇转速30-60%>80% 说明散热不行

持续监控:nvtop

比 nvidia-smi 直观,类似 htop 的 GPU 版本:

bash
# 安装
sudo apt install nvtop

# 运行
nvtop

实时显示:每张卡的利用率、显存、温度、功耗、进程列表。


Prometheus + Grafana(生产级监控)

d Monitoring,Go+NVIDIA管理GPU → prometheus 采集 → Grafana 出图。

bash
# 安装 DCGM
sudo apt install datacenter-gpu-manager

# 启动 nvidia-dcgm-exporter(Docker)
docker run -d --gpus all --rm -p 9400:9400 \
  nvcr.io/nvidia/k8s/dcgm-exporter:latest

然后在 Prometheus 加 scrape target localhost:9400,Grafana 导入 NVIDIA 官方 Dashboard。


显存泄漏排查

显存只涨不跌,最终 OOM——这是最常见的 GPU 问题。

排查步骤

bash
# 1. 看谁在吃显存
nvidia-smi
# 找到 PID 和显存占用

# 2. 看这个进程的详细显存
nvidia-smi --query-compute-apps=pid,used_memory --format=csv

# 3. Python 代码里检查
import torch
print(f"已分配: {torch.cuda.memory_allocated()/1024**3:.1f}GB")
print(f"缓存:   {torch.cuda.memory_reserved()/1024**3:.1f}GB")

常见原因

  • 模型没卸载:多轮推理后旧模型还在显存里,加 del model; torch.cuda.empty_cache()
  • 梯度没释放:训练时 loss.backward() 后忘记 optimizer.zero_grad()
  • batch_size 太大:逐步减小找到不 OOM 的值
  • torch 缓存不释放torch.cuda.empty_cache() 只清缓存不清已分配显存

温度异常排查

显卡温度 >85°C

  1. 清灰——显卡风扇和散热鳍片积灰是头号元凶
  2. 检查机箱风道——前进后出,显卡区有没有冷风到达
  3. 换硅脂——过保的卡硅脂干了导热变差
  4. 降功耗——nvidia-smi -pl 300 把功耗墙降到 300W

热点温度 vs GPU 温度

热点温度(Hot Spot)比 GPU 核心温度高 10-15°C 是正常的。如果差值 >25°C,说明硅脂不行了或散热器贴合不良。


常见报错速查

报错原因解法
CUDA out of memory显存不足减 batch_size / 量化 / 换大显存卡
CUDA driver version insufficient驱动太老升级到 535+
device-side assert triggered索引越界或数据类型错检查模型输入 shape 和 dtype
illegal memory access显存地址错误大概率驱动或 CUDA 版本不匹配
NCCL timeout多卡通信超时检查 NVLink/PCIe/网络

🎯 本章要点

  • nvidia-smi 是基本监控,nvtop 更直观,生产环境用 Prometheus + Grafana
  • 核心四指标:温度(<85°C)、利用率(>80%)、显存(<95%)、功耗(不超TDP)
  • 显存只涨不跌先查进程→再查代码里 empty_cachezero_grad
  • 高温先清灰→查风道→降功耗,热点温度超 GPU 温度 25°C 该换硅脂
加载练习题中...

有问题或补充?欢迎留言