2024年5月7日发(作者:)

电信科学

2010

年第

8A

云计算与

SaaS

系统虚拟化技术性能评测

*

兰雨晴

1

2

,宋潇豫

2

,马立克

2

,徐舫

2

1.

北京航空航天大学计算机学院北京

100191

2.

上海中标软件有限公司创新中心北京

100190

摘要

虚拟化已成为企业数据中心有效整合资源、降低成本的重要技术,并且是云计算平台的重要组成部

分。目前在工业界和学术界存在多种可供选择的虚拟化技术,本文首先对物理机和

KVM

、硬件辅助虚

拟化的

Xen

Xen

半虚拟化、

VirtualBox

等开源虚拟化技术部署的虚拟机进行了性能基准测试,然后基

于测试数据进行深入解读和分析。最后,结合各种虚拟化技术的性能评测结果,针对处理器密集型应

用、磁盘

I/O

密集型应用和网络

I/O

密集型应用等虚拟化应用场景,为企业和科研用户在不同的应用

场景中选择具体的虚拟化技术提出了切实的建议。

关键词虚拟机;虚拟化;性能测试

1

引言

计算机平台的虚拟化技术已有

40

多年的历史,它起源

助虚拟化(

hardwareassistedvirtualization

)。全虚拟化和半

虚拟化主要通过软件方式实现虚拟化,全虚拟化采用二进

制代码动态翻译(

dynamicbinarytranslation

)技术访问虚拟

硬件,半虚拟化技术将敏感指令替换为对虚拟机监控器的

超级调用(

hypercall

),避免每条指令的翻译,但这两种方式

都会带来一定程度的性能开销。近年来,

Intel

AMD

在硬

件级上对虚拟化技术予以支持,如

Intel

VT

virtualizationtechnology

,虚拟化技术,也曾叫做

vanderpool

于对分时操作系统的研究

[1]

。最早使用虚拟化技术的

IBM7044

计算机能够在一台物理机上运行多个独立客户

操作系统系统,目的是为了让用户尽可能地充分利用昂贵

的大型机资源。虚拟机技术是在软、硬件之间引入虚拟层,

可为应用程序提供独立的运行环境,屏蔽硬件平台的动态

性、分布性和异构性,支持硬件资源的共享和复用,并为每

个用户提供属于个人的独立、隔离的计算环境,同时,为管

理员提供硬件资源和软件资源的集中管理

[2]

随着

x86

处理器性能的提升和应用的普及,虚拟化技

术在

x86

平台上得到了迅速的发展和广泛的应用。虚拟化

技术目前的主要用途是测试开发以及服务器资源整合。

虚拟化技术按照不同的实现方式可以分为全虚拟化

fullvirtualization

)、半虚拟化(

paravirtualization

)和硬件辅

*

国家“

863

”计划基金资助项目,国产操作系统安全确保过程模型

研究项目(

No.2009AA012406

technology

)和

AMD

SVM

securevirtualmachine

,安全虚

拟机)技术,虚拟机的处理器性能和

I/O

input/output

,输入

输出)性能有了明显的提升,硬件辅助虚拟化技术因其具

有接近物理机甚至在某些方面超越物理机的性能而被学

术界和工业界广泛关注。

企业或者科研机构在面对种类繁多、各有特点的虚拟

化技术时,往往比较关注虚拟化技术的性能问题。首先,应

用程序运行在虚拟机上与直接运行在物理机上性能上的

差异有多少;其次,虚拟化的各种技术实现提供的性能是

否存在很大的差异。本文正是针对目前普遍关注的虚拟机

19

云计算与

SaaS

CPU

性能和

I/O

性能等展开了一系列的标准性能测试,包

括编译内核、磁盘读写、文件压缩、网络传输、

Sysbench

Unixbench

等。本文第

2

节概述虚拟化技术,第

3

节给出了

测试工具和测试方法的具体描述,第

4

节分析了基准测试

结果,最后在第

5

节对上述工作进行了总结。

2

虚拟化技术概述

