[千问生成]僵尸进程占用显存没有释放怎么办 nvidia-smi 看不到进程,只能看到显存被占用
当 nvidia-smi 无法显示占用 GPU 显存的进程,但显存被占用时,可能是以下原因导致的:
- 僵尸进程残留:进程已结束但未正确释放资源。
- 权限问题:当前用户无法看到其他用户的进程。
- 隐藏的进程:某些进程可能通过容器、虚拟化或后台服务运行。
- 驱动或硬件问题:显卡驱动异常或硬件故障。
以下是分步解决方案:
第一步:检查隐藏的 GPU 进程
- 使用
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)。
- 强制终止进程:
sudo kill -9 <PID>
- 如果多个进程,可以批量处理:
sudo fuser -v /dev/nvidia* | awk '{print $2}' | xargs -I {} sudo kill -9 {}
第二步:检查僵尸进程
- 查找僵尸进程:
ps aux | grep 'Z'
- 输出示例:
user 12345 0.0 0.0 0 0 pts/0 Z 00:00:00 python3
- 记录僵尸进程的 PID。
- 终止僵尸进程的父进程:
- 找到僵尸进程的父进程 ID(PPID):
ps -o ppid= -p <PID>
- 终止父进程:
sudo kill -9 <PPID>
第三步:强制重置 GPU 显存
如果上述方法无效,可能需要强制重置 GPU:
- 卸载 NVIDIA 模块:
sudo modprobe -r nvidia_uvm nvidia_drm nvidia_modeset nvidia
- 如果提示模块仍在使用,强制卸载:
sudo rmmod nvidia_uvm
- 重新加载 NVIDIA 模块:
sudo modprobe nvidia
- 检查 GPU 状态:
nvidia-smi
第四步:排查挖矿程序或异常进程
- 检查是否有挖矿程序:
- 使用
lsof查看 GPU 设备的占用情况:
sudo lsof /dev/nvidia*
- 查看是否有可疑进程(如
t-rex、xmrig等)。
- 检查后台任务:
- 使用
screen或tmux查看隐藏的会话:
screen -ls
tmux ls
- 附上会话并检查是否有异常任务。
第五步:检查系统日志
- 查看内核日志:
dmesg | grep NVRM
- 输出示例:
[ 1234.5678] NVRM: GPU 0000:01:00.0 has fallen off the bus.
- 查看系统日志:
journalctl -k | grep -i nvidia
第六步:硬件或驱动问题
- 更新 NVIDIA 驱动:
- 卸载旧驱动:
sudo apt-get purge nvidia-*
- 重新安装最新驱动:
sudo apt-get install nvidia-driver-<version>
- 检查硬件连接:
- 确保 GPU 插槽和供电正常。
- 尝试单卡启动,排除单卡故障。
第七步:重启系统
如果以上方法均无效,尝试重启系统以释放资源:
sudo reboot
注意事项
- 数据备份:强制终止进程可能导致数据丢失,确保重要数据已备份。
- 权限问题:使用
sudo时需谨慎,避免误杀系统关键进程。 - 多用户环境:如果是共享服务器,需与管理员确认进程归属。
通过以上步骤,通常可以解决显存被占用但 nvidia-smi 无法显示进程的问题。如果问题持续,可能需要进一步排查硬件或联系 NVIDIA 支持。

浙公网安备 33010602011771号