在维护多显卡服务器的过程中,发现了一个奇怪的现象,就是某一块显卡的显存全被占满,但是使用率为0,而且使用nvidia-smi指令也看不到任何占用程序。经过询问发现,有个用户的程序有bug,每次用显卡加速后,都会异常退出,并且会留下僵尸进程占用该显卡。为了解决该问题,查资料后找到办法(需要管理员权限):
sudo fuser -v /dev/nvidia*
查看每个显卡的占用进程,这些进程是top和nvidia-smi指令不显示的。
如图所示,服务器被异常占用的显卡是1号卡,僵尸进程是由于Python程序异常退出导致的,那我就将1号卡对应的python进程kill掉就行了:
sudo kill -9 32188
sudo kill -9 32209
然后再输入watch nvidia-smi查看显卡占用情况,果然就正常了。