这是我第一次使用 LXD,我的目标是托管三台虚拟机,每台虚拟机都配备专用 GPU。我能够将任意一台 GPU 传递给客户虚拟机 (Windows),但是当我启动第二台拥有自己 GPU 的虚拟机时,服务器会在大约 30 秒后锁定。通常,我会查阅日志以尝试彻底解决此问题,但是,我要么没有在正确的地方查找,要么系统在到达日志记录点之前就锁定了。当系统锁定时,除了按住电源按钮之外,没有其他方式可以与其交互。
- 我已在 BIOS 中将 CPU 配置为支持 IOMMU 功能
- 我已在 GRUB 启动配置中启用了 IOMMU 功能
- 我已经确认每个 GPU 都在自己的 IOMMU 组中,并且 CPU 确实支持 IOMMU。
- 我已经将 GPU 的驱动程序配置为在启动时使用 VFIO-PCI,以消除驱动程序切换时的任何问题。
- 我一直在关注
/var/log/messages
和/var/log/dmesg
- 监控
top
似乎没有指出任何特定进程占用了所有的 CPU - 我已经将哪些设备分配给了哪些虚拟机,但似乎并没有解决问题。
- 我可以同时运行两个虚拟机如果我消除其中一个的 GPU 分配。
- 我正在为虚拟机使用唯一的 PCI 地址。
- 我正在通过 Web UI 启动虚拟机。
操作系统:Ubuntu Server 22.04,此之前全新安装,所有软件包均已更新。
CPU:2 个 Intel(R) Xeon(R) CPU E5-2697 v3
GPU:3x NVIDIA Quadro RTX 4000
机箱:CSE-118 Supermicro
我的直觉是与 IOMMU 组或 qemu 中的某种配置有关,但我还没有尝试过。也许我需要为每个 VM 分配特定的 CPU 核心,以便将组分配分配给同一个 CPU(我甚至不确定如何做到这一点)?此时,我很高兴能得到一些错误日志,这样我就可以有所参考。
我参考过的指南: