[千问生成]僵尸进程占用显存没有释放怎么办 nvidia-smi 看不到进程,只能看到显存被占用

当 nvidia-smi 无法显示占用 GPU 显存的进程,但显存被占用时,可能是以下原因导致的:

  1. 僵尸进程残留:进程已结束但未正确释放资源。
  2. 权限问题:当前用户无法看到其他用户的进程。
  3. 隐藏的进程:某些进程可能通过容器、虚拟化或后台服务运行。
  4. 驱动或硬件问题:显卡驱动异常或硬件故障。

以下是分步解决方案:


第一步:检查隐藏的 GPU 进程

  1. 使用 fuser 命令查找占用 GPU 的进程
sudo fuser -v /dev/nvidia*
  • 输出示例:
USER PID ACCESS COMMAND
/dev/nvidia0: user1 12345 F... python3
/dev/nvidia1: user2 67890 F... tensorflow
  • 记录所有占用 GPU 的 PID(进程 ID)。
  1. 强制终止进程
sudo kill -9 <PID>
  • 如果多个进程,可以批量处理:
sudo fuser -v /dev/nvidia* | awk '{print $2}' | xargs -I {} sudo kill -9 {}

第二步:检查僵尸进程

  1. 查找僵尸进程
ps aux | grep 'Z'
  • 输出示例:
user 12345 0.0 0.0 0 0 pts/0 Z 00:00:00 python3
  • 记录僵尸进程的 PID。
  1. 终止僵尸进程的父进程
  • 找到僵尸进程的父进程 ID(PPID):
ps -o ppid= -p <PID>
  • 终止父进程:
sudo kill -9 <PPID>

第三步:强制重置 GPU 显存

如果上述方法无效,可能需要强制重置 GPU:

  1. 卸载 NVIDIA 模块
sudo modprobe -r nvidia_uvm nvidia_drm nvidia_modeset nvidia
  • 如果提示模块仍在使用,强制卸载:
sudo rmmod nvidia_uvm
  1. 重新加载 NVIDIA 模块
sudo modprobe nvidia
  1. 检查 GPU 状态
nvidia-smi

第四步:排查挖矿程序或异常进程

  1. 检查是否有挖矿程序
  • 使用 lsof 查看 GPU 设备的占用情况:
sudo lsof /dev/nvidia*
  • 查看是否有可疑进程(如 t-rexxmrig 等)。
  1. 检查后台任务
  • 使用 screen 或 tmux 查看隐藏的会话:
screen -ls
tmux ls
  • 附上会话并检查是否有异常任务。

第五步:检查系统日志

  1. 查看内核日志
dmesg | grep NVRM
  • 输出示例:
[ 1234.5678] NVRM: GPU 0000:01:00.0 has fallen off the bus.
  1. 查看系统日志
journalctl -k | grep -i nvidia

第六步:硬件或驱动问题

  1. 更新 NVIDIA 驱动
  • 卸载旧驱动:
sudo apt-get purge nvidia-*
  • 重新安装最新驱动:
sudo apt-get install nvidia-driver-<version>
  1. 检查硬件连接
  • 确保 GPU 插槽和供电正常。
  • 尝试单卡启动,排除单卡故障。

第七步:重启系统

如果以上方法均无效,尝试重启系统以释放资源:

sudo reboot

注意事项

  1. 数据备份:强制终止进程可能导致数据丢失,确保重要数据已备份。
  2. 权限问题:使用 sudo 时需谨慎,避免误杀系统关键进程。
  3. 多用户环境:如果是共享服务器,需与管理员确认进程归属。

通过以上步骤,通常可以解决显存被占用但 nvidia-smi 无法显示进程的问题。如果问题持续,可能需要进一步排查硬件或联系 NVIDIA 支持。

posted @ 2025-07-09 14:29  温泉镇谢步东  阅读(701)  评论(0)    收藏  举报