1974

年,

Popek

Goldberg[3]

提出经典系统虚拟化模

型,该模型指出操作系统成为虚拟机监控器(

virtual

machinemonitor

VMM

)的基本要求:

CPU

的指令集体系结

构中,敏感指令必须是特权指令的子集。这种特性使得只

有当客户操作系统执行敏感指令时,

VMM

才会陷入到

0

特权级去执行敏感指令。然而目前流行的

x86

架构并不

能适用于这种模型,

x86

指令集中有一部分敏感指令不是

特权指令

[4]

,有

17

条敏感指令(比如

LGDT

等)不属于特权

指令,这些敏感指令在低特权级下运行不会发生陷入,这

就使得

VMM

无法有选择性地陷入指令而减少

VMM

带来

的性能损失。

x86

在构架上的缺陷使得

x86

平台虚拟化的实现存在

困难和挑战,一些学者和工程师另辟蹊径采用纯软件的方

法来弥补

x86

体系结构固有的虚拟化缺陷。在

CPU

虚拟

化方面,全虚拟化技术(

fullvirtualization

)使用软件的方法

完全或者部分的模拟出底层计算机硬件,不需要修改客户

操作系统(

guestOS

)的内核,客户操作系统完全感知不到

自己运行在虚拟的硬件之上,通过二进制代码动态翻译

dynamicbinarytranslation

)核心指令来替代那些不能虚拟

化的指令,使用翻译后的指令访问虚拟硬件。在内存虚拟

化方面,全虚拟化技术为每个

Guest

都维护一个“影子页

表”,在这个表中写入虚拟化之后的内存地址映射关系,而

GuestOS

的页表则无需变动,最后,

VMM

将影子页表交给

MMU

memorymanagementunit

,内存管理单元)进行地址

转换。在

I/O

虚拟化方面,全虚拟化技术通过模拟

I/O

设备

(磁盘和网卡等)来实现虚拟化。对

GuestOS

而言,它所能

看到就是一组统一的

I/O

设备,同时

GuestOS

每次

I/O

作都会陷入到

VMM

,让

VMM

来执行。这种方式对

Guest

而言,非常透明,无需顾忌底层硬件。采用全虚拟化技术的

典型系统有:

VirtualBox

VMwareWorkstation

VMwareESX

Server

VirtualPC

QEMU

[5]

等。

半虚拟化技术(

para-virtualization

)在

CPU

虚拟化方

面,通过修改客户操作系统的内核源代码,将客户操作系

20

统的指令操作替换为对虚拟机监控器的超级调用

hypercall

),客户操作系统知道自身运行在一个虚拟化的

硬件系统之上

[5]

,并且被要求与虚拟机监控器相互协调与

合作。在内存虚拟化方面,半虚拟化技术采用页表写入法,

GuestOS

创建一个新的页表时,其会向

VMM

注册该页

表,之后在

Guest

运行的时候,

VMM

将不断地管理和维护

这个表,使

Guest

上面的程序能直接访问到合适的地址。

I/O

虚拟化方面,半虚拟化技术通过前端(

front-end

/

端(

back-end

)架构,将

Guest

I/O

请求通过一个环状队列

传递到特权域(

privilegeddomain

,也被称为

Domain-0

)。采

用半虚拟化技术的产品有

Xen

的半虚拟化产品。

硬件辅助虚拟化技术弥补了

x86

体系结构虚拟化的

缺陷,在

CPU

虚拟化方面,

IntelVT

技术和

AMDSVM

术对处理器硬件进行了扩展,通过引入根模式和非根模式

来分别运行

VMM

以及客户操作系统,

VMM

和客户操作

系统分别运行在根模式和非根模式的

0

特权级上,只有客

户操作系统在执行敏感指令时,才产生根模式与非根模式

的切换,系统会切换到运行于根模式的

VMM

,让

VMM

处理这些特殊指令。在内存虚拟化方面,硬件辅助虚拟化

技术使用扩展页表(

extendedpagetable

EPT

),

EPT

通过使

用硬件技术,使其能在原有的页表的基础上,增加了一个

EPT

页表,通过这个页表能够将

Guest

的物理地址直接翻

译为物理机的物理地址,从而减低整个内存虚拟化所需的

开销。在

I/O

虚拟化方面,有

Intel

VT-d

AMD

IOMMU

input/outputmemorymanagementunit

,输入输出内存管理

单元)和

