系统虚拟化技术性能评测*

2010-06-11 11:03兰雨晴宋潇豫马立克
电信科学 2010年1期
关键词:测试程序评测内核

兰雨晴 ,宋潇豫 ,马立克 ,徐 舫

(1.北京航空航天大学计算机学院 北京100191;2.上海中标软件有限公司创新中心 北京100190)

1 引言

计算机平台的虚拟化技术已有40多年的历史,它起源于对分时操作系统的研究[1]。最早使用虚拟化技术的IBM7044计算机能够在一台物理机上运行多个独立客户操作系统系统,目的是为了让用户尽可能地充分利用昂贵的大型机资源。虚拟机技术是在软、硬件之间引入虚拟层,可为应用程序提供独立的运行环境,屏蔽硬件平台的动态性、分布性和异构性,支持硬件资源的共享和复用,并为每个用户提供属于个人的独立、隔离的计算环境,同时,为管理员提供硬件资源和软件资源的集中管理[2]。

随着x86处理器性能的提升和应用的普及,虚拟化技术在x86平台上得到了迅速的发展和广泛的应用。虚拟化技术目前的主要用途是测试开发以及服务器资源整合。

虚拟化技术按照不同的实现方式可以分为全虚拟化(full virtualization)、半虚拟化(paravirtualization)和硬件辅助虚拟化(hardware assisted virtualization)。全虚拟化和半虚拟化主要通过软件方式实现虚拟化,全虚拟化采用二进制代码动态翻译(dynamic binary translation)技术访问虚拟硬件,半虚拟化技术将敏感指令替换为对虚拟机监控器的超级调用(hypercall),避免每条指令的翻译,但这两种方式都会带来一定程度的性能开销。近年来,Intel和AMD在硬件级上对虚拟化技术予以支持,如Intel的VT(virtualization technology,虚拟化技术,也曾叫做vanderpool technology)和AMD 的 SVM(secure virtual machine,安全虚拟机)技术,虚拟机的处理器性能和I/O(input/output,输入输出)性能有了明显的提升,硬件辅助虚拟化技术因其具有接近物理机甚至在某些方面超越物理机的性能而被学术界和工业界广泛关注。

企业或者科研机构在面对种类繁多、各有特点的虚拟化技术时,往往比较关注虚拟化技术的性能问题。首先,应用程序运行在虚拟机上与直接运行在物理机上性能上的差异有多少;其次,虚拟化的各种技术实现提供的性能是否存在很大的差异。本文正是针对目前普遍关注的虚拟机CPU性能和I/O性能等展开了一系列的标准性能测试,包括编译内核、磁盘读写、文件压缩、网络传输、Sysbench、Unixbench等。本文第2节概述虚拟化技术,第3节给出了测试工具和测试方法的具体描述,第4节分析了基准测试结果,最后在第5节对上述工作进行了总结。

2 虚拟化技术概述

1974年,Popek和Goldberg[3]提出经典系统虚拟化模型,该模型指出操作系统成为虚拟机监控器(virtual machine monitor,VMM)的基本要求:CPU的指令集体系结构中,敏感指令必须是特权指令的子集。这种特性使得只有当客户操作系统执行敏感指令时,VMM才会陷入到0特权级去执行敏感指令。然而目前流行的x86架构并不能适用于这种模型,x86指令集中有一部分敏感指令不是特权指令[4],有17条敏感指令(比如LGDT等)不属于特权指令,这些敏感指令在低特权级下运行不会发生陷入,这就使得VMM无法有选择性地陷入指令而减少VMM带来的性能损失。

