背景
今天在尝试安装k8s-device-plugin
用于驱动nvidia显卡,搭建TensorFlow训练环境时,发现k8s-device-plugin
daemonset 启动失败,提示找不到CUDA Device。之前遇到过这个错误,所以我直接确定是nvidia-driver安装有问题。
原因
原因是我在这台机器上安装过两个版本的nvida-driver,但旧版本由于卸载方式不正确,卸载不干净。导致kernel mod 的 Nvidia driver 的版本没有更新,一般情况下,重启机器就能够解决,如果因为某些原因不能够重启的话,也有办法reload kernel mod。
解决思路
于是我登录到目标机器上,查看nvdia-driver状态,输出如下:
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
于是我安装 解决Driver/library version mismatch 这篇文档尝试reload kernel mod:
$ sudo rmmod nvidia
rmmod: ERROR: Module nvidia is in use by: nvidia_uvm
从上面的提示信息可以看出:nvidia目前正在被nvida_uvm进程占用,所以需要先卸载nvidia_uvm。命令如下:
$ sudo rmmod nvidia_uvm
[mesos@bj3-136-163-14-s1 nvidia_driver]$ nvidia-smi
然后在重新执行sudo rmmod nvidia
。
再重新通过nvidia-smi
命令查看显卡状态,发现显卡已经恢复正常:
$ nvidia-smi
Mon Nov 18 17:24:53 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.43 Driver Version: 418.43 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:18:00.0 Off | N/A |
| 28% 53C P0 76W / 250W | 0MiB / 10989MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce RTX 208... Off | 00000000:D8:00.0 Off | N/A |
| 14% 52C P0 60W / 250W | 0MiB / 10989MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
再回到Kubernetes中查看k8s-device-plugin
的运行状态,发现已经恢复正常,问题解决。
网友评论