PCI-SIG

IOV

I/Ovirtulization

,输入输出虚拟

化)这三个技术。

VT-d

,其核心思想就是让虚拟机能直接使

用物理设备,但是这会牵涉到

I/O

地址访问和

DMA

direct

memoryaccess

,直接存储器访问)的问题,而

VT-d

通过采

DMA

重映射(

remapping

)和

I/O

页表来解决这两个问

题,从而让虚拟机能直接访问物理设备。

IOMMU

VT-d

在技术上有很多相似之处。目前硬件辅助虚拟化技术已经

获得了接近原生操作系统的高性能,主要的技术有

KVM

kernelvirtualmachine

)和硬件辅助虚拟化的

Xen

之前提到各种虚拟化技术是在硬件层次上的虚拟化,

主要通过软件或者硬件辅助的方法实现物理机与虚拟机

的隔离,虚拟机能够直接对物理机的资源进行访问。而目

前也存在比较流行的操作系统级(

OSLevel

)的虚拟化技

术,为用户提供了一个独立完整的操作系统环境,包括操

作系统、用户函数库、文件系统和环境设置等。客户操作系

统运行在宿主操作系统之上,虚拟机可以是对物理机资源

的分区或者仅仅是一个容器,复制了宿主操作系统的环

境。由于所有物理机和虚拟机的操作系统只运行了一个内

核,没有虚拟机监控器中间层的运行开销,操作系统级的

虚拟化技术具有优秀的性能。操作系统级的虚拟化代表系

统有

Linux-VServer

OpenVZ

。但是目前操作系统级的虚

拟化技术因其稳定性、易用性以及可管理性等方面均存在

不足之处,并且无法与其他虚拟化技术一样安装部署主流

的企业级服务器操作系统,无法构建统一的比较测试环

境,因此本次评测没有将

Linux-VServer

OpenVZ

列入待

比较的虚拟化技术之中。

3

评测方法

无论是在学术界还是在工业界,对于什么样的方法是

评测虚拟化解决方案的最好方法,一直没有达成共识。标准

性能评测公司(

standardperformanceevaluationcorporation,

SPEC

)在

2006

年底成立了一个委员会专门研究虚拟化解

决方案评测方法

[7]

VMware

Intel

都是该委员会的成员,

并且走在研究前沿,已经发布了两款不同的基准测试程序

套件(或称工作负载,因为两个套件都是由现存的、独立的基

准测试程序组成的),分别叫做

VMmark

[8]

vConsolidate

[9]

组成两个套件的工作负载非常相似,区别只是在于每个公

司根据合成得到的结果来定义一个评分系统的方式。但是

在本次研究中,两款基准测试程序套件都未被采用,因为

它们都依赖于一个针对邮件服务器的,叫做

LoadSim

的基

准测试程序,这个基准测试程序只能配合微软的

Exchange

Server

使用。

本文的评测没有使用专门面向虚拟环境的性能评测

工具,而是重用了传统操作系统的性能评测工具,因为普

通用户最为关注的问题是:(

1

)虚拟机能否达到物理机的

性能;(

2

)虚拟机与物理机相比性能损失有多少;(

3

)各种

虚拟化技术孰优孰劣。因此,重用传统操作系统的性能评

测工具往往能够得到最为直观并且有说服力的结果。在选

用具体的评测工具时,我们主要考虑要从以下三个方面对

虚拟机的性能进行评测:客户机操作系统上处理器性能指

标;客户机操作系统内存性能;虚拟外设

I/O

的性能。

在本次测试中使用上海中标软件有限公司的

NeoShineAdvanceServer5.4x86-64

作为物理机和虚拟机

的操作系统,它的内核版本是

2.6.18

。在测试中使用的基

准测试程序的名称和版本如表

1

所示。表

2

列举了待评测

电信科学

2010

年第

8A

1

使用的基准测试程序列表

基准测试程序版本(物理机)版本(虚拟机)测量单位

Bzip21.0.31.0.3

时间

Dbench4.004.00

吞吐量

dd5.975.97

吞吐量

Kernel

(编译)

linux-2.6.32linux-2.6.32

时间

Netperf2.4.42.4.4

吞吐量

Rsync3.0.73.0.7

吞吐量

Sysbench0.4.120.4.12

吞吐量

Unixbench5.1.25.1.2

综合评分

2

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

虚拟化解决方案虚拟机软件版本物理机内核版本虚拟机内核版本

KVM832.6.182.6.18

Xen-para3.0.3-942.6.182.6.18

Xen-full3.0.3-942.6.182.6.18

VirtualBox3.2.02.6.182.6.18

的虚拟化解决方案以及在物理机和虚拟机上安装的操作

系统的内核版本。

所有的测试在

IBMx3650M2

服务器上进行,该服务器

的配置如下:

2

IntelXeonCPUE5520

2.26GHz

16

核),

8GB

内存,

897GB

磁盘阵列和一个吉比特网卡,该网卡

连接到局域网中。在测试中,虚拟机的配置如下:

1

CPU

2GB

的内存,

50GB

的硬盘和一个网卡。

对于结果的收集方式如下:所有的测试都重复

4

次,

抛弃第一次结果样本,在第二次、第三次及第四次结果样

本中选取中位数作为当前的测试结果。虚拟机上的测试结

果都进行标准化处理,即以物理机上的测试结果为基数,

将虚拟机上的测试结果转化为相对于该基数的比例值。测

试机在每次进行新的测试集合之前都必须重新启动。在测

试新的虚拟化解决方案之前,重新格式化磁盘并重新安装

操作系统。

4

评测结果分析

本部分展示本研究的结果,所有这些结果值都是以物

理机上的测试结果为基数,经过标准化之后的相对值。

1

显示了以时间为单位的基准测试程序的标准化测试

结果,图中的条形越高表示该虚拟化解决方案的性能在对

应的工作负载中越好。

本次测试采用

Bzip2

进行数据压缩测试。

Bzip2

是一个

CPU

密集型的任务,只有较低的

I/O

需求。在

Bzip2

的测试

中,采用压缩单个大文件和压缩多个小文件两种方式来进

21

云计算与

SaaS

时间。在本测试中,除了

VirtualBox

外,各虚拟化解决方案的表现都相当不

错,性能甚至略微超过了物理机,

Virtual

Box

相比之下则逊色得多。

内核编译是一个综合性能评测方

法,内核编译测试既是处理器敏感型

任务,又是内存、多线程和对文件

系统的读写压力敏感型的任务,因为

它在编译的过程中,会读写很多的小

文件,这些特征使它成为很好的综合

系统系能指标。在本测试中,测试编译

LinuxKernel2.6.32

所消耗的时间。所

有的待测虚拟化解决方案的表现都不

错,

Xen

的全虚拟化和半虚拟化的性

能都很接近物理机的性能,而

Virtual

Box

KVM

更是较大幅度地超过了物

理机的性能。

2

显示了测试吞吐量的基准测

试程序的标准化测试结果。

Dbench

是一个文件系统基准测试

程序,模拟文件服务器上的工作。在本

测试中,

Dbench

模拟

300

个用户同时对

文件服务器进行并发读写操作,其中,

VirtualBox

的表现相当突出,在其他虚

行压缩时间的测试:

Bzip2-1

压缩很大的一个镜像文件

NeoshineAdvanceServer

的光盘镜像

ISO

文件,

4.37GB

),

拟化解决方案的性能最高只有物理机性能的

40%

左右的

情况下,它一举超过了物理机的性能达

20%

之多。

