在服务器上发现 nvitop 显示某张 GPU 显存被占用,但进程一栏是:

No Such Process

直接执行:

kill -9 <PID>

又提示:

No such process

这种情况一般是进程异常退出、子进程或僵尸进程没有正确释放 GPU 资源导致的。


1. 用 sudo 查看真实占用进程

普通用户可能看不全其他用户的 GPU 进程,所以要用 sudo

sudo fuser -v /dev/nvidia*

如果只看某张卡,比如 GPU 1:

sudo fuser -v /dev/nvidia1

输出中可以看到占用该 GPU 的用户和 PID,例如:

USER        PID     COMMAND
xxx         12345   python

2. 切换到对应用户

找到占用显存的用户后,切换到该用户:

sudo su - <username>

例如:

sudo su - xxx

3. 清理该 GPU 上的进程

在对应用户下执行:

fuser -v /dev/nvidia1

确认是这个用户的进程后,可以清理:

fuser -v /dev/nvidia1 | xargs -t -n 1 kill -9

注意:这条命令会杀掉 /dev/nvidia1 上查到的进程,慎用。多人服务器上一定要先确认不要误杀别人的任务。


4. 再检查 GPU 是否释放

退出用户:

exit

然后查看:

nvidia-smi

或者:

nvitop

如果显存释放了,说明处理成功。


总结

我的处理流程是:

sudo fuser -v /dev/nvidia*
sudo su - <占用显存的用户>
fuser -v /dev/nvidia1
fuser -v /dev/nvidia1 | xargs -t -n 1 kill -9
nvidia-smi

核心点:

  • fuser 查 GPU 占用时最好用 sudo
  • 普通用户可能看不到完整 GPU 进程;
  • 找到对应用户后,切换到该用户再 kill;
  • No Such Process 不能直接 kill 原来的 PID,要通过 /dev/nvidiaX 找真实占用进程;
  • 清理整张卡进程前要确认不会影响其他人的任务。
最后修改:2026 年 06 月 16 日
如果觉得我的文章对你有用,请随意赞赏