libvirt/cgroups 重置了 CPU 亲和性

libvirt/cgroups 重置了 CPU 亲和性

启动虚拟机时,archlinux 主机上所有进程的 CPU 核心亲和性都会重置为所有核心。虚拟机停止时也会发生同样的情况。

我的虚拟机使用 CPU 锁定,但几个月前才出现这种情况。我尝试使用 virt-manager 和 virsh 启动它,两者都是这样做的。

我一直在阅读有关 cgroups 的文章,但它并没有告诉我它会触及亲和性设置。

当前 libvirt 版本:1:7.5.0-1

关于游戏虚拟机的 CPU 隔离、核心屏蔽等话题有很多,但我不明白为什么正常的核心亲和性应该重置。有没有办法找出导致这种情况的原因?我通常使用任务集设置亲和性。也许这应该是一个新功能,但我找不到。

答案1

确实是 cgroups!

更确切地说是 cgroups2。这个“错误”可能是在我的发行版 Arch Linux 更改 cgroups 时引入的。

“可以通过 /etc/libvirt/qemu.conf 配置文件明确关闭控制器的使用,即使已安装也是如此。”根据https://libvirt.org/cgroups.html#legacyLayout。但这对我来说根本不起作用。它只是使用 cgroups 创建了 cpuset(我不知道为什么)。

但是,这个问题对我来说已经解决了,因为我们可以构建没有 cpuset(甚至根本没有 cgroup)的内核。旁注:您可以安全地执行此操作,所有配置的核心固定都将正常保留。

如果您有更好的解决方案或关于 libvirt 中的配置如何工作的见解,我们仍然欢迎您!

相关内容