显存被占用-显示没有进程
在深度学习(基于Pytorch)任务 nohup 后台训练时,可以用nvidia-smi命令查看进程的GPU运行状态,如图
nvidia-smi
当kill掉进程后,发现进程没有了,但是显存依然被占用。这种情况多半是代码中 num_works 的设置大于1导致的。nvidia-smi显示的PID是父进程,那么在kill掉此进程后,子进程仍然在工作。关键问题在于如何找到子进程并终止。
解决办法:
- 查找当前运行的所有进程,并找到自己执行时的命令
ps -aux
- 根据程序执行命令彻底kill掉其他子进程
kill $(pgrep -f "python XXX.py --XXX")
为了防止出现此种情况,每次想kill掉进程的时候不要直接 kill,要同时kill掉当前进程与子进程(PID代表进程号):
kill $(pgrep -P PID)