x86在构架上的缺陷使得x86平台虚拟化的实现存在困难和挑战,一些学者和工程师另辟蹊径采用纯软件的方法来弥补x86体系结构固有的虚拟化缺陷。在CPU虚拟化方面,全虚拟化技术(full virtualization)使用软件的方法完全或者部分的模拟出底层计算机硬件,不需要修改客户操作系统(guest OS)的内核,客户操作系统完全感知不到自己运行在虚拟的硬件之上,通过二进制代码动态翻译(dynamic binary translation)核心指令来替代那些不能虚拟化的指令,使用翻译后的指令访问虚拟硬件。在内存虚拟化方面,全虚拟化技术为每个Guest都维护一个“影子页表”,在这个表中写入虚拟化之后的内存地址映射关系,而Guest OS的页表则无需变动,最后,VMM将影子页表交给MMU(memory management unit,内存管理单元)进行地址转换。在I/O虚拟化方面,全虚拟化技术通过模拟I/O设备(磁盘和网卡等)来实现虚拟化。对Guest OS而言,它所能看到就是一组统一的I/O设备,同时Guest OS每次I/O操作都会陷入到VMM,让VMM来执行。这种方式对Guest而言,非常透明,无需顾忌底层硬件。采用全虚拟化技术的典型系统有:Virtual Box、VMware Workstation、VMware ESX Server、Virtual PC、QEMU[5]等。

半虚拟化技术 (para-virtualization)在CPU虚拟化方面,通过修改客户操作系统的内核源代码,将客户操作系统的指令操作替换为对虚拟机监控器的超级调用(hypercall),客户操作系统知道自身运行在一个虚拟化的硬件系统之上[5],并且被要求与虚拟机监控器相互协调与合作。在内存虚拟化方面,半虚拟化技术采用页表写入法,当Guest OS创建一个新的页表时,其会向VMM注册该页表,之后在Guest运行的时候,VMM将不断地管理和维护这个表,使Guest上面的程序能直接访问到合适的地址。在I/O虚拟化方面,半虚拟化技术通过前端(front-end)/后端(back-end)架构,将Guest的I/O请求通过一个环状队列传递到特权域(privileged domain,也被称为Domain-0)。采用半虚拟化技术的产品有Xen的半虚拟化产品。

硬件辅助虚拟化技术弥补了x86体系结构虚拟化的缺陷,在CPU虚拟化方面,Intel VT技术和AMD SVM技术对处理器硬件进行了扩展,通过引入根模式和非根模式来分别运行VMM以及客户操作系统,VMM和客户操作系统分别运行在根模式和非根模式的0特权级上,只有客户操作系统在执行敏感指令时,才产生根模式与非根模式的切换,系统会切换到运行于根模式的VMM,让VMM来处理这些特殊指令。在内存虚拟化方面,硬件辅助虚拟化技术使用扩展页表(extended page table,EPT),EPT 通过使用硬件技术,使其能在原有的页表的基础上,增加了一个EPT页表,通过这个页表能够将Guest的物理地址直接翻译为物理机的物理地址,从而减低整个内存虚拟化所需的开销。在I/O虚拟化方面,有 Intel的VT-d、AMD的IOMMU(input/output memory management unit,输入输出内存管理单元)和PCI-SIG的 IOV(I/O virtulization,输入输出虚拟化)这三个技术。VT-d,其核心思想就是让虚拟机能直接使用物理设备,但是这会牵涉到I/O地址访问和DMA(direct memory access,直接存储器访问)的问题,而VT-d通过采用DMA重映射 (remapping)和I/O页表来解决这两个问题,从而让虚拟机能直接访问物理设备。IOMMU和VT-d在技术上有很多相似之处。目前硬件辅助虚拟化技术已经获得了接近原生操作系统的高性能,主要的技术有KVM(kernel virtual machine)和硬件辅助虚拟化的Xen。

