问题
有时候用户把主进程关闭之后,子进程还是驻留在内存中,并且没有释放占用的显存
解决方案
- 使用
sudo fuser -v /dev/nvidia*
查看占用显存的孤儿进程
如果只有一个两个的话还好,但是有这么多,这样一个一个手动结束的话,太麻烦了
(下图只是nvidia4 其他几张显卡也是类似)
- 其实这些进程同属一个进程组,可以发现pid是连着的,他们的pgid(进程组id)是一致的
- 如何查询进程组id?
- 使用
ps ajx
- 找到孤儿进程,可知他的pgid(进程组id)是一致的
- 使用
kill -15 -32069
杀死进程组(kill -15 pid,pid的位置如果是正数,代表指定pid;如果是负数,代表指定进程组)
- 使用
- 如何查询进程组id?
结论
建议不要首先使用kill -9 pid
,可能导致父进程结束,但是子进程仍然滞留在内存
先试试kill
吧