我一直在阅读有关优化 QEMU 的一些资料,但有一件事让我感到困惑,那就是开关-cpu
。
目前我正在使用-cpu host
一种将主机的所有 CPU 功能转移给客户机的方法,但有人说它的功能不止于此,还为客户机提供了主机可能不支持的额外功能。这会导致软件模拟这些功能,从而降低 VM 的速度。
另一篇文章(http://forum.ipfire.org/viewtopic.php?t=12642) 表示使用qemu32
cpu 选项,然后将主机支持的所有其他处理器特定选项附加到它。
哪种方法实际上可以更好地优化虚拟处理器?处理器是否qemu32
已经实现了某些特定标志,我无需手动添加这些标志,或者我应该添加每个标志/proc/cpuinfo
?同样,如果我运行的是 64 位客户机,我应该使用 qemu32 虚拟处理器吗?
谢谢你的帮助。
答案1
首先,我不会相信你在网上读到的所有内容。大部分都是废话。
不过,似乎确实-cpu host
表现得像你描述的那样。至少,笔记qemu 的 wiki 上说他们希望它按照那种方式运行。
all-you-can-enable:启用每个可以启用的位,包括主机上不存在但可以模拟的位。
-cpu host 将是“全能启用”模式,它将启用 VCPU 上的 GET_SUPPORTED_CPUID 的每一位
他们还指出,如果您想要对 CPU 模型有更多的控制权,那么 libvirt 是最好的选择。
其次,除了极少数情况外,我绝不会尝试自己直接运行 qemu。相反,最好使用 libvirt(推荐)及其前端之一,例如 virsh 或 virt-manager,因为它们可以让您完全控制虚拟机,并且界面使用起来更加方便(就 virt-manager 而言)。
具体来说,libvirt有能力的做你想做的事:将主机 CPU 功能准确复制到客户机,而不启用不存在且必须模拟的功能(使用host-passthrough
,尽管大多数时候host-model
就足够了)。
至于 qemu32,qemu 的默认是 qemu64,所以我不知道通过将其更改为 qemu32 您可能得到什么,除了偏头痛。