之前提到各种虚拟化技术是在硬件层次上的虚拟化,主要通过软件或者硬件辅助的方法实现物理机与虚拟机的隔离,虚拟机能够直接对物理机的资源进行访问。而目前也存在比较流行的操作系统级 (OS Level)的虚拟化技术,为用户提供了一个独立完整的操作系统环境,包括操作系统、用户函数库、文件系统和环境设置等。客户操作系统运行在宿主操作系统之上,虚拟机可以是对物理机资源的分区或者仅仅是一个容器,复制了宿主操作系统的环境。由于所有物理机和虚拟机的操作系统只运行了一个内核,没有虚拟机监控器中间层的运行开销,操作系统级的虚拟化技术具有优秀的性能。操作系统级的虚拟化代表系统有Linux-VServer和OpenVZ。但是目前操作系统级的虚拟化技术因其稳定性、易用性以及可管理性等方面均存在不足之处,并且无法与其他虚拟化技术一样安装部署主流的企业级服务器操作系统,无法构建统一的比较测试环境,因此本次评测没有将Linux-VServer和OpenVZ列入待比较的虚拟化技术之中。

3 评测方法

无论是在学术界还是在工业界,对于什么样的方法是评测虚拟化解决方案的最好方法,一直没有达成共识。标准性能评测公司(standard performance evaluation corporation,SPEC)在2006年底成立了一个委员会专门研究虚拟化解决方案评测方法[7]。VMware和Intel都是该委员会的成员,并且走在研究前沿,已经发布了两款不同的基准测试程序套件(或称工作负载,因为两个套件都是由现存的、独立的基准测试程序组成的),分别叫做VMmark[8]和vConsolidate[9]。组成两个套件的工作负载非常相似,区别只是在于每个公司根据合成得到的结果来定义一个评分系统的方式。但是在本次研究中,两款基准测试程序套件都未被采用,因为它们都依赖于一个针对邮件服务器的,叫做LoadSim的基准测试程序,这个基准测试程序只能配合微软的Exchange Server使用。

本文的评测没有使用专门面向虚拟环境的性能评测工具,而是重用了传统操作系统的性能评测工具,因为普通用户最为关注的问题是:(1)虚拟机能否达到物理机的性能;(2)虚拟机与物理机相比性能损失有多少;(3)各种虚拟化技术孰优孰劣。因此,重用传统操作系统的性能评测工具往往能够得到最为直观并且有说服力的结果。在选用具体的评测工具时,我们主要考虑要从以下三个方面对虚拟机的性能进行评测:客户机操作系统上处理器性能指标;客户机操作系统内存性能;虚拟外设I/O的性能。

在本次测试中使用上海中标软件有限公司的NeoShine Advance Server 5.4 x86-64作为物理机和虚拟机的操作系统,它的内核版本是2.6.18。在测试中使用的基准测试程序的名称和版本如表1所示。表2列举了待评测的虚拟化解决方案以及在物理机和虚拟机上安装的操作系统的内核版本。

表1 使用的基准测试程序列表

表2 待评测虚拟化解决方案及各自内核版本

所有的测试在IBM x3650 M2服务器上进行,该服务器的配置如下:2 个 Intel Xeon CPU E5520(2.26 GHz,16 核),8 GB内存,897 GB磁盘阵列和一个吉比特网卡,该网卡连接到局域网中。在测试中,虚拟机的配置如下:1个CPU,2 GB的内存,50 GB的硬盘和一个网卡。

对于结果的收集方式如下:所有的测试都重复4次,抛弃第一次结果样本,在第二次、第三次及第四次结果样本中选取中位数作为当前的测试结果。虚拟机上的测试结果都进行标准化处理,即以物理机上的测试结果为基数,将虚拟机上的测试结果转化为相对于该基数的比例值。测试机在每次进行新的测试集合之前都必须重新启动。在测试新的虚拟化解决方案之前,重新格式化磁盘并重新安装操作系统。

4 评测结果分析

本部分展示本研究的结果,所有这些结果值都是以物理机上的测试结果为基数,经过标准化之后的相对值。图1显示了以时间为单位的基准测试程序的标准化测试结果,图中的条形越高表示该虚拟化解决方案的性能在对应的工作负载中越好。

