Linux Ubuntu释放指定GPU的显存占用

发现机器上某个GPU一直内存被占用着,也不知道被什么占用的,无法跑程序。除了重启,还有没有别的办法?

有。定点清除:

1,定位占用的进程PID
$ sudo fuser -v /dev/nvidia*
# 会显示gpu和对应的进程占用列表。/dev/nvidia2代表第三块GPU

# 输出例如:
# ...
#/dev/nvidia2:        root       5493 F.... Xorg
#                     root       5613 F.... nvidia-persiste
#                     proc1  23443 F...m python
#                     proc2  23454 F...m python
#                     proc3  23456 F...m python
# ...


2,查看该进程proc1, proc2, proc3是什么时候运行的,做什么用的。以proc1为例:
2.1 提升权限到root,这一步非必须。但是如果$ sudo ll 命令提示权限不足时,有必要先提升权限。因为你要看的进程可能是别的用户启动的。
$ su
2.2 查看进程在干什么
# ll /proc/23443
或者
$ sudo ll /proc/23443

# 输出例如:
# ...
# lrwxrwxrwx   1 user1 user1 0 Mar 18 10:19 cwd -> /home/user1/project1/
# lrwxrwxrwx   1 user1 user1 0 Mar 18 10:19 exe -> /home/user1/anaconda3/envs/tensorflow/bin/python3.6*
# ...

# 可以发现这个进程是user1在3月18日启动的,运行的目录是在/home/user1/project1/,是用python3.6执行的。


3,确定以上占用的进程没有用后,终止掉
# kill 23443
或
$ sudo kill 23443

4,如果第2步中登陆了root的话,最后退出root用户
# exit

这就完成了占用GPU的程序的定点清除。此时你再用nvidia-smi看指定的gpu(上例中是第三块GPU),显存占用已经降下来了

非常感谢:https://blog.csdn.net/liangdong2014/article/details/78860661

发布了189 篇原创文章 · 获赞 72 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/qxqxqzzz/article/details/105141375