问题:远程服务器,输入nvidia-smi,看到显存使用率(Memory Usage)几乎占满,但,显存利用率(GPU-Util)为0%。
原因:显存利用率为0%,说明现在没有进程在跑;显存使用率占满,说明有进程跑完之后,没有释放掉,一直静静地占着地儿。
解决:输入 ps aux | grep python,查看正在运行的与 "python" 相关的进程,使用 kill PID1 PID2 PID3 ... PIDn 把它们kill掉(如果这样kill不掉,可以用 kill -9 PID1 PID2 PID3 ... PIDn,表示强制性终止)。
此外,还尝试了另一种方法,输入 nvidia-smi --query-compute-apps=pid,used_memory --format=csv 也可以看到正在运行的进程,但是当我kill它们时,显示 No Such Process,原因是:这个命令查询到的进程ID(PID) 是 nvidia-smi 自己维护的,而不是操作系统维护的真实PID,真实的PID可以通过其他方式(例如上面使用ps命令)获取。
导致上述情况的原因:为什么那么多僵尸进程?
① jupyter不会释放显存。
② 使用 pycharm 的 python console 进行调试的时候,调完之后要把进程终止掉,而不是把界面叉掉!!仅仅是叉掉界面,进程就会处于跑完了但是没释放的状态!确保 Process finished with exit code 0 才代表进程结束了。