Linux KVM的虚拟化性能

时间:2022-09-30 07:22:19

仅仅作为一个版本的候选者来说,Linux 2.6.20已引起世人的广泛关注。在增加异步SCSI扫描、多线程USB探测以及许多驱动程序更新的基础上,Linux 2.6.20包含一个完整的虚拟化(而不是准虚拟化―Paravirtualization)解决方案。基于内核的虚拟机是一个GPL的软件项目,此项目由Qumranet发起并负责开发。在本文中,我们将展示Linux的基于内核的虚拟机(KVM)及相关重要特性,我们还要对KVM与其它的虚拟化方案(如QEMU Accelerator和Xen)作简洁的比较。

融合到Linux 2.6.20内核的重要方面是用于管理虚拟硬件的驱动程序。组成KVM的另一个部件是用户空间程序,这是一个QEMU的改进版本。Linux的基于内核的虚拟机使用Intel的VT和AMD的SVM/AMD-V作为硬件的虚拟化支持。也就是说,使用KVM的现行的硬件需要的是一个支持上述两种技术之一的X86处理器。这些技术分别体现在Intel的Core系列及后续处理器,Xeon 5000系列及后续处理器,Xeon LV系列,还有AMD的Socket F和AM2处理器上。

基于内核的虚拟机还指派每一个虚拟机为一个常规的Linux过程,此过程由Linux调度程序通过增加一个客户端模式执行来处理。由于虚拟机是一个标准的Linux过程,因此所有的过程管理工具都是可用的。KVM内核部件被嵌入到Linux 2.6.20-rc1内核及更新的版本,但KVM模块还能够建立在更老的内核(2.6.16 到 2.6.19)之上。目前,KVM支持Intel主机、AMD主机、Linux客户机(x86 和 x86_64)、Windows客户机(x86)、SMP主机和非活动迁移客户机。然而,大量的工作仍花费在优化的MMU虚拟化、活动迁移和SMP客户机上。目前,Microsoft Windows x64与KVM并不能协同工作。

无论是正运行着一个内建KVM的内核还是将KVM作为一个模块装载,设置和运行客户机操作系统的过程是相当简单的。在设置一个镜象(qemu-img将会与KVM协同工作)和KVM内核部件装载之后,QEMU的改进版本可通过标准的QEMU参数使系统保持良好运行。

使用KVM的硬件需求是一个x86/x86_64处理器连同AMD或Intel的虚拟化扩展,至少1GB的系统内存以保证有足够的内存用于客户机操作系统。为了说明问题,我们使用了两个双核的Intel Xeon LV处理器以及Linux2.6.20-rc3内核,此内核已在2007年1月。下面是一个所使用系统部件的简要列表(见表1)。

我们用于比较性能的基准是Gzip压缩、LAME编译、LAME编码和RAMspeed。我们使用的虚拟化部件是QEMU 0.8.2和kqemu加速模块,Xen 3.0.3及KVM。我们还将虚拟化环境与不运行任何形式的虚拟机的Fedora Core 6 Zod相比较。在Xen 3.0.3的测试中,我们使用了完全虚拟化而不是准虚拟化。在测试过程中镜象的大小被设置为10GB。在整个测试过程中,我们所使用的操作系统是Fedora Core 6 Zod(图1、图2、图3、图4、图5)。

纵览虚拟化性能的比较结果,在所有的基准测试中,KVM并非完全的优胜者。在Gzip压缩过程中,KVM处于领先的地位,但在其它的四项基准测试中,KVM却滞后于Xen3.0.3。然而,在我们选取的基准测试中,在使用支持Intel VT技术的双核的Intel Xeon LV处理器的情况下,完全虚拟化的Xen和基于内核的虚拟机都领先于采用QEMU加速器的QEMU。KVM的益处是高性能、稳定,无需修改客户机操作系统,还有大量的其它特性(例如,使用Linux调度程序)。Linux2.6.22内核正式推出后,我们就可以在各种环境中进行更多的KVM基准测试,其中包括比较AMD和Intel之间的硬件虚拟化性能。

上一篇:枝繁叶茂Ubuntu 下一篇:完善安全保障体系