我们一位用户在对自家VDI桌面的GPU卡进行升级后,发现无法启动带有vGPU的虚拟机,报错如下:
于是用户与我们的工程师联系排查问题,我们的虚拟化工程师第一反应会不会是GPU卡驱动没有安装好,经过排查确认驱动正常,可以使用nvidia-smi命令:
[root@localhost:~] nvidia-smi
Thu Mar 3 11:57:58 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.82 Driver Version: 470.82 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A16 On | 00000000:3F:00.0 Off | 0 |
| 0% 57C P8 16W / 62W | 0MiB / 15105MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A16 On | 00000000:40:00.0 Off | 0 |
| 0% 59C P8 15W / 62W | 0MiB / 15105MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA A16 On | 00000000:41:00.0 Off | 0 |
| 0% 46C P8 15W / 62W | 0MiB / 15105MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA A16 On | 00000000:42:00.0 Off | 0 |
| 0% 39C P8 15W / 62W | 0MiB / 15105MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
接着我们的虚拟化工程师怀疑是不是GPU卡的ECC没关闭导致的异常,经查用户使用的是nVidia A16 GPU卡,在对A16的参数进行查询确认后,发现是支持vGPU模式下开启ECC功能。
具体关于ECC的描述可以参考官方文档:
NVIDIA Virtual GPU Software Packaging,Pricing, and Licensing Guide中也有对ECC的描述:
接着考虑到用户之前使用的GPU卡型号比较老,ESXi版本较低,我们也对虚拟机的兼容性进行了升级,但是仍然相同错误,无法启动。
在对ESXi及vCenter进行一些列检查后并未发现问题,突然我们一位工程师提到会不会是SR-IOV没有开,在NVIDIA vGPU 12.0版本以后部署安装vGPU需要启用SR-IOV,可以参考官方文档:
https://docs.nvidia.com/grid/12.0/grid-vgpu-user-guide/index.html#prereqs-vgpu
在对BIOS设置进行检查后,果然SR-IOV功能处于disable状态。
我们将其打开并重新引导ESXi操作系统后,安装了vGPU的虚拟机终于正常运行了起来!