本次测试采用Bzip2进行数据压缩测试。Bzip2是一个CPU密集型的任务,只有较低的I/O需求。在Bzip2的测试中,采用压缩单个大文件和压缩多个小文件两种方式来进行压缩时间的测试:Bzip2-1压缩很大的一个镜像文件(Neoshine Advance Server的光盘镜像ISO文件,4.37 GB),Bzip2-2压缩有很多小文件的文件夹 (Linux Kernel 2.6.32内核源码树,包含32 364个文件,共计423 MB)。在光盘镜像压缩的试验中,只有Virtual Box比较接近物理机的性能,而在内核源码树的压缩试验中,KVM和Virtual Box都比较接近物理机的性能。

本测试中采用dd来测试磁盘性能,dd操作对CPU没有太大压力,而是主要集中于磁盘输入输出(I/O)操作。在这个测试中,我们把一个4.37 GB的镜像文件(ISO文件)拷贝到同一个ext3分区下。本文评测的所有虚拟化解决方案在本测试中的性能和物理机相比都不是十分理想,Xen的半虚拟化解决方案相对来说比其他解决方案略胜一筹。

Sysbench用来做数据库服务器的一个基准测试程序,我们的测试中主要是进行在线事务处理(OLTP)测试,它对MySQL数据库中进行一组10 000个事务处理所耗的时间。在本测试中,除了Virtual Box以外,各虚拟化解决方案的表现都相当不错,性能甚至略微超过了物理机,Virtual Box相比之下则逊色得多。

内核编译是一个综合性能评测方法,内核编译测试既是处理器敏感型任务,又是内存、多线程和对文件系统的读写压力敏感型的任务,因为它在编译的过程中,会读写很多的小文件,这些特征使它成为很好的综合系统系能指标。在本测试中,测试编译Linux Kernel 2.6.32所消耗的时间。所有的待测虚拟化解决方案的表现都不错,Xen的全虚拟化和半虚拟化的性能都很接近物理机的性能,而Virtual Box和KVM更是较大幅度地超过了物理机的性能。

图2显示了测试吞吐量的基准测试程序的标准化测试结果。

Dbench是一个文件系统基准测试程序,模拟文件服务器上的工作。在本测试中,Dbench模拟300个用户同时对文件服务器进行并发读写操作,其中,Virtual Box的表现相当突出,在其他虚拟化解决方案的性能最高只有物理机性能的40%左右的情况下,它一举超过了物理机的性能达20%之多。

Netperf是一个简单的网络基准测试程序,它使用TCP数据包流来评测数据交换的性能。在本项测试中,除了Xen的全虚拟化解决方案性能只有不到物理机的60%外,其他解决方案都非常接近物理机的性能。

在完成Netperf的网络测试以后,本测试又采用Rsync进行了两项测试,都是从服务器端向客户端同步数据。第一项测试同步内核源码树,它是一个包含很多小文件的文件夹,包含32 364个文件,共计423 MB。第二项测试是同步一个很大的镜像文件(4.37 GB的ISO文件)。在两项测试中,Virtual Box、Xen的半虚拟化和KVM表现都很不错,很接近物理机的性能,而Xen的全虚拟化解决方案则要逊色得多。

图2 吞吐量类测试结果对比

最后,我们还使用UnixBench进行了测试,UnixBench的目的是给类Unix系统的性能分析提供一种基本的指标,其基于早先的BYTE测试。因此,多个测试被用于测试系统性能的各个的方面,包括基本数学运算、文件系统效率、进程间通信、管道吞吐率、shell程序效率等。然后将这些测试结果与从基础系统的分数比较,产生一个预定值,这个预定值比原始的分数更容易处理。综合整套系列的预定值将得出一个系统全面的索引。在进行多项测试以后,UnixBench会给出一个综合评分。在该项测试中,KVM和Virtual Box表现不错,都超过了物理机性能的60%。

UnixBench综合评分结果对比如图3所示。

