KVM-QEMU + Libvirt - CPU 固定

KVM-QEMU + Libvirt - CPU 固定

我想问一下,是否可以只为特定虚拟机保留核心并阻止其他虚拟机使用它们。让我进一步解释一下:

我想将 2 台虚拟机固定到核心 0-7 和 16-23,并且我想阻止这些核心被系统(内核 isolcpus、rcu_nocbs 和 systemd AllowedCPUs)和其他虚拟机使用。我也不关心其他虚拟机将运行哪些核心,但它们不应使用核心 0-7 和 16-23。此外,我不想明确将它们固定到任何特定核心。我只希望它们使用 8-15 和 24-31 中的任何核心。

有没有什么办法可以实现这个目的?


仅补充一下。

我有 2 台虚拟机,GPU 直通固定到“保留”核心。我希望仅为这两个虚拟机保留这些核心。我想阻止内核、systemd、其他进程以及 kvm-qemu 使用这些保留核心(当然,对于 qemu,除了这两个游戏虚拟机)。似乎 isolcpus rcu_nocbs 和 systemd AllowedCPUs 工作正常,但 libvirt(或 qemu 或两者)只是忽略了这些设置。Qemu 在(libvirt 配置的)固定 CPU 上正确运行这两个虚拟机,但任何其他未明确固定的机器都可以在任何核心上运行,即使它与内核隔离并且不允许 systemd 使用。

答案1

在 /etc/systemd/system.conf 中设置“CPUAffinity”,以选择默认情况下允许一般主机操作系统进程使用的 CPU - 即您想要为专用 VM 使用保留的 CPU 的倒数。除非配置 KVM Real-Time,否则不应使用内核“isolcpus”设置,因为它还会完全关闭 CPU 上的调度,这会阻止非 VCPU QEMU 线程平衡。

使用 systemd 设置,虚拟机将默认在非保留核心上启动。然后,您可以对要使用保留核心的两个虚拟机使用 libvirt 中的 CPU 固定配置。

相关内容