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
)
发布评论