Bzip2-2

压缩有很多小文件的文件夹(

LinuxKernel2.6.32

内核源码树,包含

32364

个文件,共计

423MB

)。在光盘

镜像压缩的试验中,只有

VirtualBox

比较接近物理机的性

能,而在内核源码树的压缩试验中,

KVM

VirtualBox

比较接近物理机的性能。

本测试中采用

dd

来测试磁盘性能,

dd

操作对

CPU

有太大压力,而是主要集中于磁盘输入输出(

I/O

)操作。在

这个测试中,我们把一个

4.37GB

的镜像文件(

ISO

文件)

拷贝到同一个

ext3

分区下。本文评测的所有虚拟化解决方

案在本测试中的性能和物理机相比都不是十分理想,

Xen

的半虚拟化解决方案相对来说比其他解决方案略胜一筹。

Netperf

是一个简单的网络基准测试程序,它使用

TCP

数据包流来评测数据交换的性能。在本项测试中,除了

Xen

的全虚拟化解决方案性能只有不到物理机的

60%

外,

其他解决方案都非常接近物理机的性能。

在完成

Netperf

的网络测试以后,本测试又采用

Rsync

进行了两项测试,都是从服务器端向客户端同步数据。第

一项测试同步内核源码树,它是一个包含很多小文件的文

件夹,包含

32364

个文件,共计

423MB

。第二项测试是同

步一个很大的镜像文件(

4.37GB

ISO

文件)。在两项测

试中,

VirtualBox

Xen

的半虚拟化和

KVM

表现都很不错,

很接近物理机的性能,而

Xen

的全虚拟化解决方案则要逊

色得多。

最后,我们还使用

UnixBench

进行了测试,

UnixBench

的目的是给类

Unix

系统的性能分析提供一种基本的指

Sysbench

用来做数据库服务器的一个基准测试程序,

我们的测试中主要是进行在线事务处理(

OLTP

)测试,它

MySQL

数据库中进行一组

10000

个事务处理所耗的

22

电信科学

2010

年第

8A

2

吞吐量类测试结果对比

标,其基于早先的

BYTE

测试。因此,多个测试被用于测试

系统性能的各个的方面,包括基本数学运算、文件系统效

率、进程间通信、管道吞吐率、

shell

程序效率等。然后将这

些测试结果与从基础系统的分数比较,产生一个预定值,

这个预定值比原始的分数更容易处理。综合整套系列的预

定值将得出一个系统全面的索引。在进行多项测试以后,

性能。在研究过程中,我们使用了一些基准测试程序来分

析不同的虚拟化技术在不同的工作负载中的性能,并和物

理机上的性能进行比较,观察其开销。

BZip2

Sysbench

测试结果主要体现了客户操作系

统在处理器性能方面的指标,其中

KVM

VirtualBox

较好的表现,因此,如果用户使用虚拟化技术主要面向处

理器密集型的应用,需要消耗大量的处理器资源,并且保

持处理器调度的高效率,

KVM

VirtualBox

是较好的选

择,但是由于

VirtualBox

是一个桌面虚拟化系统,因此在

实际企业应用中,处理器密集型应用主要考虑使用

KVM

虚拟机。内核编译测试不仅对处理器敏感,也对内存和硬

盘读写敏感,

KVM

在内核编译中的表现也是远远优于

UnixBench

会给出一个综合评分。在该项测试中,

KVM

VirtualBox

表现不错,都超过了物理机性能的

60%

UnixBench

综合评分结果对比如图

3

所示。

Xen

的两种虚拟化方案。并且从

UnixBench

总体性能测试

的结果来看,

KVM

硬件辅助虚拟化技术也是所有虚拟化

技术中表现最好的。

对于

I/O

性能测试,首先从磁盘读写的

dd

测试来看:

所有虚拟化技术均低于物理机性能的

50%

,表现最好的是

Xen

半虚拟化和

VirtualBox

,而表现最差的是硬件辅助的

3UnixBench

综合评分结果对比

KVM

