【GPU服务器常见的故障以及排查思路】
2026/9/15 8:25:32 网站建设 项目流程

GPU服务器常见的故障以及排查思路

适用场景:NVIDIA Tesla / A100 / H100 等数据中心卡
使用姿势:先"5 分钟快速定性",再进入对应章节闭环处理。禁止跳过定性直接换卡或重装驱动。


第 1 章 · 5 分钟快速定性(所有工单的第一动作)

目标:在 5 分钟内把故障圈定到硬件 / 驱动栈 / 资源 / 环境四大桶之一。这一章是全篇最重要的部分——跳过大定位直接拆机/重装,是运维新手最常见的资源浪费。

1.1 一分钟信息收集

nvidia-smi-L# 列所有可见 GPU,对比 inventory,缺卡=硬件嫌疑nvidia-smi --query-gpu=index,name,temperature.gpu,power.draw,memory.used,ecc.errors.uncorrected,utilization.gpu--format=csv-l1lspci-nn|grep-invidia# 对比 nvidia-smi -L,PCI 可见但 smi 不可见=驱动栈问题dmesg-T|grep-iE"nvidia|nvrm|pci"|tail-50journalctl-unvidia-persistenced-n100--no-pager

1.2 决策树(照表走,不要凭感觉)

现象第一判断跳转
nvidia-smi无输出 /No devices were foundPCIe 层 or 供电§1.1 → §3.1
lspci能看到,nvidia-smi看不到驱动栈(90% 不是坏卡)§2.1
GPU 在,但Failed to initialize NVML: version mismatch驱动残留/升级不完整§2.1
ECCDouble-bit持续增长硬件死刑§1.2
单卡掉算力、其他卡正常先软后硬二分§1 + §2
满负载时随机掉卡供电 / 散热(原文最易漏)§3
多卡训练 NCCL 报错互联层§4

1.3 黄金法则

  1. 交叉验证是唯一能 100% 定硬件的手段(§1.1),但成本最高,放最后一步。
  2. 先软后硬、先易后难:重启 → 重装驱动 → 换槽 → 换机 → 换卡。跳过前面的步骤=赌运气。
  3. 改任何东西之前先留快照nvidia-smi -q、BIOS 设置、/var/log/dmesg),否则无法回滚对比。
  4. 不要在有业务的节点上裸操作——先kubectl drain/ 从调度池摘出 /nvidia-smi mig -dgi清场。

第二章 · 硬件层故障

判定标准:交叉验证后仍异常。处理动作基本是RMA / 换卡 / 换主板

2.1 GPU 本体或 PCIe 链路异常

症状

  • nvidia-smi无输出,或设备树不完整(-L数量 < 实际卡数)
  • 能识别但State: Error,显存显示为 0 或异常值
  • 开机黑屏 / VGA 无输出 / 主板 BMC 日志报PCIe Training Error
  • 任务侧CUDA error: unknown errorCUDA driver error 999

排查(严格按序,禁止跳步)

# Step 1: 二分——是卡的问题还是槽/主板的问题# A 机坏卡嫌疑 <--> B 机好卡# 交换后谁坏谁=硬件问题;换到好槽就好=主板/槽问题lspci-vv-s<gpu_bdf>|grep-iE"lspci|link|l1|aspm"# 看 PCIe 协商宽度/代际nvidia-debugdump-f/var/tmp/nv_dump_$(date+%s).log# 厂商 RMA 必带

物理操作清单(断电、防静电、双人复核)

  1. 重新拔插供电线 + 金手指,橡皮擦清理金手指氧化层
  2. 确认供电线足额:A100 需 2×8Pin,H100 SXM 走主板供电;严禁一拖二转接线
  3. 换 PCIe 插槽(排除槽位/通道问题),关闭 BIOS 中 ASPM、Above 4G Decoding 异常项
  4. 交叉验证(定案依据):嫌疑卡换到已知好机;好卡换到嫌疑槽。结论唯一。

处理

  • 交叉后卡仍异常 →硬件损坏,走 RMA(保留nv_dump日志给厂商,能显著缩短售后周期)
  • 换槽即好 → 主板 PCIe 通道 / 槽位故障 → 换主板或迁移到空闲槽
  • 注意 SXM 形态(H100/H200):卡焊接在 GPU Baseboard(OAM)上,故障往往要整板 RMA,不能单独换卡

2.2 ECC 显存错误

症状nvidia-smi -q | grep -A8 "ECC Errors"Uncorrected持续增长;训练随机CUBLAS_STATUS_EXECUTION_FAILED/device-side assert

关键认知(原文需要强化的点)

  • ECC 只能纠正 Single-bit;Double-bit 是不可恢复错误(UE),一旦出现即硬件死刑,没有"观察"的价值——继续跑会把数据静默损坏,直接隔离该卡
  • Volatile计数重启清零;Aggregate(累计)才是判断渐进劣化的关键
nvidia-smi-q|grep-A12"ECC Errors"# 对单卡做显存压力,观察 UE 是否新增cuda-memcheck --leak-check full ./your_app gpu-burn300&

处理

