在用ubuntu服务器跑pytorch代码时无意中产生了这种错误,导致一切对显卡相关的操作都被阻塞。

 

问题具体描述:我在ubuntu服务器上创建了screen窗口,并在screen窗口内运行深度学习程序。程序跑到一半时错误地将ctrl+z当做了强制结束命令(实则是中断并休眠,结束是ctrl+c)将显卡上的进程切入了挂起状态,随后又将整个screen窗口进程kill掉了。导致的结果是显卡上进程成为了孤儿进程,并由PID为1的init进程接管。此时显卡资源被占用,一切对显卡的IO都会被阻塞(包括nvidia-smi指令)。想要结束孤儿进程第一种方法是必须杀死其父进程,但此刻的父进程是PID为1的系统进程不能被杀死;第二种方法是等其自动结束进程周期被init进程清理。然而我的孤儿进程由于以及处于挂起状态无法继续运行,init进程无法将其资源回收,显卡也会被一直占用,导致死锁。

 

解决方案:重启服务器

 

新技能get:

1、用ps命令查看进程信息,包括PID、PPID、STAT等

2、用pstree查看进程的父进程、子进程

3、僵尸进程、孤儿进程的成因及解决方案

4、区分ctrl+z及ctrl+c的作用

 

参考:

1、https://blog.csdn.net/YuZhiHui_No1/article/details/53011390

2、https://www.pianshen.com/article/47091344138/

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