【IT168 技术趋势】服务器虚拟化已经成为当前企业IT架构中越来越重要的组成部分,可能仍然有不少企业的IT架构没有涉足服务器虚拟化这一领域,但我相信所有的IT主管都会关注这一技术的发展与进步。
从根本上讲,虚拟化主要集中在软件层面,毕竟虚拟机本身就是一个逻辑性的产物,不过就像CPU会集成越来越多的指令集以方便软件编写,并提升软件运行速度那样,既然虚拟化也是一种软件应用,那么CPU也完全有加速之道,其目的就在于将服务器虚拟化过程中,对CPU的计算资源的占用降到最低,你可以相像以前所说的硬RAID与软RAID之分,软RAID就是指RAID的相关算法处理与管理由CPU负责,硬RAID则是由RAID控制器自己的处理单元负责,从而解放了CPU的处理资源。虚拟化也是如此,我们将这种源自CPU自身设计的,以增强虚拟化应用性能与能力的技术称为CPU虚拟化辅助技术,它就相当于把虚拟化的相关处理功能做了“硬化”,而不再过分需要CPU的通用计算能力来软实现。在这方面,英特尔处理器的虚拟化辅助技术至今已经走过4年的历史,也使得x86虚拟化平台的发展得以突飞猛进。
事实上,英特尔为了优化服务器的虚拟化性能,根据自身的产品线提出了4个虚拟化辅助技术,分别是面向x86处理器的VT-x、面向安腾(Itanium)处理器的-VT-i、面向系统平台I/O的VT-d以及面向平台网络连接的VT-c,我们今天主要 简要来谈谈VT-x的发展和一些最新的功能,而其他三个虚拟化技术则在日后另文专述。
英特尔虚拟化的发展轨迹,随着新技术的不断加入,虚拟化中的系统开销也在逐步降低
第一代虚拟化技术:VT FlexPriority与VT FlexMigration
英特尔的VT-x技术最早出现在2006年,应用于至强5100、5300和7300,在当时它所提供的辅助加速技术并不多,只有两个,但都是虚拟机管理器(VMM,Virtual Machine Manager,又称Hypervisor)所最为急需的,它们就是VT FlexPriority与VT FlexMigration。
VT FlexPriority——优化虚拟机中断请求
在传统服务器上,只装有一个操作系统,而这个操作系统享有这个服务器的所有资源,包括CPU。而CPU在处理任务时,有一个重要的功能就是中断请求,它用来在不同任务间根据优先级进行切换。但是,当服务器通过虚拟化生成若干个虚拟机时,这个服务器中实际上就有若干个“自以为独享硬件平台”的操作系统,而此时虚拟机相对于CPU来说是一个个大的“任务”,如何处理好这些虚拟机的中断请求,对于虚拟化的效率就至关重要。英特尔处理器中都会一个专门的中断控制器,即Advanced Programmable Interrupt Controller (APIC,高级可编程中断控制器),它通过一个任务优先寄存器(TPR,Task Priority Register),以优先级的顺序来管理中断请求。VT FlexPriority则将TPR复制,虚拟机可以自行修改TPR的副本,并直接与CPU打交道,而不再需要VMM的干预,多费一道手续,从而提高了虚拟化性能,根据英特尔的测试,对于采用32位操作系统的虚拟机,VT FlexPriority可以提高35%的性能。
在传统没有VT FlexPriority的情况下,虚拟机(VM)要频繁的通过VMM访问APIC-TPR,就存在了大量的VM Exits与VM Entry的操作,这就意味着大量的系统开销,而VT FlexPriority则将VM的中断请求从VMM旁路出来,大大提高了虚拟机的运行效率
VT FlexMigration——让虚拟机平滑迁移
虚拟化的一大好处就是可以让虚拟机自由的,在由多台服务器组成的虚拟化资源池中进行迁移,比如当某台服务器的物理资源紧张时,需要更多资源的虚拟机就可以迁移到资源相对空闲的物理服务器上,再比如某台服务器要做系统维护必须下线,那么虚拟机可以暂时迁移到其他服务器上,以确保应用的持续在线。但是,CPU是在不断进步的,每一代CPU都可能在指令集方面有所差异(比如SSE指令集的版本),所以为了保证在不同CPU(仅限英特尔自己的产品)平台系统间进行平滑的迁移,英特尔推出了VT FlexMigration技术,其主要就是建立在CPUID虚拟化的基础上来善意的“欺骗”VMM。借助这一技术,VMM可以在迁移池中的不同服务器间建立起一组协调一致的指令集,以确保迁移的平滑进行,而不会因为VM请求一个目的服务器所不支持的指令集功能而出现错误,从而让虚拟机迁移的优势发挥到最大。