Background

GPU 幽灵显存占用

326
2 分钟阅读

遇到 GPU 显存被占用但 nvidia-smi 找不到对应进程(即“幽灵显存”),这通常是因为进程异常退出(如被强制 kill 或崩溃),导致操作系统层面的进程结束了,但 GPU 驱动层面的上下文或共享内存没有被正确释放。

解决方案

清理残留的共享内存 (IPC)

这是解决“幽灵显存”最有效的方法之一。很多时候显存占用并非来自活跃进程,而是残留的 NVIDIA 共享内存段。

Terminal window
# 查找并删除与 nvidia 相关的共享内存段
sudo ipcs -m | grep nvidia | awk '{print $2}' | xargs -I {} sudo ipcrm -m {}

原理ipcs -m 列出共享内存,grep 筛选 NVIDIA 相关项,ipcrm 负责强制删除。执行后,显存通常会瞬间释放。

使用 fuser 锁定“隐形”进程

nvidia-smi 有时无法显示所有进程,但操作系统底层的设备文件占用是藏不住的。

查看谁在占用设备文件

Terminal window
sudo fuser -v /dev/nvidia*

这会列出所有正在访问 GPU 设备文件的进程 PID。

强制结束可疑进程

Terminal window
sudo kill -9 <PID>

清理所有 python 程序

如果是 Python 相关的显存占用,可直接删除该用户的所有 Python 进程:

Terminal window
pkill -u yourusername python
GPU 幽灵显存占用
/blog/26037838
作者
发布于
2026/3/19
许可协议
CC BY-NC-SA 4.0