图3 UnixBench综合评分结果对比

5 结束语

本文评测了Linux下的4款开源虚拟化技术的基本性能。在研究过程中,我们使用了一些基准测试程序来分析不同的虚拟化技术在不同的工作负载中的性能,并和物理机上的性能进行比较,观察其开销。

BZip2和Sysbench测试结果主要体现了客户操作系统在处理器性能方面的指标,其中KVM和Virtual Box有较好的表现,因此,如果用户使用虚拟化技术主要面向处理器密集型的应用,需要消耗大量的处理器资源,并且保持处理器调度的高效率,KVM和Virtual Box是较好的选择,但是由于Virtual Box是一个桌面虚拟化系统,因此在实际企业应用中,处理器密集型应用主要考虑使用KVM虚拟机。内核编译测试不仅对处理器敏感,也对内存和硬盘读写敏感,KVM在内核编译中的表现也是远远优于Xen的两种虚拟化方案。并且从UnixBench总体性能测试的结果来看,KVM硬件辅助虚拟化技术也是所有虚拟化技术中表现最好的。

对于I/O性能测试,首先从磁盘读写的dd测试来看:所有虚拟化技术均低于物理机性能的50%,表现最好的是Xen半虚拟化和Virtual Box,而表现最差的是硬件辅助的KVM;在并发读写Dbench测试中,Virtual Box的性能超过了物理机的性能,而性能最差的仍然是KVM。因此,可以看出,KVM的磁盘I/O性能在所有虚拟化技术中最弱的,面向磁盘输入输出密集的应用不适合使用KVM虚拟化技术。其次,从网络I/O性能来看,在Netperf测试中,除了Xen硬件辅助虚拟化,其他虚拟化技术均具有与物理机相当的性能,在Rsync的两项测试中,也是Xen的硬件辅助虚拟化性能最差。由此可以看出,对于网络I/O密集的应用,使用Xen的硬件辅助虚拟化是不太合适的。

通过以上分析,本文的结论是:对于处理器密集型的应用,适合选择使用KVM硬件辅助虚拟化技术;对于磁盘I/O密集的应用,不适合使用KVM硬件辅助虚拟化技术;对于网络I/O密集的应用,不适合选用本文测试所使用的Xen的硬件辅助虚拟化版本,而其他虚拟化技术都可作为备选方案。

1 Christopher Strachey.Time sharing in large fast computers.In:International Conference on Information Processing,UNESCO,June 1959

2 怀进鹏,李沁,胡春明.基于虚拟机的虚拟计算环境研究与设计.软件学报,2007(4)

3 Popek G J,Goldberg R P.Formal requirements for virtualizable third generation architectures.Commun ACM,1974,17(7):412~421

4 Robin J,Irvine C.Analysis of the Intel pentium’s ability to support a secure virtual machine monitor,2000

5 Fabrice Bellard.Qemu,a fast and portable dynamic translator.In:Proceedings of the Annual Conference on USENIX Annual Technical Conference,Berkeley,CA,USA,2005

6 Forbes J M.Why virtualization fragmentation sucks.In:Proceedings of the Linux Symposium,Ottawa,ON,Canada,June 2007

7 Standard Performance Evaluation Corporation.Spec Virtualization Committee,http://www.spec.org/specvirtualization/,April 2008

8 Makhija,et al.Vmmark:a scalable benchmark for virtualized systems.Tech reaport,VMware,Inc,2006

9 Casazza,et al.Redefining server performance characterization for virtualization benchmarking.Intel Technology Journal,2006,10(3):243~252

猜你喜欢
测试程序评测内核
强化『高新』内核 打造农业『硅谷』
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
攻坡新利器,TOKEN VENTOUS评测
基于Castle型机械手的三温量产测试平台实现
Canyon Ultimate CF SLX 8.0 DI2评测
手机APP交互界面人因适合性测试程序的设计与实现
微生物内核 生态型农资