我注意到有几篇文章声称 QEMU 比 VirtualBox 慢(没有硬件辅助),但其中有些已经有好几年了,最新的一篇似乎是去年的。
- QEMU 真的比 VirtualBox 慢吗?
- 如果是,为什么?
- 有没有什么技巧可以缩小性能差距?
我的一些主机系统没有硬件虚拟化支持,所以我对无需内核模块的性能技巧特别感兴趣。
答案1
如果您谈论的是 x86 主机上的 x86 虚拟化,请注意 kqemu(qemu 的旧加速内核模块)已被弃用。内核虚拟机 (KVM) 是“未来的发展方向”,但它仅适用于 Linux 主机。客户机可以是任何您想要的操作系统,只要它是 x86 架构即可。
跨架构,qemu 仍然非常慢;就在今天,我在客户机中尝试使用最新的 qemu 和 Debian MIPS64……它可以从终端使用,但在 Xorg 中却非常慢。据我所知,当您跨架构时,您不能使用处理器加速指令,如扩展页表或 VT-x。这一切都是在软件中模拟的。
因此对于 x86 到 x86 的虚拟化,“原始” qemu 很慢,但 KVM(用途qemu 速度很快。速度非常快。速度如此之快,以至于它是 Red Hat 为 RHEL 推荐的虚拟化解决方案。
在硬件加速 2d/3d 图形性能方面,VirtualBox 仍然远超 qemu/kvm,因为 kvm 专注于服务器虚拟化,而 virtualbox 专注于桌面虚拟化。但是,如果您要处理服务器,我强烈建议您查看 kvm。
编辑:对于没有任何硬件加速的主机,无论使用哪种虚拟化解决方案,您都将承受相当大的开销。用软件模拟硬件既困难又昂贵。
答案2
假设主机具有具有虚拟化功能的 CPU(Intel VT-x、AMD SVM),在内核(带有 KVM 的 Linux)上运行 Qemu,则速度相当快。
Qemu 在 2D(youtube、电子表格、游戏)和 3D 模拟方面速度缓慢的技术原因对我来说尚不清楚。不过,我可以猜测,“视频驱动程序”根本不够好 - 硬件中的图形硬件没有得到最佳利用。
好的一面是,最近的一项开发将 SPICE 框架引入了 qemu。实际上,它已有几年历史,而且看起来相当成熟。根据我的经验(2D Web 开发),使用 QXL 视频驱动程序运行的视频性能优势非常大。我不知道它与 Virtualbox 相比如何,但它肯定是一个改进。我认为对于任何在 Qemu 中运行 Windows 的人来说,SPICE 都是必备的。
这仅是我的意见,需要注意的是,我从来没有尝试在客户端运行任何 3D 或视频播放。