多多非益善 多核处理器只会降低VDI高可用性
2018-06-11 来源:
2010年9月在旧金山召开的英特尔开发者论坛(IDF)上,英特尔发布了其下一代服务器至强处理器,代号为Westmere-EX。性能不可谓不惊人:10核20线程的处理器对三通道内存的寻址能力达到了2TB,这相当于前一代处理器的内存寻址能力的整整两倍。
今年5月,英特尔又宣布推出一款新的32核服务器芯片,它基于一种新的高性能计算服务器架构,结合了普通的x86核心和专用核心,从而加快了处理大规模并行科研和商业应用的速度。该芯片已在去年下半年交付。
“英特尔Knights Ferry处理器在服务器处理器插座中包含32个主至强芯片核心,在PCI-Express插槽中有相应的512位向量处理单元。芯片每个核心运行四个线程,包括8MB的共享高速缓存以及高达2GB的快速GDDR5内存。”
这项技术对于处理大量不同的工作负载而言很神奇,尤其是能够完全在内存中运行,而不是在非易失性存储设备中运行的数据库。然而,对于虚拟桌面基础架构(VDI)解决方案来说,多核芯片完全是浪费钱,而且高可用性被荒废了。
我的客户经常问我有什么建议好提供,同时又告诉我,他们一直在考虑购买配备四核、六核甚至八核的Nehalem处理器。我的答复始终是反问一句:为什么需要多核?
事实上,尽管多核可能有助于几种类型的工作负载,但是对于VDI来说,只会降低高可用性,让这个解决方案显得成本更高昂。为了让大家明白我搬出的理由,不妨想想vSphere 4.1、vCenter 4.1、VMware View 4.5和View Composer 2.5方面的一些局限性。这些是组成View解决方案的最新一代的几个组件。
vCenter 4.1
经过验证的架构支持2000个虚拟桌面
vSphere 4.1
每个主机最多支持320个虚拟机
在Nehalem系统中,经过验证的架构每个核心支持16个虚拟桌面
View Composer 2.5
每个集群最大支持8个主机
每个数据存储区最多支持128个链接克隆虚拟桌面
在一个新部署的系统中,Windows7很可能是来宾操作系统(GuestOS),而该操作系统的最大推荐内存容量是2GB。为了本文的需要,我们还假设不用到处理器密集型的应用程序,单单一个虚拟处理器(vCPU)就足以满足大多数用户的需要。不过,由于Windows7的地址空间布局随机化功能(ASLR),透明页面共享(TPS)比率减小到了大约10%(如果使用Windows XP,TPS比率约为40%)。
鉴于我们已作好了假定和限制,现在运行几个模拟。完全出于好奇心,第一个模拟将使用发布不久的32核处理器。
64个核心(2个插座 x 32个核心)x每个主机16个虚拟机=每个主机1024个虚拟机(禁用超线程技术)
这种场景需要每个主机约2008GB内存。
约128个核心(2 × 32个超线程插座)x每个主机16个虚拟机=每个主机2048个虚拟机(启用超线程技术)
这种场景需要每个主机约4000GB内存。
闲话少说,vSphere每个主机最多支持320个虚拟机。就第一个例子而言,每个处理器/核心最多支持的虚拟机数量必须是5,那样虚拟机的数量才能保持在320个以下。在这种情况下,系统和处理器在很大程度上将得不到充分利用。
第二种场景使用128个超线程核心,它总共需要4000GB内存。该架构最多支持2TB内存,因而为了将内存控制在极限范围以内,每个处理器/核心支持的虚拟机数量最多是约8个。情况看起来比不用超线程技术要好一点,但是昂贵的硬件资源仍然基本上得不到充分利用。
这两种场景让人觉得像是在玩数字游戏。不妨看看在使用2个插座、每个插座有6个处理器/核心的实际部署环境下会发生什么情况。我在这种场景下没考虑超线程和睿频加速(Turbo Boost)技术,因为它们其实并不会让核心数量翻一番。
12个核心(2个插座 x 6个核心)x 每个主机16个虚拟机= 每个主机192个虚拟机
这种场景需要每个主机约312GB内存。
12个核心的场景对于每个主机支持的虚拟机数量来说很适合,不过要求每个主机约384GB内存。而现在外面的系统大多并不提供支持这么大内存容量的功能,只有少数几个例外,比如思科ASIC内存扩展架构。
如果你拥有的一个系统支持这么大的内存容量,那你需要开始考虑:如果高可用性事件被触发,你的企业或客户愿意为在另一个主机中启动虚拟桌面等待多久,或者迁移所有虚拟机以便主机维修需要多长时间。
如果你总共有约550个虚拟机,这代表停运时间接近33%。单单就存储需求而言,拥有192个虚拟机的每个主机在每个用户每秒10次输入输出操作(10 IOPS)的正常工作负载、读写比为20/80的情况下,大概需要6528次IOPS。另外别忘了考虑所有虚拟机的网络连接和吞吐量。
对于VDI解决方案而言,我的客户大多数目前采用配备2个插座、每个插座4个核心的Nehalem系统,也就是说每个主机总共有8个核心。对我来说,这种配置似乎在成本、性能与可用性之间提供了最佳组合。使用每个处理器/核心16个虚拟机的验证架构,就有可能让每个主机运行约128个虚拟机;而每个主机需要约256GB内存。
对于有些系统来说,256GB的内存仍然行不通。在这种情况下,每个处理器/核心12个虚拟机就允许每个主机可支持96个虚拟机和192GB内存。对于实际外面的所有系统来说,这听起来像是能实现的比较合理的数字。
值得一提的是,如果一个包括8个主机的集群其每个处理器/核心运行16个虚拟机,允许最多有1024个虚拟机,但没有高可用性事件所需的备用容量。这种情况下,如果某个主机关闭或丢失,就没有备用容量来启动额外主机上的虚拟机。运行8个主机的集群,每个处理器/核心又运行12个虚拟机,允许支持768个虚拟机,又拥有正好可以支持主机故障的容量。VMware的参考架构(又叫Block)建议每个集群1024个虚拟机,不过并没有将高可用性事件考虑在内。
我个人的建议是,在装满8个主机的集群中,每个处理器/核心最多只用12个虚拟机。如果你有不同的观点或看法,欢迎一起探讨。
另一个忠告是,如果你在规划设计一款View解决方案,就要想到上述数字,因为它们会影响项目的最终结果,另外不能忘了成本。
越来越多的核心……我们不需要!….至少对于VDI而言不需要。
英文原文连接:Cores and more Cores… We don’t need them! 作者:Andre Leibovici(某咨询公司的高级VMware咨询顾问,有15年IT经验,MCSE,VCP 3/4,VCAP4-DCA,VTSP4,ITIL V3,也是VMware vExpert 2010)
译文链接:http://virtual.51cto.com/art/201104/253057.htm
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。