错误类型动作
Single-bit 偶发、Aggregate 不增长观察,记录基线
Single-bit 持续递增48h 观察窗口后仍有增长 → 换卡
Double-bit (UE) 任何一次立即隔离,RMA。不可再上线训练

⚠️ 数据中心卡 ECC 默认开启,不要主动关——关 ECC 换来的"多一点可用显存"远抵不上静默数据损坏的风险。

2.3 散热 / 风扇 / 温度传感器

症状nvidia-smi显示 >90℃ 后降频(clocks_throttle_reasonsHW_SLOWDOWN/SW_THERMAL);风扇异响/不转;device-side assert伴随温度尖峰。

nvidia-smi-q-i0|grep-A15-iE"temperature|fan|throttle"ipmitool sdrtypefan

处理

  • 清灰(压缩空气,先关机断电)→ 仍异常则换同型号风扇
  • 硅脂干涸 / 散热模组老化 → 返厂换模组
  • 临时兜底(不要当长期方案)nvidia-smi -pl 250降压降功耗墙,保住不宕机,但算力受损,需在工单标注
  • 温差异常 → 优先查 §3.2 机房/风道,而非换卡

第三章 · 软件 / 驱动栈故障

判定标准:lspci能看到 GPU,但软件层异常。绝大多数"我卡坏了"的工单落在这里,且不需要换硬件。

3.1 Driver / NVML 异常(高频,且最容易被误判为坏卡)

症状

  • Failed to initialize NVML: Driver/library version mismatch经典驱动残留/内核升级后未重编译
  • nvidia-persistenced起不来
  • no kernel image is available for execution on the device← SM 架构与 CUDA 不匹配(如 sm_90 的 H100 用了旧 toolkit)

排查

uname-r&&cat/proc/driver/nvidia/version# 内核 vs 驱动版本lsmod|grep-E"nvidia|nvidia_uvm"# 模块是否加载dpkg-l|grep-invidia# 或 rpm -qa | grep -i nvidia # 多版本共存=冲突

标准重装流程(先快照,再清理)

# Ubuntu/Debiansudoapt-getpurge-y'nvidia*''libnvidia*'sudoapt-getautoremove-y&&sudoapt-getautoclean# RHEL/CentOSsudoyum remove-y'nvidia*'sudorm-rf/usr/local/cuda* /usr/lib/xorg/modules/extensions/libglx.so*sudoreboot# 重启后用官方 .run 或 distro 包装回与内核匹配的版本

⚠️坑点apt purge后务必确认/lib/modules/$(uname -r)/...无残留.ko;用 DKMS 管理驱动时先dkms remove,否则重启仍 mismatch。原文只给了 purge,这里补上。

版本兼容速查nvidia-smi顶部CUDA Version: xx.x= 该驱动支持的最高CUDA,不是已安装版本;PyTorch/TF 需同时满足driver ≥ 最低要求CUDA toolkit 匹配

3.2 CUDA / CuDNN / 框架版本错配

症状Could not load dynamic library 'libcudart.so.xx'CUDNN_STATUS_INTERNAL_ERROR、训练报错的代码推理正常。

nvcc-Vcat/usr/include/cudnn_version.h|grep-E"CUDNN_MAJOR|CUDNN_MINOR"-A1python-c"import torch; print(torch.version.cuda, torch.cuda.is_available())"

处理强烈推荐 Conda/容器隔离,禁止系统级混装

conda create-ntorch2python=3.10condainstallpytorch torchvision pytorch-cuda=11.8-cpytorch-cnvidia

生产集群用Pyxis/Enroot + 版本化的 container image是最稳的方案,从根本上消灭"某台机器驱动版本不一样"的问题。

3.3 显存泄漏 / 僵尸占用(集群最常见的"假坏卡")

症状nvidia-smi显存Used ≠ 0Processes为空;反复跑任务后 OOM,重启任务也释放不掉。

fuser-v/dev/nvidia*# 找真正持有 fd 的 PIDnvidia-smi pmon-sm# 实时显存监控

处理

sudokill-9<PID># 不重启节点释放 UVM(生产节点免重启救命操作)sudormmod nvidia_uvm&&sudomodprobe nvidia_uvm
  • 频繁复现 → 升级驱动到稳定 LTS(如 535 → 545/550 稳定分支),或修框架 bug / 升级 PyTorch
  • 根治:任务框架加--empty_cache钩子 + 任务结束自动清场;GPU operator 里设fail-on-eviction告警

第四章 · 物理环境 / 供电(最易被忽略,也是"神秘掉卡"真凶)

4.1 供电不足 / 掉电

症状:8 卡满负载时部分卡离线、机器触发 PSU 保护重启、供电线接口发热发烫(肉眼可见危险)、功耗在 400W↔100W 剧烈抖动。

快速核算(装机前必算,原文数字要更新)

GPU单卡 TDPN 卡最小 PSU(含 20% 冗余)
A100 80GB PCIe300W8 卡 ≈ 3200W(整机建议 3500W+)
H100 SXM700W8 卡 ≈ 6000W+(必须用 HGX 底座 + 双 PSU 阵列)

