注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 奥运,中国奖牌到底排第几?
 帮助

Windows Server 2008 Hyper-V的多处理器支持


2008-04-04 12:34:49
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
作者:John Sheu
译者:盆盆
欢迎访问我们的博客!笔者是Windows Server Performance团队的开发主管,在过去的三年半里,笔者负责带领团队改进Windows Server 2008 Hyper-V的性能。
在Hyper-V的整个开发周期里,我们和产品组一起协作,以便能够推出有竞争力的产品,很高兴Hyper-V能够在今年正式发布,本周发布的Windows Server 2008正式版本里已经包含了Hyper-V Beta版本[盆盆注:Hyper-V RC0已经在3月19日正式发布]。
架构概述
Hyper-V采用基于Hyperisor的架构,并且充分利用Windows驱动模型,以便提供广泛的硬件支持。Hypervisor可以把单个服务器分割为多个CPU和内存的容器。由于采用微内核架构,Hyper-V可以提供高效的分区间通信机制,并在此基础上创建高性能的虚拟I/O架构。根分区包含物理I/O设备,还将提供虚拟栈,用来为子分区所实现的I/O提供服务。
虚拟栈可以实现模拟的I/O设备,例如IDE控制器和DEC 21140A网卡。然而模拟这些设备的代价很高。发送单个I/O请求,就有可能导致虚拟栈和子分区之间的多次切换。相反,Hyper-V提供专门为虚机环境所设计的虚拟I/O设备。这些虚拟设备连接到VMBus,这是一个支持即插即用的总线,使用共享内存,可以有效地进行分区间通信。Windows虚机可以自动检测到VMBus上的虚拟设备,并且加载合适的驱动程序。
Hyper-V中的I/O采用客户端/服务器架构,在根分区中包含VSP(虚拟服务提供程序),在子分区中包含VSC(虚拟服务客户端)。该架构极大地减少发送I/O请求所需的开销。如果Virtual Server用户把虚机迁移到Hyper-V中,他们将体会到高I/O的工作负载的CPU开销大大降低。
多处理器的虚机
在这第一篇文章里,笔者想着重指出Hyper-V的主要性能特性:多处理器的虚机。Hyper-V支持4 CPU的Windows Server 2008虚机,和2 CPU的Windows Server 2003虚机。如果服务器工作负载需要很高的性能,我们可以考虑用2 CPU或者4 CPU的Hyper-V虚机对其进行虚拟化。当然,只有当工作负载确实需要的时候,才应该使用多处理器虚机,因为拥有更多的处理器会带来一些额外的开销。
然而,操作系统内核和驱动会采用自旋锁(Spin Lock)的机制,在获得自旋锁之前,(线程)并不会阻塞,并一直处于自旋状态,前提是自旋锁只会保持很短的时间。但是虚拟化会打破这种条件,因为虚拟处理器是按时间片进行调度的。如果在保持自旋锁的时候竞争虚拟处理器,则其他虚拟处理器就要自旋很长时间,导致CPU循环的浪费。[盆盆注:自旋锁是多处理器操作系统的一种互斥机制,有点类似于互斥锁,但是保持时间更短。更详细信息,可以参考《Windows Internals》第四版的P152]
我们在Hypervisor和Windows Server 2008内核里加入创新设计,尽可能防止出现自旋锁的长时间等待条件,如果确实存在长时间等待条件,也会有效地加以检测并对其进行处理。我们还对Hypervisor进行设计,包括调度程序和内存虚拟化逻辑,以使它们在大多数临界区中都不会锁定,从而确保多处理器系统能够获得很好的延展性。
所以,4 CPU的Windows Server 2008虚机,其延展性可以和物理4 CPU系统一较高下。这是一个很好的注解,来诠释Windows Server 2008虚机和Hyper-V如何一起提供性能上的改进。我们还将在后续的版本里继续提高多处理器系统和多处理器虚机的延展性。




    文章评论
 <<   1   2   >>   页数 ( 1/2 )  
2008-04-07 10:31:42
多处理器支持貌似很爽

2008-04-08 10:04:17
To gino,确实如此,但是关键还是要看OS里的应用程序是否支持SMP,否则的话,性能反而有损耗。毕竟多CPU之间的协调通信也会消耗一部分资源。

2008-04-09 10:16:37
请问,未来Hyper-V会开发一个类似ESX的不依附WIN2K8的独立系统吗?

虽然Hyper-V也是裸金属架构,但现在毕竟还要Win2k8这样一个Primary OS

谢谢!

2008-04-09 10:40:59
楼上的兄弟,感谢光临!

在Hyper-V的架构里,根分区里的WIN2K8有点类似于VMware ESX Server的Service Console(基于Red Hat Linux),起到支撑和管理作用。同时我们可以直接在这个WIN2K8的根分区里用图形界面对虚拟化架构进行管理,这一切就和平时的操作完全一样。

如果觉得图形化的根分区太庞大,我们也可以安装Server Core,这是一个精简的WIN2K8,没有GUI,可以通过PowerShell等命令行方式进行管理,很显然这种方式性能更好、管理更灵活、安全性也更好。

2008-04-09 12:02:20
谢谢博主回复

Service Console是否基于RH,有待商榷,虽然很多人怀疑,但vmware是否认的,而且真的是,vmware将面临GPL诉讼
虽然从hypervisor的层次架构来看
可以把根分区2K8当成Service console一个层级,不过2K8太胖了,ServerCore也不小

所以看来,至少现在hyper-v没有ESX3i这样瘦的产品了

那么,ServerCore的Hyper-V通过SCVMM来管理肯定是没问题吧?

谢谢!

 <<   1   2   >>   页数 ( 1/2 )  

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: