QEMU的性能是否仍然落后于VirtualBox,并且有没有硬件支持+ kvm内核模块的改进方法?


9

我注意到有几篇文章声称QEMU比VirtualBox慢(没有硬件协助),但是有几篇文章已经使用了几年,而最新的似乎是去年的。

  • QEMU确实比VirtualBox慢吗?
  • 如果可以,为什么?
  • 是否有任何技巧可以缩小性能差距?

我的某些主机系统不支持硬件虚拟化,因此我对没有内核模块的性能提示特别感兴趣。

Answers:


10

如果您正在谈论x86主机上的x86虚拟化,则建议不要使用kqemu(qemu的旧加速内核模块)。内核虚拟机(KVM)是“前进的方向”,但仅适用于Linux主机。来宾可以是您想要的任何操作系统,只要它是x86体系结构即可。

跨架构,qemu仍然很慢;就在今天,我在来宾中尝试了最新的qemu与Debian MIPS64 ....它可以在终端上使用,但在Xorg中却非常慢。据我所知,跨架构时不能使用扩展页表或VT-x之类的处理器加速指令。所有这些都在软件中模拟。

因此,对于从x86到x86的虚拟化,“原始” qemu速度很慢,而KVM(使用 qemu)则很快。蛮快。如此之快,以至于红帽为RHEL推荐了虚拟化解决方案。

VirtualBox仍然无法满足qemu / kvm在硬件加速的2d / 3d图形性能方面所能提供的一切,因为kvm专注于服务器虚拟化,而virtualbox专注于桌面虚拟化。但是我绝对建议您在处理服务器时签出kvm。

编辑:对于没有任何硬件加速的主机,无论使用哪种virt解决方案,您都将遭受相当大的开销。在软件中模拟硬件是困难且昂贵的。


2
ls $(which kvm)显示与的符号链接qemu-system-x86_64。我猜这正是您使用QEMU与KVM讨论的内容吗?
Catskul

是的,但是顾名思义,KVM是基于内核的虚拟机,这意味着系统管理程序胆量位于内核模块“ kvm”中。您可以根据需要将其视为与旧的kqemu相似,但在架构上却大不相同。当kvm运行时,qemu比实际的管理程序更像是前端。
allquixotic

哦,我忘了补充:没有“内核模块”(如您所说;您真正的意思是“没有硬件加速”)的qemu(和其他虚拟化系统)之所以如此缓慢的原因是,某些硬件操作来宾表演很难在软件中模拟。好吧,就不可靠或复杂而言,这并不难;只是sloooooooooooooow。因此,英特尔花费了十年的大部分时间,以VT-x和EPT的方式为我们提供了硬件加速的指令,以指导最慢的虚拟化。唯一的解决方法是使用支持这些指令集的硬件。
allquixotic

有没有什么可以使virtualbox在没有硬件加速的情况下也更快?
Catskul

不需要。没有硬件加速,性能应该是相当相等的。VirtualBox可能具有先进的x86优化功能,使其在软件中的运行速度略有提高,这是适当的,因为virtualbox首先仅支持x86,而qemu的竞争领域更为广泛(非x86体系结构)。但这是一个实现/设计细节,基本上可以归结为缓存位置,优化的内部循环,手工编码的汇编程序,主机端磁盘I / O缓存或其他技巧。不知道vbox在多大程度上做了qemu不会做的这些事情,但是它们并不是很相关...
allquixotic

1

假设主机具有支持虚拟化的CPU(Intel VT-x,AMD SVM),并且在内核(带有KVM的Linux)上运行Qemu,则速度相当快。

Qemu在使用2D(youtube,电子表格,游戏)和3D仿真时反应缓慢的技术原因对我来说还是不清楚的。但是,我可以猜测“视频驱动程序”根本不够好-硬件中的图形硬件未以最佳方式使用。

好的一面是,最近的发展将SPICE框架引入了qemu。实际上,它已经存在了几年,并且看起来相当成熟。根据我的经验(使用2D Web开发),使用QXL视频驱动程序运行时具有视频性能优势。我不知道它与Virtualbox相比有多好,但这绝对是一个进步。我认为SPICE对于在Qemu中运行Windows的任何人都是必须的。

这仅是我的意见,应该指出的是,我从未尝试过在来宾中运行任何3D或视频播放。


1
如果说“面向图形的仿真”是指3D加速,那是因为GPU无法像CPU一样虚拟化。软件仿真不可能太慢,因此,现在有两种解决方案:1. API传递(即,来宾中的DirectX调用在主机上作为DirectX调用执行)2. VGA传递(真正的交易:整个图形卡都可用给客人)。QEMU支持#2。
马库斯

@Marcus Passthrough是必经之路。
ЯрославРахматуллин
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.