操作指令
# 查看NVIDIA GPU状态和进程
nvidia-smi
# 查找所有包含"python"的进程
ps -ef grep python
# 强制结束进程号为3023的进程
kill -9 3023
截图演示
在 Linux 系统中清理 GPU 显存可以采用以下方法:
1. 终止特定进程(常用方法)
如果某些进程占用了 GPU 显存,可以执行以下操作:
- 使用
nvidia-smi
查看 GPU 当前运行的进程列表。 - 找到需要终止的进程对应的
PID
。 - 使用以下命令终止进程:
kill -9 <PID>
替换 <PID>
为对应的进程 ID。
2. 重启 NVIDIA 持久化守护程序(操作简单)
如果显存没有被完全释放,可以通过重启守护程序清理显存(注意:可能会影响正在运行的服务):
sudo systemctl restart nvidia-persistenced
3. 卸载并重新加载 NVIDIA 驱动
如果 nvidia-smi
没有显示进程,但显存仍然被占用,可以卸载并重新加载驱动:
sudo rmmod nvidia_uvm nvidia_drm nvidia_modeset nvidia
sudo modprobe nvidia
注意:在执行该命令前,请确保 GPU 驱动不会被其他关键任务依赖。
4. 使用 fuser
命令查找相关进程
如果显存占用问题无法通过 nvidia-smi
找到根源,可用 fuser
查找相关进程:
sudo fuser -v /dev/nvidia*
找到占用 GPU 的进程后,使用 kill -9 <PID>
终止它们。
5. 重启系统
如果以上方法均无法释放显存,重启系统是最直接和可靠的方法来清空显存。
自动清理 GPU 显存脚本
您可以创建一个脚本来自动清理 GPU 占用的显存:
#!/bin/bash
echo "正在终止所有使用 GPU 的进程..."
sudo fuser -v /dev/nvidia* | awk '{print $2}' | xargs -n 1 kill -9
保存为文件并授予执行权限:
chmod +x clear_gpu_memory.sh
然后以管理员权限运行脚本即可。
注意事项
- 请确保终止的进程不会对重要任务或应用程序造成影响。
- 在使用强制方法(如卸载驱动或重启系统)前,请保存所有正在进行的工作。