;在并发读写

Dbench

测试中,

VirtualBox

的性能超过

了物理机的性能,而性能最差的仍然是

KVM

。因此,可以

看出,

KVM

的磁盘

I/O

性能在所有虚拟化技术中最弱的,

面向磁盘输入输出密集的应用不适合使用

KVM

虚拟化技

23

5

结束语

本文评测了

Linux

下的

4

款开源虚拟化技术的基本

云计算与

SaaS

术。其次,从网络

I/O

性能来看,在

Netperf

测试中,除了

4

5

RobinJ,isoftheIntelpentium

sabilityto

supportasecurevirtualmachinemonitor,2000

,afastandportabledynamictranslator.

In:ProceedingsoftheAnnualConferenceonUSENIXAnnual

TechnicalConference,Berkeley,CA,USA,2005

Xen

硬件辅助虚拟化,其他虚拟化技术均具有与物理机相

当的性能,在

Rsync

的两项测试中,也是

Xen

的硬件辅助

虚拟化性能最差。由此可以看出,对于网络

I/O

密集的应

用,使用

Xen

的硬件辅助虚拟化是不太合适的。

通过以上分析,本文的结论是:对于处理器密集型的

应用,适合选择使用

KVM

硬件辅助虚拟化技术;对于磁盘

:

ProceedingsoftheLinuxSymposium,Ottawa,ON,Canada,June

2007

I/O

密集的应用,不适合使用

KVM

硬件辅助虚拟化技术;

对于网络

I/O

密集的应用,不适合选用本文测试所使用的

7

8

9

rtualization

Committee,/specvirtualization/,April2008

Makhija,:ascalablebenchmarkforvirtualized

aport,VMware,Inc,2006

Casazza,ningserverperformancecharacterizationfor

echnologyJournal,2006,10

(3):243~252

[

作者简介

]

兰雨晴,工学博士,北京航空航天大学计算机学

Xen

的硬件辅助虚拟化版本,而其他虚拟化技术都可作为

备选方案。

参考文献

:

InternationalConferenceonInformationProcessing,UNESCO,

June1959

2

3

怀进鹏,李沁,胡春明

.

基于虚拟机的虚拟计算环境研究与设

.

软件学报,

2007(4)

院副教授,上海中标软件有限公司研发总监,主要研究方向为操

作系统和软件工程;宋潇豫,工学硕士,上海中标软件有限公司创

新中心工程师,主要研究方向为系统软件;马立克,工学硕士,上

海中标软件有限公司创新中心工程师,主要研究方向为操作系统

测试技术;徐舫,工学硕士,上海中标软件有限公司创新中心工程

师,主要研究方向为系统虚拟化技术。

PopekGJ,requirementsforvirtualizable

ACM,1974,17(7):412~421

PerformanceTestforSystemVirtualizationTechnology

LanYuqing

1

2

,SongXiaoyu

2

,MaLike

2

,XuFang

2

(ofComputerScience&Engineering,BeijingUniversityofAeronautics&Astronautics,Beijing100191,China

tionCenter,ChinaStanderdSoftwareCo.,Ltd.,Beijing100190,China)

AbstractVirtualizationisaimportanttechnology

s

entthereareseveraloptionalvirtualizationtechnologiesinthe

paperweexecuteasetofbenchmarksintheLinuxhostsystemandinsidetheopen

sourcevirtualmachineswhicharedeployedbyKVM,hardware-assistedvirtualizationforXen,para-virtualizationforXenand

yzethetestresultsthoroughlyandpresentthreedifferentapplicationscenariosofvirtualization.

Atlast,accordingtothetestevaluationresults,weprovideatangiblesuggestionfortheenterpriseandscientificresearchusers

whowanttoselectthespecificvirtualizationtechnologyforthevirtualizationapplicationscenariosofCPUintensiveapplication,

diskI/OintensiveapplicationandnetworkI/Ointensiveapplication.

Keywords

24

virtualmachine,virtualization,performancetesting

(收稿日期:

2010-06-27