另外一台GPU服务器也出现卡死的现象,远程KVM界面显示如下:
从BMC的远程KVM屏幕输出来看,两台服务器都出现了类似的卡死问题,上一台的文章链接:https://blog.csdn.net/guganly/article/details/146042402 主要表现为 内核崩溃(Kernel Panic) 或 死锁(Deadlock),相关日志涉及 NVIDIA驱动、Ceph存储、Spinlock自旋锁问题。下面是具体的分析和建议的处理方案:
问题分析
1. 第一台服务器
- 崩溃日志涉及
ceph_set_page_dirty
,说明崩溃发生在 Ceph存储系统 处理数据时。 - 伴随 Tainted 标记,表明系统加载了 非GPL模块(如NVIDIA驱动等)。
- 可能是 Ceph客户端驱动与NVIDIA驱动 或 存储I/O压力过大 导致的内存管理问题。
2. 第二台服务器
- 崩溃日志显示 nvidia-smi 进程在执行时 触发了Spinlock(自旋锁)死锁。
native_queued_spin_lock_slowpath.part0
指向 多线程并发资源竞争 可能导致的死锁。nvidia_unlocked_ioctl
和rm_perform_version_check
说明NVIDIA驱动在执行时发生问题,可能是 NVIDIA驱动与内核不兼容 或 某个GPU任务导致锁冲突。INFO: NMI handler took too long to run
可能是 CPU负载过高或硬件异常,涉及性能事件监控(perf)。
可能的根本原因
1. NVIDIA驱动兼容性问题
服务器加载了 nvidia_uvm、nvidia_drm 等模块,可能与当前 Linux内核版本(5.15.0-25-generic) 不兼容,导致 死锁或崩溃。
2. Ceph存储问题
Ceph驱动 ceph_set_page_dirty 相关错误,可能是 Ceph客户端异常 或 Ceph集群I/O超时。
Ceph在 write 操作时可能与 NVIDIA GPU进程发生锁冲突。
3. 多线程死锁
native_queued_spin_lock_slowpath.part0 说明 NVIDIA驱动请求锁定某些资源时未释放,可能导致 系统Hang住。
4. 高负载
NMI handler took too long 说明系统可能处于 CPU负载过高、I/O争用或某些内核任务阻塞。
解决方案
- 强制重启服务器
由于服务器已经无法正常访问,只能 通过BMC(IPMI)远程重启:
ipmitool -I lanplus -H <BMC_IP> -U <user> -P <password> power reset
或者在 BMC 管理界面中 强制关机后再开机。
- 检查系统日志
重启后,先查看历史内核崩溃日志:
journalctl -k -b -1 # 查看上次崩溃的内核日志
或者:
dmesg | grep -i 'nvidia\|ceph\|lock\|error\|fault'
- 禁用NVIDIA驱动(测试环境可尝试)
如果怀疑是 NVIDIA驱动导致死锁,可以临时禁用:
systemctl stop nvidia-persistenced
rmmod nvidia_uvm nvidia_drm nvidia_modeset nvidia
如果 rmmod 失败,说明驱动被占用,可能需要黑名单禁用:
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist-nvidia.conf
update-initramfs -u
reboot
- 检查NVIDIA驱动和CUDA版本
如果 nvidia-smi 本身导致死锁,可能需要更新驱动:
nvidia-smi
dkms status # 检查NVIDIA内核模块
然后尝试 重新安装官方驱动:
sudo apt remove --purge '^nvidia-.*'
sudo ubuntu-drivers autoinstall
sudo reboot
或者尝试手动安装稳定版驱动:
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/525.125.06/NVIDIA-Linux-x86_64-525.125.06.run
chmod +x NVIDIA-Linux-x86_64-525.125.06.run
sudo ./NVIDIA-Linux-x86_64-525.125.06.run --dkms
sudo reboot
- 检查Ceph存储状态
如果服务器 连接Ceph存储,可能需要检查 ceph status:
ceph -s
dmesg | grep ceph
如果是 Ceph I/O超时,可以尝试 重新挂载Ceph存储:
umount /mnt/ceph
mount -t ceph <ceph_mon_ip>:6789:/ /mnt/ceph -o name=<user>,secret=<key>
- 限制 nvidia-smi 运行频率
如果 nvidia-smi 在 监控GPU时触发锁死,可以 修改监控间隔:
echo "options nvidia NVreg_RestrictProfiling=1" > /etc/modprobe.d/nvidia.conf
update-initramfs -u
reboot
总结
你的问题很可能是 NVIDIA驱动与内核不兼容 或 Ceph存储I/O超时,导致 Spinlock死锁 或 内核崩溃。建议:
- 强制重启服务器,观察是否能正常进入系统。
- 查看日志 (journalctl -k -b -1) 确认崩溃原因。
- 升级NVIDIA驱动 或 尝试禁用NVIDIA模块 看是否解决问题。
- 检查Ceph存储 是否有异常 ceph -s。
- 限制 nvidia-smi 监控频率 避免频繁锁争用。
如果两台服务器 都有相同问题,建议:
- 先升级NVIDIA驱动 并 与当前Linux内核匹配。
- 优化Ceph存储I/O设置,避免NVIDIA GPU访问存储时出现死锁。