我第一次使用 LXD,我的目标是托管三个虚拟机,每个虚拟机都有一个专用 GPU。我可以将任何一个 GPU 传递到来宾虚拟机 (Windows),但是当我使用自己的 GPU 启动第二个虚拟机时,服务器会在大约 30 秒后锁定。通常,我会查阅日志来尝试找出问题的根源,但是,我要么没有在正确的位置查找,要么系统在到达日志记录点之前就锁定了。当系统锁定时,除了按住电源按钮之外,无法与其交互。
- 我已在 BIOS 中配置 CPU 以支持 IOMMU 功能
- 我已在 GRUB 引导配置中启用了 IOMMU 功能
- 我已经确认每个 GPU 都在自己的 IOMMU 组中,并且 CPU 实际上支持 IOMMU。
- 我已将 GPU 的驱动程序配置为在引导 soas 上使用 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:3 个 NVIDIA Quadro RTX 4000
机箱:CSE-118超微
我的预感与 IOMMU 组或 qemu 中的某种配置有关,但我尚未尝试过。也许我需要为每个虚拟机分配特定的 CPU 核心,以便将组分配分配给同一个 CPU(不知道我会如何做到这一点)?此时我很高兴能得到一些错误日志,这样我就有了一些东西可以解决。
我查阅过的指南:
在咨询了法学硕士大约一个小时后,我发现根本原因是我将 102% 的主机 RAM 分配给了我的来宾虚拟机。令我惊讶的是,我能够在任何时候运行两个虚拟机而不会导致系统崩溃。我想这只是为了表明,即使你花了几周的时间试图解决问题,也要检查基本的事情。