如何找到并杀掉占用显存的僵尸进程

2023-12-27 12:35:44

如何找到并杀掉占用显存的僵尸进程

nvitop 命令发现占用显存的僵尸进程

nvitop 命令可以实时监控显卡显存的占用,CPU 的占用,以及占用显卡的进程信息等(如下图)。nvitop 中显示 No Such Process 的进程,且它的 CPU 使用率、内存使用率这一列显示 N/A,说明在 1 号 GPU存在僵尸进程占用了显存。

nvitop 的安装和使用:https://zhuanlan.zhihu.com/p/614024375?utm_id=0

在这里插入图片描述

kill -9 杀掉指定显卡上的所有进程,释放显存

这里不能直接使用 kill -9 杀掉 nvitop 命令上显示的进程号,会报错 No Such Process。原因是在跑深度学习时,往往会启动多个进程,但是当主进程结束的时候,它的子进程没有被正常结束掉,就会导致僵尸进程。而这里 kill 掉的进程是已经结束掉的主进程,主进程已经结束了,所以就会报错 No Such Process

解决方法是找到指定显卡上的所有进程,把这些进程都杀死才能释放显存。需要注意的是由于是杀掉显卡上的所有显存,需要等到没有人正在用这张卡的时候再杀,否则可能把别人正在跑的程序 kill 掉。命令如下,nvidia 后面跟的数字就是需要清理显存的显卡的序号

# 杀掉 1 号显卡的所有进程
fuser -v /dev/nvidia1 | xargs -t -n 1 kill -9

# 杀掉 2 号显卡的所有进程
fuser -v /dev/nvidia2 | xargs -t -n 1 kill -9

执行完发现显存已经释放掉了!!

在这里插入图片描述

文章来源:https://blog.csdn.net/kybabcde/article/details/135238913
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。