GPU 幽灵显存占用
遇到 GPU 显存被占用但 nvidia-smi 找不到对应进程(即“幽灵显存”),这通常是因为进程异常退出(如被强制 kill 或崩溃),导致操作系统层面的进程结束了,但 GPU 驱动层面的上下文或共享内存没有被正确释放。
解决方案
清理残留的共享内存 (IPC)
这是解决“幽灵显存”最有效的方法之一。很多时候显存占用并非来自活跃进程,而是残留的 NVIDIA 共享内存段。
# 查找并删除与 nvidia 相关的共享内存段sudo ipcs -m | grep nvidia | awk '{print $2}' | xargs -I {} sudo ipcrm -m {}原理:ipcs -m 列出共享内存,grep 筛选 NVIDIA 相关项,ipcrm 负责强制删除。执行后,显存通常会瞬间释放。
使用 fuser 锁定“隐形”进程
nvidia-smi 有时无法显示所有进程,但操作系统底层的设备文件占用是藏不住的。
查看谁在占用设备文件:
sudo fuser -v /dev/nvidia*这会列出所有正在访问 GPU 设备文件的进程 PID。
强制结束可疑进程:
sudo kill -9 <PID>清理所有 python 程序
如果是 Python 相关的显存占用,可直接删除该用户的所有 Python 进程:
pkill -u yourusername pythonGPU 幽灵显存占用
/blog/26037838