基础状态检查
GPU总体状态
nvidia-smi
实时监控
watch -n 1 nvidia-smi
实时监控(详细) #关注:sm(算力) mem(显存) pwr(功耗)
nvidia-smi dmon
硬件健康检查
ECC错误 #关注:Volatile Uncorr. ECC(致命) Corrected(可接受但要观察趋势)
nvidia-smi -q | grep -i ecc -A 5
功耗 / 限制原因 # 重点看:Power Draw Power Limit Power State Clocks Throttle Reasons 如果看到: Power Limit → 被限功率 Thermal → 过热降频 Idle → 正常
nvidia-smi -q -d POWER
时钟频率状态
nvidia-smi -q -d CLOCK
NVLink / NVSwitch
NVLink状态
nvidia-smi nvlink -s
NVLink带宽 #关注:link 是否 up 有没有 down / error
nvidia-smi nvlink --status
驱动 & CUDA 排障
驱动日志 #常见问题: GPU掉卡 CUDA ERROR BAR映射失败
dmesg | grep -i nvrm
CUDA是否正常
nvidia-smi --query-gpu=compute_cap --format=csv
GPU设备文件
ls -l /dev/nvidia*
进阶排障
GPU拓扑(多卡通信问题) #关注:NVLink连接 PCIe距离 NUMA关系
nvidia-smi topo -m
进程占用
fuser -v /dev/nvidia*
GPU Reset(卡死时重置GPU) #注意:不能有进程占用 Kubernetes环境慎用
nvidia-smi --gpu-reset -i 0
系统级
CPU-GPU架构
lscpu numactl --hardware
PCIe状态
lspci | grep -i nvidia
PCIe状态详细 #Link Speed和Width是否降速
lspci -vvv -s 0018:01:00.0
容器 / Kubernetes
检查 Docker 是否已加载 NVIDIA 运行时,底层容器是否能访问 GPU
docker info | grep -i nvidia
检查 Kubernetes 节点是否暴露了 GPU 资源,Pod是否可以申请GPU
kubectl describe node | grep -i gpu
IB Switch
查看IB网卡信息 #ibv_devinfo也可以查看
ibstat
查看 IB 网络拓扑 #看同一个 Switch ID 下的设备 = 同一个 IB交换机
ibnetdiscover
IB连接详细信息 #能看到哪些端口连到哪个 switch link 状态
iblinkinfo
GPU拓扑(多卡通信问题)
- PIX → 同一个 PCIe Switch(很近)
- PHB → 同一个 CPU
- SYS → 跨 NUMA
- NV# → NVLink
- IB → IB 设备
关键看:
- GPU ↔ NIC 是 PIX/PHB → 强绑定(推荐)
- GPU ↔ NIC 是 SYS → 跨CPU,性能差
nvidia-smi topo -m
确认 NIC 属于哪个 IB Switch,查交换机路径,如果路径中经过同一个 switch: → 说明在同一个 IB fabric / switch层
ibtracert 123 1
ibtracert <src_lid> <dst_lid>
ibdiagnet2.ibnetdiscover (看完整拓扑)
ibdiagnet2.iblinkinfo (看连接状态)
ibdiagnet2.nodes_info (看设备归属)
ibdiagnet
要想判断哪些 GPU / 网卡(NIC)挂在同一个 IB Switch 下
IB 拓扑是:GPU → PCIe → IB网卡(HCA) → IB Switch → 其他节点
所以要看的是:
GPU 对应哪个 IB 网卡(比如:mlx5_x)
IB 网卡之间是否在同一个 switch