CNET在微博上曾经发了篇文章提及Hyper-V性能远超VMware,引来一片口水: 【微软:Hyper-V性能远超VMware产品】从列表看,在处理器支持、物理内存支持、每个虚拟机的处理器数、集群中最大节点数、集群中最大虚拟机数等方面,Windows Server 2012的Hyper-V都要优于VMware ESXi 5.0和VMware vSphere 5.0Enterprise Plus…http://t.cn/zWfHapH   

 

到不是说这篇文章有多水,我感觉主要被***的问题在于“性能”二字;从列表上看的确不是”性能“而是”扩展性“或者准确的说是Scale Up的能力;从这方面讲我认为微软的竞争是良性的而且是非常有效果的,回想当年在V记的时候推出了强力的产品ESXi 5,例如vCPU支持从8个到32个也是经常被提及的指标,尤其是当时微软的Windows 2008 R2只能支持4个vCPU的时候。

 

其实对于虚拟化技术来说,作为云计算的基石,如何充分利用最新的更具扩展能力的硬件本身,不论对于中小企业还是大企业的核心应用都是非常重要的。

 

比如说你现在企业为了提高服务器的虚拟化应用的密度,选择了英特尔E7的8路10核双线程服务器,那么可以支持对称多处理160个逻辑CPU的运算能力,如果为此服务器配置2GB内存,很可能过剩的CPU运算能力都会处于等待额外的物理内存而浪费掉了,这就说明你需要为这个服务器配置512GB或者更多的物理内存的原因;想想这就够了吗? 可能你还有更多的应用需要使用IO密集型的配置,因此可能你还需要配置更多地NIC/存储卡/磁盘。

在此看来,关键在于能否让应用随着物理服务器能力的提升获得相应的线性提升,而不是碰到了天花板或者甚至获得了更低的性能;这就是扩展性和性能之间所产生的关联性。

 

那么说的技术细节一些,做技术的可能都知道NUMA这东西,因为NUMA的存在那么你知道虚拟化层很关键的一点就是把你的虚拟机vCPU和内存控制在一个CPU节点上,做到这一点就需要你的虚拟化层具有NUMA节点的感知能力了,否则出现了运算节点缓存数据在其他的CPU节点本地内存上的跨区访问问题,就很容易造成性能的下降了;想想看,如果是4路8核的主机不起用多线程可能你配置一个32个vCPU的虚拟机在一个NUMA节点上对虚拟化层来说是可以做到的,这就是为什么我们看到具有NUMA感知的ESXi 5.0所支持的vCPU在32个;超过了就很难获得性能的合理增长的原因了。

 

说到这里,可能很多质疑的声音会说,你看,所以说Windows Server 2012里面所谓的性能提升很有水分哦!且慢,亲,别急着下结论啊;精髓在于Windows Server 2012中引入了很有意义的一个功能,针对虚拟机的NUMA技术:

通过一个叫 ACPI Static Resource Affinity Table (SRAT)的业界标准化技术, 新的Hyper V可以把NUMA节点的拓扑构成分享给上层的虚拟机(Linux,Windows等都支持),这样虚拟机应用就可以最合理映射和使用物理资源了,看到了合理的方法可以让更多的vCPU线性扩展性能成为现实,举例来说如果我向上映射了两个vNUMA给虚拟机应用,进而创建一个64 vCPU的应用。

 

因此,归根结底;更多的合理的配置计算和IO资源,并且整体提供足够的扩展性是非常有道理的;这也是为什么我觉得在这个立场上大家都没有问题的原因。