我一直在阅读关于优化QEMU的一些知识,而我感到困惑的是-cpu开关。
目前,我正在使用-cpu host ,该主机应该将所有主机的cpufunction转移给客户,但有些人表示,它不止于此,并为客户提供主机可能不支持的额外function。 这导致软件模拟function,可能会减慢虚拟机。
另一篇文章( http://forum.ipfire.org/viewtopic.php?t=12642 )说使用qemu32 cpu选项,然后附加主机支持的所有其他处理器特定的选项。
哪种方法实际上更好地优化了虚拟处理器? 是否有具体的标志, qemu32处理器已经实现,我不必手动包括或者应该包括从/proc/cpuinfo每个标志? 同样,如果我正在运行64位guest虚拟机,我应该使用qemu32虚拟处理器吗?
谢谢你的帮助。
首先,我不相信你在互联网上阅读的所有内容。 大部分是废话。
虽然, 看起来 -cpu host的确按照你描述的方式行事。 至less,关于qemu wiki的说明表示他们打算这样做。
all-you-can-enable:启用每个可以启用的位,包括主机上不存在但可以模拟的位。
-cpu主机将是“all-you-can-enable”模式,这将启用VCPU上GET_SUPPORTED_CPUID的每一位
他们还指出,如果你想要更多地控制CPU模型,libvirt就是要走的路。
其次,在非常罕见的情况之外,我绝不会直接尝试自己运行qemu。 相反,最好使用libvirt(推荐)和其前端之一(如virsh或virt-manager),因为这些使您能够使用更易于使用的界面完全控制虚拟机(在virt-manager )。
尤其是,libvirt 能够做你想做的事情:将主机CPU特性完全复制到guest虚拟机,而不启用不存在的function,并且必须被仿真(使用host-passthrough ,尽pipe大部分时间host-model已经足够)。
至于qemu32,qemu的默认是qemu64,所以我没有看到你可能获得什么,除了偏头痛,通过改变这个qemu32。