作者:
IT168评测中心 Lucifer 2007-06-25
【IT168
评测
中心】当前非常热门的Virtuali
z
ation虚拟化技术的出现和应用其实已经有数十年的历史了,在早期,这个技术主要应用在
服务器以及大型主机上面,现在,随着PC性能的不断增长,Virtuali
z
ation也开始逐渐在x86架构的个人电脑上流行起来。
![](https://i-blog.csdnimg.cn/blog_migrate/9b986eb94437a1552f145622c0f90c53.png)
虚拟化技术将各种资源虚拟出多台主机,以提高这些资源的共享率和利用率
虚拟化可以将IT环境改造成为更加强大、更具弹性、更富有活力的架构。通过把多个操作系统整合到一台高性能
服务器上,最大化利用硬件平台的所有资源,用更少的投入实现更多的应用,还可以简化IT架构,降低管理资源的难度,避免IT架构的非必要扩张。客户虚拟机的真正硬件无关性还可以实现虚拟机的运行时迁移,可以实现真正的不间断运行,从而最大化保持业务的持续性,而不用为购买超高可用性平台而付出高昂的代价。
在我们常见的x86架构上,核心指令集已经几乎20年都没有什么变化了,但
Intel和
AMD两个伟大的公司却一直在往其中添加重大的技术改进,使其继续保持着新鲜和活力,这些激动人心的改进包括增强内存寻址能力的64位扩展、处理图形的更多指令以及浮点计算的增强等等。
Intel Virtualization
Technology自从在Pentium D 9xx系列CPU上出现已经很有一段时日了,然而我们很少看到有相关的技术介绍和性能分析,因此我们IT168评测中心就意图对这方面一探究竟。
通常的虚拟化具有三种不同的实现形式,这些形式的区别主要在于用于管理各个虚拟机的VMM (Virtual Machine Monitor,虚拟机监视器)或者Hypervisor(监控者)的所在位置、功能、实现方式有所不同。
![](https://i-blog.csdnimg.cn/blog_migrate/5b2f1b7894ed2867625dd270fe30cddb.png)
完全虚拟化技术也就是表中的“Virtual Machine”,这种技术在虚拟机和底层硬件之间建立的抽象层:Hypervisor来管理各个虚拟机。通过Hypervisor,完全虚拟化技术模拟出多个包括所有硬件的完整的虚拟硬件平台,因此完全虚拟化技术几乎能让兼容所有的操作系统(一些特别的条件下,甚至指令集不同都可以),而这些客户操作系统并不知道自己运行在虚拟化环境下。完全虚拟化的缺点,中间层的代码转换会给系统带来开销。
VMware和
微软的Virtual PC/Virtual Server是代表该方法的两个商用产品,而基于核心的虚拟机(KVM)是面向Li
nux系统的开源产品。
Para-Virtualization 部分虚拟化
Para-Virtualization也叫做准虚拟化,完全虚拟化要求Hypervisor管理各个虚拟
服务器,并提供代码级别的翻译转换,因此负担沉重。部分虚拟化就是为了减轻这种负担:改动客户操作系统,集成与Hypervisor协同工作的界面,从而提升了性能。部分虚拟化的著名例子有Xen,这是一个开源准虚拟化技术,BSD、Li
nux、Solaris及其他开源操作系统都对其进行了集成。
OS Virtualization 操作系统层虚拟化
操作系统层虚拟化没有独立的Hypervisor层,主机操作系统负责在多个虚拟
服务器之间分配硬件资源,这种虚拟化方式速度最快,不过操作系统的类型受到了严格的限制。Solaris Container和面向Linux的Virtuozzo/OpenVZ是这方面的例子。
软件虚拟化主要的问题是性能和隔离性。Full Virtuali
z
ation完全虚拟化技术可以提供较好的客户操作系统独立性,不过其性能不高,在不同的应用下,可以消耗掉主机10%~30%的资源。而
OS Virtuali
z
ation可以提供良好的性能,然而各个客户操作系统之间的独立性并不强。无论是何种软件方法,隔离性都是由Hypervisor软件提供的,过多的隔离必然会导致性能的下降。
这些问题主要跟x86设计时就没有考虑虚拟化有关。我们先来看看x86处理器的Privilege特权等级设计。
![](https://i-blog.csdnimg.cn/blog_migrate/9a6c2fae553c037f161290991f0e1de0.png)
x86架构为了保护指令的运行,提供了指令的4个不同
Privilege特权级别,术语称为Ring,从Ring 0~Ring 3。Ring 0的优先级最高,Ring 3最低。各个级别对可以运行的指令有所限制,
例如,GDT,IDT,LDT,TSS等这些指令就只能运行于Privilege 0,也就是Ring 0。要注意Ring/Privilege级别和我们通常认知的进程在操作系统中的优先级并不同。
操作系统必须要运行一些Privilege 0的特权指令,因此Ring 0是被用于运行操作系统内核,Ring 1和Ring 2是用于操作系统服务,Ring 3则是用于应用程序。然而实际上并没有必要用完4个不同的等级,一般的操作系统实现都仅仅使用了两个等级,即Ring 0和Ring 3,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/6d28c8c2fc9043633fee5f90c3c3aca6.png)
也就是说,在一个常规的x86操作系统中,系统内核必须运行于Ring 0,而VMM软件以及其管理下的Guest OS却不能运行于Ring 0——因为那样就无法对所有虚拟机进行有效的管理,就像以往的协同式多任务操作系统(如,Windows 3.1)无法保证系统的稳健运行一样。在没有处理器辅助的虚拟化情况下,挑战就是采用Ring 0之外的等级来运行VMM (Virtual Machine Monitor,虚拟机监视器)或Hypervisor,以及Guest OS。
现在流行的解决方法是
Ring Deprivileging(暂时译为特权等级下降),并具有两种选择:客户OS运行于Privilege 1(0/1/3模型),或者Privilege 3(0/3/3模型)。
无论是哪一种模型,客户OS都无法运行于Privilege 0,这样,如GDT,IDT,LDT,TSS这些特权指令就必须通过模拟的方式来运行,这会带来很明显的性能问题。特别是在负荷沉重、这些指令被大量执行的时候。
同时,这些特权指令是真正的“特权”,隔离不当可以严重威胁到其他客户OS,甚至主机OS。Ring Deprivileging技术使用IA32架构的Segment Limit(限制分段)和Paging(分页)来隔离VMM和Guest OS,
不幸的是EM64T的64bit模式并不支持Segment Limit模式,要想运行64bit操作系统,就必须使用Paging模式。
对于虚拟化而言,使用Paging模式的一个致命之处是它不区分Privileg 0/1/2模式,因此客户机运行于Privileg 3就成为了必然(0/3/3模型),这样Paging模式才可以将主机OS和客户OS隔离开来,然而在同一个Privileg模式下的不同应用程序(如,不同的虚拟机)是无法受到Privileg机构保护的,这就是目前IA32带来的隔离性问题,这个问题被称为
Ring Compression。
![](https://i-blog.csdnimg.cn/blog_migrate/a1ea4ec3b94ffd9df4552b830521eaf6.png)
IA32不支持VT,就无法虚拟64-bit客户操作系统
不错,
Intel VT就是为此而生!
![](https://i-blog.csdnimg.cn/blog_migrate/abcd6fc70c3baea52ed13f3496641f22.png)
Intel VT下面的VMM其实可以认为就是主机操作系统
作为一个芯片辅助(Chip-Assisted)的虚拟化技术,VT可以同时提升虚拟化效率和虚拟机的
安全性,下面我们就来看看Intel VT带来了什么架构上的变迁。我们谈论的主要是IA32上的VT技术,一般称之为VT-x,而在Itanium平台上的VT技术,被称之为VT-i。
VT-x将IA32的CU操作扩展为两个forms(窗体):
VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),VMX root operation设计来供给VMM/Hypervisor使用,其行为跟传统的IA32并无特别不同,而VMX non-root operation则是另一个处在VMM控制之下的IA32环境。
所有的forms都能支持所有的四个Privileges levels,这样在VMX non-root operation环境下运行的虚拟机就能完全地利用Privilege 0等级。
![](https://i-blog.csdnimg.cn/blog_migrate/d6f82eb22b5c0f7b15c442f606f7fe29.png)
两个世界:VMX non-root和VMX root
和一些文章认为的很不相同,VT同时为VMM和Guest OS提供了所有的Privilege运行等级,而不是只让它们分别占据一个等级:因为VMM和Guest OS运行于不同的两个forms。
由此,GDT、IDT、LDT、TSS等这些指令就能正常地运行于虚拟机内部了,而在以往,这些特权指令需要模拟运行。而VMM也能从模拟运行特权指令当中解放出来,这样既能解决Ring Aliasing问题(软件运行的实际Ring与设计运行的Ring不相同带来的问题),又能解决Ring Compression问题,从而大大地提升运行效率。Ring Compression问题的解决,也就解决了64bit客户操作系统的运行问题。
为了建立这种两个虚拟化窗体的架构,VT-x设计了一个Virtual-Machine Control Structure(VMCS,虚拟机控制结构)的数据结构,包括了Guest-State Area(客户状态区)和H
ost-State Area(主机状态区),用来保存虚拟机以及主机的各种状态参数,并提供了VM entry和VM exit两种操作在虚拟机与VMM之间切换,用户可以通过在VMCS的
VM-execution control fields里面指定在执行何种指令/发生何种事件的时候,VMX non-root operation环境下的虚拟机就执行VM exit,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题。
我们可以看到VT带来的CPU内部运行架构的重大改变,然而在实际上用户可能完全不能感受出来,假如用户不能感受到实际操作上有所改变,或者性能没有增长,那么这个技术有没有用就很难说。因此我们实际测试了
Intel VT技术的性能表现。
![](https://i-blog.csdnimg.cn/blog_migrate/e3d492c32394e4a0853ee31d94191cf5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c319db795f6524bbd2d68b7dcb9c04ab.png)
软件虚拟化
领域的巨头VMware的产品是完全虚拟化的著名例子,一般的VMware Workst
ation和VMware Server都属于H
osted Architecture寄居架构,而企业级产品VMware ESX Server则属于Bare Metal Architecture裸金属架构,这种架构在商业化产品上很难得,可以充分地发挥硬件的
威力。我们使用VMware Server的原因是:易于使用。ESX Server难以配置。
![](https://i-blog.csdnimg.cn/blog_migrate/7747d74ebeb4f5720001aebace7b0ebd.png)
Microsoft Virtual Server 2005 R2发布也有了一段时日,虽然仍不如VMware完善,不过提供了一些VMware不能提供的有趣特性。
![](https://i-blog.csdnimg.cn/blog_migrate/4ea8c5b6a3fa9d987750fd059e95f3b8.png)
Xen一般应用在Unix类Unix环境。
![](https://i-blog.csdnimg.cn/blog_migrate/f06b1422ac399a27d170f2efc14f7f1a.png)
VMware Server包含了很多组件。
![](https://i-blog.csdnimg.cn/blog_migrate/78ffa96181c4f7bc8ba1b472cb09a902.png)
你可能不会相信,这么强大的
软件是免费的。
![](https://i-blog.csdnimg.cn/blog_migrate/7649ffa78b87485b4d3ce9aa31eb98fe.png)
Intel方只有在支持VT的CPU上才能安装64-bit客户操作系统。
![](https://i-blog.csdnimg.cn/blog_migrate/de25a6c182755986d08b6b18ea629065.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6e560e34f35fd80cf20f09785aed4979.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b9955ee3a3e7fabb4fc476149ce96781.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0d087f95c663b33e57e44444f2da696b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e63b402942a12dfae64a6412b569e09e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e79eda4e1ccb8431fbabdd01653a9bdc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3c1d848ccaa17d22cbd1d3e41f777857.png)
可以直接存取物理磁盘也是一个独特的优势,这可以带来性能上的提升。
![](https://i-blog.csdnimg.cn/blog_migrate/5f1d6138d16497f32fd4b4765e5d226a.png)
一般而言,预先分配所有的磁盘空间(上一个选框)和分割磁盘为2GB的文件(下一个选框)可以提升性能。
![](https://i-blog.csdnimg.cn/blog_migrate/13d2af57ddc89316ad67a2dc154e9502.png)
SCSI类型的虚拟磁盘在实际使用SCSI的时候可以提供不错的性能,同时,在建立
服务器群集的时候,这是必须的。
![](https://i-blog.csdnimg.cn/blog_migrate/a29237e83f430237979366c419daae74.png)
![](https://i-blog.csdnimg.cn/blog_migrate/595a78c11550a112c5e67ee693237551.png)
![](https://i-blog.csdnimg.cn/blog_migrate/02bb1d4ee474d47da075758c616729c3.png)
提供虚拟SMP的支持,最多虚拟2个处理器(在硬件不支持SMP的时候都可以)。
![](https://i-blog.csdnimg.cn/blog_migrate/f0739999f00ff5214e8aa729f96216f0.png)
同时运行两个虚拟机,
VMware就建立两个VMware Server VMX进程。
![](https://i-blog.csdnimg.cn/blog_migrate/e04ba7e2d19419eff89e52c8bebb4c5e.png)
每个虚拟机虚拟了两个CPU,因此每个VMware Server VMX进程就具有两个虚拟CPU线程,并分布在我们硬件的两个CPU核心上。
![](https://i-blog.csdnimg.cn/blog_migrate/6c4ee35e4f0a0d5dc8e2b33a2bad2aa0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c899bd069ee0c867b604ffb448700f36.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec1ab34571861dac80e2f22ea60f03a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/edeb93bdaf33d33eaf9c4eb7b5169761.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4a09d3397571dcae2ed249b7b9aaba57.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e6ee31f914cf98082414fb921dca4062.png)
![](https://i-blog.csdnimg.cn/blog_migrate/207a2395b66ee3388a14b39ba4b23120.png)
![](https://i-blog.csdnimg.cn/blog_migrate/45675a4b766bc1eb4cf3c117a952aec6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8f05a44bf375aa0cbf12ee4ca6d9e526.png)
我们分别在Window Server 2003 R2 Enterprise Edition SP2的32bit和64bit环境下进行了测试——主机操作系统和客户操作系统都分别采用了这两种操作系统,并再分别测试了VT和无VT下的表现。主机的性能也进行了测试。
对于虚拟机应用而言,CPU性能、内存性能、IO性能是最重要的,因此我们选用了数种测试硬件来测试CPU性能、内存性能和磁盘性能,这只是一个初步的测试(尽管测试起来也比较复杂),如
网络IO性能的测试也很重要,不过并不在今次测试的范围内。
CPU性能
![](https://i-blog.csdnimg.cn/blog_migrate/a116acdbb630b48db52fa898fc1e8ed7.png)
在仅运行单个虚拟机的情况下,理论测试表明,在32bit主机操作系统下打开VT并没有性能上的优势——64bit下则相反,打开VT可以获得更好的CPU性能。
虽然
VMware虚拟出来的显卡并不能支持“硬件”3D操作,不过OpenGL仍然可以运行,我们可以看出其虚拟OpenGL运行的性能非常之低,这时VT在32bit下的CPU表现不错。
总体而言,VT在CPU性能上没有显示出什么特别的地方,看来VT须要在更大的虚拟机负荷下才能表现出其性能上的优势。
内存性能
![](https://i-blog.csdnimg.cn/blog_migrate/856e724d72b2f144360b0bdd8d8c4e37.png)
由于虚拟架构改变,VT下的内存性能表现非常好,如
WinRAR这样的成绩非常突出。
磁盘性能
![](https://i-blog.csdnimg.cn/blog_migrate/5a3b2699d1d7949532de939d09617e9c.png)
虚拟机情况下的磁盘性能非常之强劲,这是因为相关的数据很容易地就可以缓冲的缘故,这需要大量的内存支持。
![](https://i-blog.csdnimg.cn/blog_migrate/2c97eb58c079b8f260340efe7a51c10e.png)
这是我们虚拟机所在的硬盘HD Tach RW测试成绩,虚拟机的虚拟磁盘都位于这个WD3200YS的前端。
![](https://i-blog.csdnimg.cn/blog_migrate/7ae019660a8b6f85435864fb43b7cb29.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7a18cd74f09a11daa66ab190316fad6a.png)
32bit Host OS/64bit Guest OS下的突发传输更快,达到了349.1MB/s,这实际上表现了64bit系统比32bit系统的内存性能更加强劲。
![](https://i-blog.csdnimg.cn/blog_migrate/5f0680739b1d2604ac7748dc2deee56e.png)
64bit Host OS/32bit Guest OS,没有打开VT的情况下,也能提供很不错的突发速度:300.5MB/s。
![](https://i-blog.csdnimg.cn/blog_migrate/644cfe509c8ce577fcd7047a30320b09.png)
64bit Host OS/32bit Guest,打开VT之后与上面对比,突发略有下降。
64bit性能
![](https://i-blog.csdnimg.cn/blog_migrate/25cf608eb7e15a5455b5606af79feaca.png)
毫无疑问,64bit下可以提供更好的CPU性能、内存性能。
![](https://i-blog.csdnimg.cn/blog_migrate/8bf337d49ac49d6bff82001b1d9c56b3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92da721aa76d04ca19e79db16ed8ca1d.png)
在
Intel CPU上,通过VT的支持,可以实现如图的应用
同时,
Intel的Long模式64bit无法提供内存隔离所需要的足够保护措施,而通过Intel VT技术,则能解决这个问题,因此Intel CPU只有具有VT技术的时候才能运行64bit虚拟机。更好的隔离性或许用户一眼无法看到,然而当客户操作系统异常崩溃的时候,你才可以感觉到它的用处。
![](https://i-blog.csdnimg.cn/blog_migrate/99d2e9a1863307ce739207e5548e42ec.png)
VT技术通过为VMM提供了一个单独的VMX root oper
ation环境,与普通虚拟机的VMX non-root oper
ation环境隔离开来,通过让虚拟机也能执行Privilege 0特权指令,降低虚拟代码转换的损耗来达到提升性能的目的,测试中的负载很低,因此并没有体现出什么优势。我们预计在如上图般繁重复杂的虚拟环境下VT技术可以表现出明显的优势,频繁的虚拟机切换、特权指令执行、虚拟中断等,可以让VT架构得到充分的发挥。
在3~4个虚拟机的普通CPU负载下,VMware有望从芯片辅助的虚拟化技术中获益,我们期望在下一篇文章中对ESX Server 3.0进行测试,ESX看起来可以充分利用新的处理器特性,应该会有大量的性能提升。
![](https://i-blog.csdnimg.cn/blog_migrate/3b26e6c709cfa7e577d02fa8f320b5bc.png)
以前的Vanderpool,现在的Intel Virtuali
zation Technlogogy已经消除了困扰x86虚拟化厂商很长时间的许多硬件难题,提供了更好的性能和隔离/
安全性,这也意味着所有聪明的技术设计人员能够最终实现自己的梦想:通过解决性能和管理问题来将
服务器虚拟化成熟地提供给各种应用环境。现在,虚拟化市场正在向成熟稳步迈进,更多的桌面用户、企业用户将可以享受这个“免费”的虚拟化技术带来的好处。
本文摘自IT168评测