⚠️ 原文"8×400W=4000W"是按老 A100 SXM 400W 算的,现已过时。务必按实际 TDP 重算,并给 PSU 留 20% 冗余 + 考虑 CPU/内存/风扇功耗。

ipmitool sensor|grep-iE"psu|power|voltage"# BMC 电源传感器# 万用表测 12V 供电,正常 ±5%

处理:换足额白金/钛金 PSU、供电线足额(不转接、不一拖二)、机房加 UPS;任何接口发热=立即下电检修,不可带病运行。

4.2 环境温度 / 风道

症状:机房 >28℃ 后集体降频、中间卡温度显著高于边缘卡(≥10℃)、高温时段集中掉卡。

ipmitool sdrtypefan nvidia-smi --query-gpu=index,temperature.gpu--format=csv

处理

  • 机房 20–25℃ / 湿度 40–60%,修空调、补冷通道
  • 风道整治优先级 > 换风扇:消除冷热通道短路、保证 GPU 间距 ≥2cm、加装导风罩
  • 密度上限:4U 机箱建议 ≤4×A100;SXM 卡必须用厂商认证机箱
  • 季节性预案:高温季提前降压降密度,避免集体掉卡

第五章 · 集群互联层(NVLink / NVSwitch / InfiniBand)

症状:多卡训练NCCL error: unhandled system error、NVLink 链路Down、多卡吞吐远低于线性加速比。

nvidia-smi nvlink--status-i0nvidia-smi topo-m# 看 P2P / NVLink / PCIe 拓扑# NCCL 自检(定位是 NCCL 还是硬件)nccl-tests/build/all_reduce_perf-b8M-e16G-f2# IB 层ibstat|grep-iE"state|physical"

处理

  • 重新拔插 NVLink 桥接器(PCIe 形态)或排查 NVSwitch 健康(SXM)
  • 换桥接器/线缆;接口损坏=换卡
  • 版本一致性:同一 NVLink gen、同驱动、同 NCCL 版本,禁止混部
  • IB 问题单独走ibv_devinfo/opensm日志,不要把 IB 掉线误判成 GPU 坏卡

第六章 · 工具箱清单

6.1 诊断 / 压力测试

工具用途
nvidia-smi/-q/-L状态、驱动、显存/功耗/温度、ECC、NVLink(§0 全套)
nvidia-debugdumpRMA 必带的 GPU 内部日志
cuda-memcheck/compute-sanitizerCUDA 内存/越界错误(新版本用后者)
gpu-burn满负载稳定性烤机(./gpu_burn 300
nccl-tests多卡通信正确性+带宽基准
dcgm(nv-hostengine+dcgmi diag)数据中心级健康检查,dcgmi diag -g all一键全检,强烈推荐

6.2 系统层

lspci-nn|grep-invidia# PCIe 识别dmesg-T|grep-iE"nvidia|nvrm|pci"journalctl-unvidia-persistenced ipmitool sdr / sensor# 风扇、PSU、温度(BMC)fuser-v/dev/nvidia*# 显存占用进程

第七章 · 预防体系

7.1 监控告警(把坏卡在发生前抓出来

  • Prometheus + Grafana +nvidia-dcgm-exporter采集:温度、功耗、ECC(Aggregate)、降频原因、PCIe 重训练计数、NVLink 误码
  • 告警规则示例:
    • temperature.gpu > 85持续 5min
    • ecc_errors_uncorrected > 0UE 一次即告警
    • clocks_throttle_reasons_hw_slowdown == 1
    • pcie_link_width_current < pcie_link_width_max(链路降级 = 即将掉卡)
  • 每日定时dcgmi diag -g all巡检,输出入库对比基线

7.2 变更 / 装机规范

  • 驱动固定LTS 稳定分支(535 / 550),禁止追新;内核升级必须联动重编驱动
  • 镜像化交付(Pyxis/Enroot + 版本化 container),杜绝节点间环境漂移
  • 装机前做48h burn-in(gpu-burn + nccl-tests + dcgm 全检),DOA 在早期筛掉
  • 配置管理:驱动/BIOS/固件版本全部纳入 CMDB,统一基线

7.3 硬件 / 机房 SLA

  • 电源冗余 ≥20%,足额直连供电,禁止转接线
  • 定期清灰(3–6 月)+ 年度硅脂更换 + 风扇寿命管理
  • 机房温湿度 + UPS + 冷热通道标准化;硬件批次缺陷监控(同批集中坏卡 → 批量 RMA)

A · 处置优先级(安全红线)

重启服务 → 释放 UVM / 清显存 → 重装驱动 → 换 PCIe 槽 → 交叉验证 → 换卡 RMA
  • 红线 1:任何供电接口发热/烧焦 → 立即下电,禁止带电操作
  • 红线 2:出现 ECC UE → 立即隔离,禁止继续跑训练(静默数据损坏)
  • 红线 3:操作前必须 drain 节点、备份日志;禁止在生产节点裸改

总结

  • A: 交叉验证后仍不识别 → 硬件(换/修);仅在特定服务器/系统复现 → 软件/供电(按桶排查)。
  • B:ECC UE = 死刑,立刻隔离;能救的先救驱动,别急着换卡。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询