虚拟化风暴前夕 微软HyperV技术分析
2008-08-30 12:38:28 来源:WEB开发网如果服务器工作负载需要很高的性能,我们可以考虑使用多处理器的虚拟机。数据库服务器可以消耗掉大量的处理器资源,这时,多处理器虚拟机就是很必须的,就像我们做过的测试那样。当然,只有当工作负载确实需要的时候,才应该使用多处理器虚机,因为管理更多的处理器会带来一些额外的开销。就像早期Window NT具有单处理器和多处理器两种内核一样(单处理器版本去掉了一些多处理器才有的如同步之类的模块,并作了相关优化)。
进程状态及其转换示意图,进程的就在这些状态之间“旋转”
众所周知,为了保护共享数据,需要一些同步机制,例如锁、信号量等。通常,多处理器操作系统内核和驱动会采用自旋锁(Spin Lock,类似于互斥锁,但是保持时间更短。更详细的信息可以参考《Windows Internals》第四版,P152)的机制,在获得自旋锁之前,线程并不会阻塞,而是一直处于自旋状态,前提是自旋锁只会保持很短的时间。然而在虚拟化条件下,这个前提会被打破件,因为虚拟处理器是按照时间片进行调度的。如果在保持自旋锁的时候竞争虚拟处理器,则其他虚拟处理器就要自旋很长时间,导致CPU循环的浪费。
在Windows Server 2008内核以及Hyper-V Hypervisor中加入了一个创新设计,尽可能防止出现自旋锁的长时间等待条件,如果确实存在长时间等待条件,也会有效地加以检测并对其进行处理。这个方法叫做自旋锁启发方法,未实现自旋锁启发方法的虚拟机作系统将停在一个紧凑循环上旋转以等待其他虚拟处理器释放自旋锁,通常这个旋转可能会阻塞其中一个硬件 CPU,从而降低了虚拟化性能。而在自旋锁启发式操作系统中,自旋锁代码会在将要发生旋转时通过Hypercall API通知Hyper-V Hypervisor管理程序,这样Hypervisoer管理程序就可以立即调度执行另一个虚拟处理器并降低不必要的CPU使用。Hyper-V还还在调度程序和内存虚拟化逻辑上进行了优化以使它们在大多数临界区中都不会被锁定,从而确保多处理器系统能够获得很好的延展性。
在前些天的媒体测试见面会上,微软中国的工程师展示了Hyper-V虚拟机的效率,表明4 CPU的Windows Server 2008虚拟机,其延展性可以和物理4 CPU系统一较高下。当然,具体的提升仍然需要通过测试来评估。
不知不觉间说了很多显得有些深涩的内容,不过Hyper-V的特点总结起来就是:VT/AMD-V实现、微内核设计、VSP/VSC虚拟设备驱动架构以及虚拟处理器自旋锁启发架构,这些特性糅合在一起就形成了独特的Hyper-V。此外,$28的价格(或者,购买Windows Server 2008:免费)也很值得一提。
微软服务器虚拟化战略的里程碑:Hyper-V
更好的性能、更广泛的兼容性、更强的安全性,以及更便宜——这就是Hyper-V,从2003年收购Connetix后就沉寂的微软并没有睡着。从最早的Terminal Services,到早期的Virtual PC、Virtual Server、SoftGrid,到今天Hyper-V的推出,这些看似不经意的动作,现在看来均是为其全面的虚拟化战略实施做铺垫。而经过这样一系列的铺垫,微软的从数据中心到桌面虚拟化、全面的端到端的虚拟化战略已经正式部署完毕,我们已经可以看到,虚拟化市场即将到来的一场暴风雨。
更多精彩
赞助商链接