⛳
dockerコンテナ上でnvidia-smiがプロセスを表示しない
問題
GPUメモリを食ってるプロセスを調べようとnvidia-smiコマンドを打つも、Processesの欄に何も表示されない😒
解決手法
- docker-compose.ymlに
pid: "host"
を追記 -
docker-compose up -d {サービス名}
- イメージを作り直してdocker-compose.ymlの更新を反映する
プロセスIDが出るようになる🎉
あとはお目当てのプロセスをkill
参考
どうやら原因は、nvidiaドライバーがPID namespaceを認識できないことのようです。
It's a current limitation of our driver, sorry about that!
As you realized, it is related to PID namespaces, the driver is not aware of the PID namespace and thus nvidia-smi in the container doesn't see any process running.
nvidia-smi and NVML are not compatible with PID namespaces.
We recommend monitoring your processes on the host or inside a container using --pid=host.
Discussion