当在docker container里面运行GPU程序的时候,通过 nvidia-smi 只能看到当前 container里面启动的程序,而无法看到所有运行在GPU上的程序,这个原因是因为nvidia-smi 这个命令通过扫描持有驱动的PID来查找对应的程序。

因此在docker container里面默认看不到别的地方启动的PID,而实际上实际上看不到才是正统的,因为docker container存在的价值就是进行多租户隔离,自己管自己,如果能看到别人,还能干掉别人的,实际上已经破坏多租户的概念了,这个隔离意义就不大,单纯就是个程序环境隔离了。

如果非要看到,也可以通过-pid=host 把物理机器的透过去,就能看到,不过这样来说,基本上就破坏了隔离性。

https://stackoverflow.com/questions/63654885/is-it-correct-that-nvidia-smi-on-docker-does-not-show-processes

https://github.com/NVIDIA/nvidia-docker/issues/179


扫码手机观看或分享: