书名:思科UCS服务器统一计算
ISBN:978-7-115-38376-1
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
• 著 [美] Silvano Gai Tommi Salli Roger Andersson
译 楼 兰 王慧英 舒宗军
审 校 谭立勃
责任编辑 赵 轩
• 人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
• 读者服务热线:(010)81055410
反盗版热线:(010)81055315
Cisco Unified Computing System (UCS)
978-1-58714-193-5
Copyright © 2010 Cisco Systems, Inc. Authorized translation from the English language edition published by Cisco Press. All rights reserved.
本书中文简体字版由美国Cisco Press授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。
版权所有,侵权必究。
献给我的妻子Antonella、女儿Eleonora和Evelina,以及儿子Marco。——Silvano Gai
献给我的妻子Sari、女儿Tara和儿子Sean。——TommiSalli
献给我的妻子Kristine。——Roger Andersson
感谢我们的父母,感谢他们在早年对我们的支持。
本书是思科公司员工和外部人员共同努力的结果。许多人为本书的出版做出了贡献,作者特别希望向以下人士表示感谢。
■ Arvie Martin ■ Bill Minto ■ Billy Moody ■ Brian Shlisky ■ Burhan Masood
■ Carlos Pereira ■ Christopher Paggen ■ Christopher Travis ■ Claudio DeSanti
■ Corey Rhoades ■ Damien Philip ■ Dan Hanson ■ Dan Lenoski
■ Dante Malagrino ■ Dave Berry ■ David Cramer ■ David Jansen
■ David Lawler ■ Diane McSweeney ■ Dinesh Dutt ■ Dino Farinacci
■ Donna Helliwell ■ Eamon O’Neill ■ Ed Bugnion ■ Eric Stephenson
■ Ezequiel Aiello ■ Fabio Ingrao ■ Fausto Vaninetti ■ Garth O’Mara
■ Gilles Chekroun ■ Gina Golden ■ Glenn Charest ■ Harpreet Bains
■ Irene Golbery ■ James Birkinshaw ■ Jason Chang ■ Jason Garbis
■ Jason Waxman ■ Jeff Ells ■ Jeff Pishny ■ Jeffrey Webb ■ Jerome Simms
■ Joe Vaccaro ■ John Flood ■ John McDonough ■ Jose Martinez
■ JR Rivers ■ Justin Cooke ■ Kathy Hickey ■ Landon Curt Noll
■ Leslie Menegaz ■ Leslie Xu ■ Liz Stine ■ Louis Watta
■ Luca Cafiero ■ Madhu Somu ■ Manoj Wadekar ■ Mario Mazzola
■ Matthew Kmiecik ■ Matthew Taylor ■ Mauricio Arregoces
■ Maurizio Portolani ■ Michelangelo Mazzola ■ Mike Dvorkin ■ Mike Galles
■Mike Liu ■ Page Tagizad ■ Pamela V. Snaith ■ Philip Manela ■ Prem Jain
■ Ranga Bakthavathsalam ■ Rich Lau ■ Richard L. Morris ■ Richard Tattoli
■ Robert Bourassa ■ Robert Burns ■ Shannon Poulin
■ Soni Jiandani ■ Stephen Elliot ■ Stephen Thorne ■ Steve Abbott
■ Steve Lemme
Silvano的妻子Antonella耐心地检查草稿以纠正错误,谢谢您!
最后,我们想感谢Julie Totora(www.paperumbrella.com),她帮助我们重新绘制了大部分图表。
Silvano Gai出生于意大利,拥有近30年的计算机工程和计算机网络从业经验。他撰写并出版了多本关于计算机网络的图书和多个互联网草案及RFC的书籍和技术作品,并拥有30项发布专利和50项专利应用。他曾获得都灵理工大学授予的计算机工程终身正教授职称,并且在CNR(意大利国家科学研究委员会)担任了7年的研究员工作。在过去十余年里,一直任职于思科,是思科Catalyst网络交换机产品线、思科MDS存储网络交换机产品线和Nexus数据中心交换机产品线的架构师。Silvano在斯坦福大学主讲I/O整合、数据中心以太网(DCE)和以太网光纤通道(FCoE)等课程。
Tommi Salli在芬兰出生并长大,拥有将近20年的计算机领域经验。他曾在SUN Microsystems和VERITAS Software等公司工作,拥有丰富的服务器和应用程序知识。VERITAS Software后来被Symantec公司收购,他也由此进入后来被思科收购的Nuova 公司。他职业生涯中曾经历过不同职位,从销售工程师到CTO办公室的技术搜索,从产品管理到架构设计,他曾负责7项专利申请。他现在则是思科公司的技术营销工程师。
Roger Andersson出生于瑞典斯德哥尔摩。他在瑞典和美国工作过,在计算机行业方面拥有20年的经验。Roger的工作经验丰富:在EMC公司的CLARiiON工程部工作超过12年,在VERITAS/Symantec工作了5年,在该公司他担任技术产品经理,专注于系统管理、服务器和应用程序自动化配置。Roger现在在思科公司担任技术营销经理,专注于统一计算系统的系统管理方面。
两年前,思科团队选择本书做为《思科数据中心系列》之一而引进中国时,我有一点点犹豫。作为IP网络界的老兵,我对服务器知之甚少。思科UCS服务器产品2009年才全球发布,当时(2011年)国内了解UCS的人并不多。
现在看来,思科UCS服务器在短短三年中取得了远远超过任何人想象的成绩。2012年,刀片服务器市场,出货量UCS全球排名第三,北美排名第二,澳洲地区排名第一。专业评估角度,Gartner公司的Magic Quadrant常常用来评估特定企业在整个行业内的竞争力。针对刀片服务器市场,UCS服务器已经连续两年进入“领导者象限”(2012 / 2013)。
UCS服务器作为行业标杆,第一次引进了许多先进特性和功能,例如硬件和配置属性通过Service Profile而分离,从而可以实现“硬件漂移”;全集群内万兆;融合的IP/FCoE/DCE网络; 2N全冗余硬件配置;大规模减少线缆数量;1个集群只有一个管理节点,从而轻松实现N:1集中管理等等。它即可以助力您建立云化的下一代数据中心,也可以帮助您实现X86环境下的快速扩容,或者只是助您对现有X86环境的升级改造。
思科UCS服务器取得的成功只是思科公司过去许多次突破中的一次。我们目前正全力以赴,向客户提供云计算为代表的下一代数据中心相关的产品和专业服务,转型成为IT解决方案供应商。思科(中国)服务公司在2009年,紧随UCS服务器的发布,组建了全职的数据中心服务团队,宗旨是向客户提供端到端的DC集成解决方案和专业服务。希望本丛书的下一部可以向大家报告我们在此领域取得的一些进展,并分享我们的经验。
再次感谢大家购买本书,它是《思科数据中心系列》的第五本。让我们一起来推动UCS 服务器在中国的推广!
思科服务事业部大中华区高级副总裁 徐维英
2013年5月
本书是作者的工作成果,作者最初在Nuova 公司工作,随后在思科公司中从事“加利福尼亚”项目,该项目的正式名称为思科统一计算系统(Unified Computing Systems,UCS)。
UCS是一种创新技术平台,将多项传统数据中心技术技能集合并到了一个系统中。因此,具有不同背景(甚至来自不同国家)的作者,决定组合他们的知识来共同出版本书。
本书从教育角度介绍UCS:我们试图提供有关下列内容的最新信息:所有服务器组件和新数据中心技术,以及如何使用这些组件和技术建立最先进的数据中心服务器。
我们希望对来自Nuova 公司和思科公司的许多工程和营销人员表示感谢,最近这些年,我们一直与他们共同工作。
如果没有思科管理团队的决心,就不可能有UCS。他们了解思科进入服务器市场的机会并决定把握这个机会。我们也要感谢他们。
UCS是思科公司做出的最大贡献之一,它并不是一个“仿造的”数据中心计算解决方案,而是一种重大的根本性转变。
开始编写本书时,我们侧重于介绍UCS,并以其他书籍作为参考资料。不幸的是,在多次光顾斯坦福大学书店和硅谷其他有名的书店后,我们没有找到任何更新的参考书籍。因此,我们只好自己在书中提供这些参考数据。
结果是,本书50%的参考资料适用于所有服务器架构,50%只适用于UCS。参考资料包括更新的处理器、内存、I/O和虚拟化架构。
UCS有一个大型的合作伙伴生态系统,其中几个合作伙伴为本书提供了资料。我们对这些合作伙伴表示感谢,感谢他们在编写本书时提供的帮助。
对于所有书籍来说,花多少时间来校对和改错始终是一个问题。我们希望在2010年7月思科在拉斯维加斯举办现场培训前完成本书。这使得拼写检查和图片改进的时间非常有限。如果发现任何错误,或者有任何改进建议,请发送电子邮件至ca-book@ip6.com。
最后,本书既不是手册,也不是标准或版本说明,更不是产品公告。编写本书是为了向广大读者介绍UCS概念及背后的知识。本书并不是所有内容的权威分析;在评估产品、设计解决方案或开展业务时,请参考相应的官方文档。作者对本书内容的正确性不提供任何保证,并且对任何错误或不精确也不承担任何责任。
数据中心是大公司IT基础架构的中心。典型的财富500强公司在世界各地运行数千个应用程序,存储PB级数据,并且有多个数据中心和一个适当的灾难恢复计划。但是,这种大规模的基础架构通常成本高昂!
数据中心需要昂贵的不动产,它们消耗大量电力,并且通常运营费用也很庞大。
为了更好地了解数据中心可以有多大规模,参考书目【35】列举了一些示例:
本章前几节将详细分析这些问题。
您可能已注意到环保问题现在已是无处不在了:新闻、政治、时尚和技术中都有;数据中心也不例外。美国国家环境保护局和美国能源部有一个联合项目,通过节能产品帮助企业在保护环境的同时节约开支:这个项目名为“能源之星”【40】。节约的费用可通过计算市场平均电价来估计【42】。
“能源之星”是一种已经证明有效的能源管理战略,有助于度量当前的能效、设定目标、跟踪节约和奖励改进。例如,2007年7月生效的“能源之星4.0”标准,它要求台式机、便携式计算机和工作站的电源在负载范围内效率达到80%。此外,它还限制了休眠设备的能源消耗,并要求系统出厂时开启电源管理功能。
另一项成果是Climate Saver 智能计算【41】,它起源于世界野生动物基金(World Widwlife Fund,WWF)的拯救气候计划。通过证明减少排放也是优秀企业的一部分,自1999年以来,已有十几个企业参与该计划来减少二氧化碳排放量。其使命是,到2010年,将每年全球计算机运行的二氧化碳排放量减少5400万吨,这相当于1100万辆汽车或者10至20个火力发电厂的年排放量。
参与计划的制造商承诺生产符合节能目标规范的产品,此外,成员还承诺购买节能计算产品。
电脑节能拯救气候行动从“能源之星4.0”关于台式机、便携式计算机和工作站的规范开始,并在2007年至2011年期间逐步提高了能效要求。
从第一天开始,UCS就符合“能源之星”标准,并且其设计满足拯救气候行动的能效目标。
为了节约能源,在“每一瓦都很重要”和“让我们以最大能耗者为目标”之间寻找平衡一直都很重要。
对于前者,我记得有个朋友告诉我,在准备长途徒步旅行之前,他把牙刷柄都钻上洞,以尽可能减少携带的重量。
对应方法是试着尽可能优化数据中心消耗电力的每个组件。例如,网络设备耗电约占总量的14%。通过使它们节能50%以上(一个很难实现的目标),可节省7%的电量。
对于后者,数据中心的最大耗电户是服务器,而通常大多数服务器的负载非常轻。图1-1显示了通用服务器的性能电能比(经sepc.org许可)。由图可见,很显然,如果服务器负载低于60%~70%,则性能电能比将低得难以接受。现代处理器有类似SpeedStep之类的技术来减少低负载处理器的耗电量,但是处理器耗电只是服务器耗电的一部分。这意味着节能的主要方法是让低负载的服务器退役,并采用虚拟机替代它们。
图1-1 http://www.spec.org示例
有统计数据声称,服务器的整体利用率在5%~10%范围之间。假设服务器消耗70%的电量,而我们将该数字减少五分之一:负载将增加到25%~50%;而耗电量将减少到14%,即纯节电56%。
组合使用这两项技术将产生更大的结果。减少服务器数量的关键技术是“服务器虚拟化”。
虚拟化是一个广泛且过度使用的术语,指计算机和网络资源的抽象。例如,VLAN(虚拟LAN)和VSAN(虚拟SAN)是网络虚拟化的形式。
数据中心中服务器虚拟化正变得越来越重要,特别是硬件辅助虚拟化。Wikipedia对虚拟化的定义是:“硬件辅助虚拟化是一种虚拟化方法,借助硬件功能,主要是主机处理器的帮助,实现高效的完全虚拟化”。完全虚拟化用于模拟完整的硬件环境或虚拟机,其中,可以完全独立地运行未经修改的“guest”(来宾)操作系统(使用和主机相同的指令集)。最初在IBM System/370上实现硬件辅助虚拟化,最近(2007年)开始在x86处理器(Intel VT或AMD-V)上实现硬件辅助虚拟化。
根据Gartner的报告,“到2012年,虚拟化是对改变基础架构和运营影响最大的趋势。它将会改变如何管理、如何购买以及购买什么、如何部署、如何计划以及如何收费【36】。”研究机构IDC的几项研究也支持这一论断。该机构报告称,现在有22%的服务器正在进行虚拟化,在未来12个月至18个月中,预计这个数字将增加到45%【37】。IDC的另一项研究预计,到2010年,服务器虚拟化产生的逻辑服务器数量将超过未虚拟化的物理服务器数量【38】。
基于X86处理器系统的虚拟化解决方案示例包括VMware vSphere/ESX、Microsoft Hyper-V、Linux KVM和Linux Xen。
借助高效的硬件辅助虚拟化,可以虚拟化多个利用率低的服务器(也就是,转换为虚拟机),并且可以在一台物理服务器上同时运行多个虚拟机。还可以将虚拟机从一台服务器迁移到另一台服务器上,以平衡负载或者是进行灾难恢复。
世界各地的企业已经开始利用此模型了。例如,2007年的IDC研究表明,50%的VMWare ESX用户已经采用了VMotion功能【39】。这项技术支持实时迁移:将虚拟机从一台物理服务器迁移到另一台物理服务器,而不影响最终用户的体验。通过为IT经理提供动态移动虚拟机的能力,实时迁移使得平衡工作负载变得更简单,管理计划内或计划外停机也变得更高效。
凭借其大内存和原生态虚拟化的支持,UCS有助于将服务器数量减少一个数量级,从而大大节省电力。
在建设新的数据中心时,每平方英尺(平方米)可安装的服务器数量是综合考虑许多因素的结果,其中一个主要因素是能提供多大程度的冷却。实际上,数据中心设备消耗的所有功率都会转换成热量,需要通过空调系统排出这些热量。
当前的数据中心每平方英尺为50W~200W(每平方米500W~2000W),这对当前的冷气技术而言最佳。新数据中心设计为每平方英尺300W~500W(每平方米3kW~5kW)。由于如此高的功率负载,因冷却系统失效导致的温度升高可达每分钟25℉(14℃),因此它们需要不间断的昂贵的冷却技术。
每平方英尺可用的瓦数直接与每个机架的可用瓦数相关。每40至60平方英尺(4~6m2)放置一个机架,当前数据中心为每机架2至10kW,未来的设计可能高达每机架12至25kW。
布线是数据中心设计的另一大主题。到目前为止,采用的是铜电缆和光纤的混合,有两种主要物理拓扑结构:架顶式(Top of Rack,ToR)和列端式(End of Row)。
EoR方法将网络设备(主要是LAN和SAN交换机)放在列端,采用端口数较多(128至512个端口)的交换机以减少需要管理的网络设备数量。这意味着从服务器到网络设备之间需要更长的电缆。速率为1Gbit/s时,可用铜电缆,但是速率为10Gbit/s时,光纤是唯一的解决方案。
虽然光纤可能比铜电缆便宜,但是当考虑到安装和接收器(一个光纤接收器的价格可能超过3000美元)时,如果每台服务器使用两个或四个连接,其费用将超过服务器的价格,这还未将交换机端口的费用计算在内。
与之相反,ToR方法尽可能靠近服务器放置网络设备,通常放在每个机架或每隔几个机架的顶部。ToR交换机通常为端口数较少(26~52个端口)且配置固定的交换机。服务器到ToR交换机的距离通常限制在33英尺(10m)之内,即使速率为10Gbit/s,也可方便地部署铜电缆,这使得在一个机架中可以全部采用铜电缆布线。光纤用于将ToR交换机连接到中心网络设备(比如,交换机和光纤通道控制器)。连接到同一ToR交换机的所有服务器分担光纤费用。与之前的EoR架构相比,这种方法有一个大的权衡,就是增加了管理点。
在这两种情况下,布线都占到数据中心资本支出(CAPital EXpenditure,CAPEX)的很大一部分,而且还限制了机架和地板下的空气流动,这对冷却系统有负面影响(OPEX,营运开支)。图1-2显示了“细绝缘电缆”的一个极端示例。
图1-2 错误的布线
在过去,数据中心要部署3个不同的并联网络:用于局域网流量的以太网、用于SAN流量的光纤通道和用于管理的单独以太局域网。有时候,还需要部署额外的专用网络,例如,用于备份的独立以太网或光纤通道网络,以及用于高性能计算的Infiniband。在最近的新一代数据中心架构中,以太网已经成为统一网络设计的一项支持技术。统一网络、I/O整合和以太网光纤通道(Fiber Channel overEthernet,FCoE)等术语用于表示采用以太网作为数据中心的唯一网络。这极大地简化了布线。
UCS是根据ToR方法设计的系统,构成UCS的所有服务器都连接到放在一个或几个机架顶部的两个互联阵列,它们使用统一网络方法进行通信,从而大大减少了布线。
灾难总是不期而遇,大型组织必须有适当的灾难恢复计划。数据中心也不例外,并且必须在安全距离进行备份,以便将两个数据中心受到同样灾难影响的可能性降至最小。这意味着复制存储和服务器,并且能够在最短的时间内(即恢复时间目标,Recovery Time Objective)重启备份数据中心的计算服务。
虚拟化再次变得有用,因为它允许将虚拟机从一个站点移动到另一个站点。通常虚拟机迁移只在同一个2层网络(比如VLAN)内才可能,因为虚拟服务器的MAC和IP地址是虚拟机的一部分,而且大多数情况下在迁移时必须保留它们。
在过去的10到15年间,数据中心规模有了极大的增长,基于在所有设施间保持稳定性的考虑,人们不愿意再采用生成树协议(Spanning Tree Protocol,STP)作为底层技术。为控制STP,需要在数据中心设施的不同区域之间放置3层边界来创建PODS或边界,以限制突如其来的2层事件,比如STP环路或广播风暴。
然而,虚拟机在2层网络上创建了一个新的兴趣点,2层网络在某一点上似乎不如3层网络。在数据中心中,这会要求采用更高效的2层多路径解决方案来替换生成树协议。IETF TRILL项目【18】是这一发展的一个好示例:它提议采用IS-IS结合MAC-in-MAC封装来支持2层多路径。也必须有在两个或多个数据中心之间扩展2层网络的有效技术,我们将在下一节“网络虚拟化”中讨论这些内容。
最后,必须有将服务器配置从一个数据中心移动到另一个数据中心的简单方法。在UCS中,不会将各种组件(MAC、地址、UUID和WWN等)的标识固化到硬件中,而是将它们包含在配置文件中。这样管理员仅需移动配置文件就可以在灾难恢复站点中重新创建一个完全相同的UCS。
网络作为虚拟化空间的一个角色,需要解决两个互补领域:首先,使用网络功能支持虚拟化计算环境;其次,网络元器件的虚拟化。
在规划灾难恢复或者是在多个数据中心设备之间管理工作负载时,更大和无处不在的2层网络提供了许多操作优势。
更大和多站点的2层网络不应产生不必要的操作负担,并且应能保持当前IP网络提供的可扩展性和稳定性。
一种有前途的解决方案是基于“MAC路由”概念的技术发展,该技术使得VPN解决方案成为可能,VPN可在不同的2层网域之间提供连接性,并同时保留基于IP互联的所有好处。这是数据中心互联解决方案的一大进步。
在MAC路由中,2层可达性信息以与3层网络中非常类似的控制协议分发。这种协议学习是保持IP网络的错误控制和无环路路径特点,同时提供2层连接性的基础。MAC路由中有技术来确保再收敛事件,广播和未知单播泛洪不被扩散,并防止其传播到多个数据中心。
在MAC路由模型中,流量转发由IP层完成,这使得解决方案与传输无关。现在,网络架构师可在数据中心之间自由选择支持1层、2层或3层服务。其关键是从一个中心传输到另一个中心时,操作模式不会发生改变。这样,传输核心和底层的2层扩展之间没有任何复杂的交互。这与当前标签交换VPN技术的传输限制大不相同。简而言之,MAC路由对于核心完全透明,因此可最大程度地降低2层扩展可能对网络设计和操作产生的影响。
Nexus 7000是首个在L2/L3边界提供MAC路由功能的思科平台,保持了在2层网域之间(可能需要2层连通性)的3层路由的好处。可在底层的IP核心或叠加控制平面中实现3层智能,这使得2层网域间的流量可继承传统上只在3层网络可见的大量增强特性。其中一些示例包括:支持高带宽互联的负载分发的无环路多路径,最佳多播复制,单播和多播的唯一控制平面,以及具有等价多路径路由的快速重路由。
MAC路由支持2层VPN解决方案,同时扩展支持3层VPN解决方案。为了虚拟化网络本身并实现虚拟网络环境整合的好处,这些方案被越来越多地采用。
虚拟化的一个重要形式是桌面虚拟化。许多大公司有数千台台式机分布在不同地点,安装和维护都很复杂。替代方法是提供终端服务器服务,但是这剥夺了用户完整的PC桌面体验。
桌面虚拟化或虚拟桌面架构(Virtual Desktop Infrastructure,VDI)提出,为系统管理员和最终用户提供一种两全其美的方案,即由系统管理员集中配置和管理最终用户的完整的PC体验。
有了桌面虚拟化,系统管理员可为所有桌面集中提供新应用程序、升级现有应用程序,并升级或修补操作系统。采用一致的方法存储数据,并且可集中备份和恢复数据。
VMware、Microsoft和Citrix等公司已提出了一些不同的方法。他们都在数据中心中运行服务,通常是在虚拟机上运行,有不同类型的桌面(从经典PC到便携式计算机,再到瘦客户端)。他们的不同之处在于:应用程序的运行位置,为用户提供的灵活性程度、桌面的标准化程度,以及安装应用程序和桌面与服务器通信所使用的技术。
远程桌面协议(Remote Desktop Protocol,RDP)已被广泛应用,市场上还有其他解决方案,但是还没有出现具有明显优势的架构。
UCS是可在由数百个不同节点构成的单个系统上运行成千上万台虚拟机的平台,因此非常适合托管大型桌面虚拟环境。
云计算是一个用于指以经济的方式运行应用程序的常用术语。其想法是使用由通用服务器、存储和网络设备组成的“云”。通过可根据应用程序需求无缝增加或减少资源的灵活管理系统,云可按需运行应用程序[43]、[44]。
有了云计算,随时随地都可以访问应用程序。云可以分为私有云或公共云。公共云计算最著名的示例是亚马逊的弹性云计算(Amazon EC2)。
当然,并不是所有应用程序都适合公共云。数据安全是最令人担忧的问题。监管要求强制在不同地点保存多个数据副本。其他问题包括延迟和应用程序可用性。
基于这些原因,许多客户在评估在企业内部创建私有云来构建经济高效的数据中心基础架构的可能性,这种私有云适合随需而变的应用程序部署。这将大大提高服务器的利用率。
此外,客户还开始要求“标准化”服务器,即可以轻松地更改服务器的用途。这些新服务器还必须能够支持大量虚拟机,可轻松地将虚拟机从一台服务器迁移到另一台服务器上,并且还有一个策略驱动型管理系统,并提供大量API接口(与云软件的接口)。
思科 UCS是在设计时就考虑了云计算的服务器。
本节介绍数据中心服务器架构的演变。
也称为离散服务器,它们是具有专有外观尺寸的独立服务器,可能包含从桌面PC到大型主机的任何计算机。它们都有如图1-3所示的基本组件,但处理器、内存、I/O容量、扩展槽和集成存储的数量可能不同。
图1-3 服务器组件
最大型的独立服务器可以运行多个不同应用程序,且支持大量用户。通常,它们使用某种形式的虚拟化软件来同时运行多个操作系统。但是,无论一台服务器的性能多强大,在物理限制和用于运行特定应用程序的操作系统方面都存在扩展性问题。
为了克服扩展性限制,可采用两种不同的方法:向上扩展和向外扩展。
向上扩展,也称为垂直扩展,该术语用于指一种基于增加单个服务器计算能力的扩展策略,方法是增加服务器资源,包括更多的处理器、内存和I/O设备等。
这种对现有系统的垂直扩展还支持它们更有效地利用虚拟化技术,因为它为托管的操作系统和应用程序提供了更多资源。
向上扩展减少了管理点的数量,可能会使安全策略执行变得更简单。
虽然对某些应用程序很有吸引力,但是大多数数据中心更愿意使用标准组件并采用向外扩展方法。
向外扩展,也称为水平扩展,该术语用于指基于增加服务器数量的扩展策略。其最大优点是管理员能够更轻松地根据需要重新调整计算。
向外扩展策略通常用于Intel x86服务器。近年来,这些基于PC架构的服务器类型价格持续下降但性能却不断提高。现在,这些“通用”系统已具备足够的计算能力来运行数据中心中出现的大多数应用程序。还可将它们互联成集群来执行高性能计算(High Performance Computing,HPC)应用程序,比如在建模与仿真、石油和天然气、抗震分析和生物技术等科学领域,这些计算以前只能在大型机或超级计算机上运行。
向外扩展模型刺激了有非常高I/O性能的共享数据存储的增长,特别是当需要处理大量数据时,比如数据库。
在这两种模型之间需要权衡。
向上扩展要求专用且更加昂贵的硬件,并且提供的操作系统环境数量有限,此外,对服务器可支持的总负载量也有限制。其优点是管理点少和对资源的利用率高,因而在功率和冷却的效率方面往往要比向外扩展高。
向外扩展将每台服务器专门用于特定应用程序。每款应用程序受到单个节点能力的限制,但是每台服务器都可运行最适合应用程序的操作系统,且能够应用合适的补丁。此外,应用程序不会相互干扰,应用程序的性能是非常确定的。这个方法明显增加了服务器数量,并且增加了管理的复杂性。
由于向外扩展不断地增加服务器数量,因此明显需要优化其规模、空气流动、连接,并进行合理化安装。
机架优化的服务器是解决这一问题的初次尝试(参见图1-4)。他们也称为机架安装服务器,能装进19英寸宽的机架,其高度以机架单位(Rack Unit,RU)来定义,一个机架单位为1.75英寸(44.45mm)高。典型的基于Intel的服务器高度为一个RU且大约耗电500W。机架通常为42 RU高,但是其功率和冷却不足以满足整个机架服务器的需要。
一个典型的数据中心为每个机架提供5kW~10kW的功率和冷却能力,因而每个机架中可安装10到20台服务器。剩下的空间装上配线架。有时安装ToR交换机来汇聚相邻的几个机架中服务器所产生的流量。在其他设计中,则使用更大型的EoR交换机来以列方式和混合使用ToR/EoR的方式连接所有服务器。
图1-4 机架安装服务器
这种方法的好处是合理的空间利用率和高度的灵活性:相对较大的服务器支持采用最新的处理器和更大的内存,以及多个I/O插槽。缺点是缺乏合理布线、不易于维修,以及缺乏有效的功率和冷却,因为每个服务器有自己的电源和风扇。
机架安装服务器只是在某些方面对传统服务器的简单重新包装,这使得可在数据中心地板的每平方英尺上安装更多的服务器,但是功能上没有太大不同。
编写本书时(2010年3月,下同),机架优化的服务器数量大约占市场上所有服务器的50%。
与机架安装服务器相比,刀片服务器是作为优化服务器布线和电源效率的方法而引入的。刀片服务器机箱为6~12 RU高,可包含6~16个计算刀片,外加不同的I/O模块、电源、风扇和机箱管理CPU(参见图1-5)。
刀片服务器的优点是共享的机箱基础架构(主要是电源和冷却)、合理的布线,以及监控共享基础架构的能力。管理点的数量从每个服务器一个降到每个机架一个,但是机箱通常是额外的人工汇聚点。
图1-5 刀片服务器
机箱的概念不是最重要的,例如,当将服务器池定义为用于特定应用程序或用于虚拟化时。
刀片服务器不能安装一般的PCI卡,而是需要有专门规格的“夹层卡”。与机架安装服务器相比,这限制了I/O选项。
编写本书时,刀片服务器占整个服务器市场大约10%,但是其使用量正在逐步增加,并且这一比例正在迅速增长。
目前,大多数服务器在每台服务器上只运行一个操作系统(通常是某种Windows或Linux)和一个应用程序(参见图1-6)。这种部署模型导致“服务器蔓延”,即CPU利用率极低的服务器数量的不断增加,平均利用率仅有5%~10%。这意味着大量空间、电力和冷却系统的浪费。
图1-6 每台服务器上一个操作系统/应用程序
这种部署模型的好处是独立(每个应用程序有确定的资源)、灵活(通常可在任意服务器上启动任意操作系统/应用程序)且简单(每个应用程序有专门的服务器和最适合的操作系统版本)。每台服务器都是一个管理对象,因为每台服务器运行一个应用程序,因而每个应用程序都是一个管理对象。
此架构允许为不同应用程序应用一致的差异化策略设置。网络为每个应用程序提供一个(或多个)物理端口,并且在该端口上,可确保QoS、ACL和安全等。这与交换机是否在刀片服务器内这一事实无关。
尽管如此,由于空间、电力和冷却的浪费,服务器蔓延正迅速变得难以接受。此外,管理所有这些服务器是管理员的恶梦,而且花费巨大。
虚拟化是用于减少服务器蔓延的关键技术之一,为世界各地的机构所广泛采用。相对于机箱作为容器,通过虚拟化,服务器可成为多个逻辑服务器的容器(参见图1-7和图1-8)。虚拟化软件包含等同于机箱中物理交换机的软件交换机。服务器虚拟化的优点是利用率、移动性和可用性,缺点是缺乏分布式策略、安全性、诊断和性能可预测性。
图1-7 服务器虚拟化
图1-8 在刀片服务器上部署的虚拟化
目前为止介绍的服务器演进主要着眼于“规模的演进”,而不是模型的显著变化。向上扩展意味着更大型的服务器;向外扩展意味着更多的服务器,因此有更多网络基础架构。例如,图1-9显示了安装在机架中、由外部交换机互联的运行虚拟化的3台刀片服务器。
通常是事后才考虑管理工具:它们只是应用于服务器,而没有深度集成。这使得管理同一组服务器的工具数量增加,通常也会难以维护策略的一致性,难以确保安全并进行扩展。
图1-9 由外部交换机互连的刀片服务器
思科统一计算系统(Unified Computing System,UCS),也称为“加利福尼亚”项目,它试图消除或者至少减少当前服务器部署中出现的限制。
思科公司对统一计算的定义如下:
“统一计算采用开放的业界标准技术,以网络作为平台,将网络虚拟化、存储虚拟化和服务器虚拟化统一起来。”
UCS是Cisco Data Center(思科数据中心)3.0架构的组件,它是一个可扩展计算平台,基于任何数据中心中天生的聚合点:网络。
UCS由聚合一组刀片机箱和机架式服务器的互联阵列组成。与刀片服务器相比,这是一种创新型架构。它取消了不必要的交换机、适配器和管理模块——也就是,与经典的刀片服务器相比,基础架构少三分之一。其结果是更少的电力和冷却,以及较少的管理点,从而增强了可靠性。例如,图1-10显示了有40个刀片的UCS。与图1-9(共计42个刀片)的3台刀片服务器相比,减少了6个以太网交换机、6个光纤通道交换机和6个管理模块。这等同于节约了电力和冷却消耗,还减少了管理点数量。
这种节约增加了大量刀片。单个UCS最多可包含320个刀片。图1-11显示了在7个机架中托管的具有280个刀片的UCS。在这种配置中,没有单点故障。
图1-10 UCS
图1-11 多机架UCS
下面所述是UCS中引入的最重要的技术创新。
图1-12 虚拟化改进
由于管理是嵌入式的,因此无需为管理软件配备单独的服务器,也无需为这些服务器配置硬件和进行操作系统升级,或者进行复杂的安装,这些安装容易产生错误或者会导致系统宕机。
UCS不仅是一个管理点,而且还是一个系统。新增的任何计算刀片或机架式服务器都具有所有UCS功能。UCS有一个全面的模型驱动架构,其中所有组件是为集成到一起而设计的。
UCS架构的核心是“服务配置文件”这一概念,即包含服务器、网络和存储属性等完整服务定义的模板。UCS中的物理服务器完全是匿名的,只有在对其上的服务配置文件进行实例化后才会有各自的特征(参见图1-13)。
图1-13 服务配置文件
这大大简化了服务迁移,因为可以轻松地将服务配置文件从某个机箱的一个刀片(参见图1-14,机箱-1/刀片-5)移动到另一个机箱的另一个刀片(机箱-9/刀片-2)中。
图1-14 服务配置文件移动
该图仅列举了一些参数;服务配置文件包含更多内容,比如BIOS版本和设置,以及启动顺序等。
从性能角度来看,处理器、内存和I/O是服务器中最重要的三个子系统。在某个给定的时间点,其中一个常常会成为瓶颈。我们经常会听说应用程序受CPU限制、受内存限制或受I/O限制。
在本章中,我们将详细介绍这三个子系统,具体参照根据IA-32(Intel架构,32位)构建的服务器,IA-32通常称为x86架构。具体地讲,我们将介绍与IA-32架构兼容的最新一代Intel处理器,也就是Intel微架构(以前的代号为Nehalem)[1]。
Nehalem微架构(参见本章的“Intel微架构”部分)及其变体Westmere微架构,包括了思科UCS使用的三个处理器系列:Nehalem-EP、Nehalem-EX和Westmere-EP。表2-1总结了这三个处理器的主要特征。
表2-1 UCS处理器
Nehalem-EP |
Westmere-EP |
Nehalem-EX |
Nehalem-EX |
|
---|---|---|---|---|
商业名称 |
Xeon 5500 |
Xeon 5600 |
Xeon 6500 |
Xeon 7500 |
支持的最大插槽数 |
2 |
2 |
2 |
8 |
每个插槽的最大核心数 |
4 |
6 |
8 |
8 |
每个插槽的最大线程数 |
8 |
12 |
16 |
16 |
MB缓存(3级) |
8 |
12 |
18 |
24 |
最大内存DIMM数 |
18 |
18 |
32 |
128 |
现代处理器或中央处理器(Central Processing Unit,CPU)都采用了最新的硅技术,一个晶片(包含一个处理器的半导体材料块)上有数百万个晶体管和数兆内存。
多个晶片焊接到一起就形成了一个硅片(硅晶圆),每个晶片都是独立切块、测试和用陶瓷封装的。这个过程包括安装晶片、将晶片衬垫连接到陶瓷封装的插脚上,然后密封晶片。至此,封装好的处理器就可以上市并在服务器上安装它们了。图2-1显示了封装好的Intel Xeon 5500处理器。
图2-1 Intel Xeon 5500处理器
处理器是使用称为“插槽”的装配/互联结构安装到主板上的。图2-2显示了用于Intel处理器的插槽。用户可根据自己的需要,安装不同时钟频率和功耗的处理器到服务器主板。
服务器主板上插槽的数量决定了可安装的处理器数量。最初,服务器都只有一个插槽,但最近,为了提高服务器的性能,市场上已经出现了包含2个、4个和8个插槽的服务器。
在处理器架构的演变过程中,在很长一段时间里,性能的改善都与提高时钟频率紧密相关。时钟频率越高,完成一次计算需要的时间就越短,因此性能就越高。
随着时钟频率接近几个GHz,处理器的物理材料明显限制了时钟频率的进一步提高,因此必须找出提高性能的替代方法。
图2-2 Intel处理器插槽
晶体管尺寸不断缩小(Nehalem使用45nm技术,Westmere使用32nm技术),可以在单块晶片上集成数百万个晶体管。利用这个优势,可在一块晶片上多次复制基本的CPU(核心)。
现在市场上多核处理器(参见图2-3)已经随处可见,每个处理器(即插槽)包含多个CPU核心(通常是2、4、6或8个),每个核心都与一级缓存(L1)关联。缓存是用于减少访问主内存平均时间的小型快速内存。通常,所有的核心会共享一个较大的二级(L2)或三级缓存(L3)、总线接口和外部晶片连接。
图2-3 插槽中的两个CPU核心(双核CPU)
在现代服务器中,核心的数量等于插槽数量与每个插槽核心数量的乘积。例如,基于Intel Xeon处理器5500系列(Nehalem-EP)的服务器通常使用两个插槽,每个插槽四个核心,总共八个核心。对于Intel Xeon7500系列(Nehalem-EX),服务器通常包含8个插槽,每个插槽8个核心,总共可容纳64个核心。
图2-4显示了更详细的双核处理器视图。CPU的主要组件(指令提取、解码和执行)都被复制,但访问系统总线是公用的。
图2-4 双核处理器架构
为了更好地理解多核架构的含义,我们先看一下程序是如何执行的。服务器会运行一个内核(比如Linux、Windows)和多个进程。每个进程可进一步细分为“线程”。线程是分配给核心的最小工作单元,一个线程需要在一个核心上执行,不能进一步分割到多个核心上执行(参见图2-5)。
进程可以是单线程也可以是多线程的。单线程进程同一时间只能在一个核心上执行,其性能取决于核心本身。多线程进程同一时间可在多个核心上执行,因此它的性能就超越了单一核心上的性能表现。
由于许多应用程序都是单线程的,因此在多进程环境中多插槽、多核心架构通常会带来方便。在虚拟化环境中,这个道理一样正确,Hypervisor允许在一台物理服务器上整合多个逻辑服务器,创建一个多进程和多线程的环境。
图2-5 进程和线程
虽然线程不能再拆分到两个核心上运行,但有些现代处理器允许同一时间在同一核心上运行两个线程。每个核心有多个可并行工作的执行单元,很难看到单个线程能让所有资源繁忙起来。
图2-6展示了Intel超线程技术的工作方式。同一时间在同一核心上执行两个线程,它们使用不同的资源,因此提高了吞吐量。
图2-6 Intel超线程技术
在存在多插槽和多核心的情况下,理解如何访问内存以及两个不同核心之间是如何通信的非常重要。
图2-7显示了过去许多Intel处理器使用的架构,被称为前端总线(Front-Side Bus,FSB)。在FSB架构中,所有流量都是通过一个单一的、共享的双向总线发送的。在现代处理器中,64位宽的总线以4倍的总线时钟速度运行。在某些产品中,FSB信息传输速率已经达到1.6GT/s(12.8GB/s)。
图2-7 基于前端总线的服务器平台
FSB将所有处理器连接到芯片组的叫做北桥(也称为MCH,内存控制器中枢)。北桥连接所有处理器共享访问的内存。
这种架构的优点是,每个处理器都可以访问系统中其他所有处理器可以访问的所有内存。每个处理器都实现了缓存一致性算法,从而使其内部缓存与外部内存,以及其他所有处理器的缓存保持同步。
但以这种方式设计的平台要争夺共享的总线资源。随着总线上信号传输速度的加快,要连接新设备就变得越来越困难了。此外,随着处理器和芯片组性能的提升,FSB上的流量也会随之上升。由于总线是共享资源,因此这会导致FSB变得拥挤不堪,成为瓶颈。
为了进一步提高带宽,单一共享总线演变成了双独立总线(Dual Independent Bus,DIB)架构,如图2-8所示,可用带宽基本上提高了一倍。
但在双独立总线架构中,缓存一致性流量必须广播到两条总线上,从而减少了总有效带宽。为了缓解这个问题,在芯片组中引入了“探听过滤器(snoop filter)”来减少带宽负载。
图2-8 基于双独立总线的服务器平台
如果缓存未被命中,最初的处理器会向FSB发出一个探听命令。探听过滤器拦截探听,确定是否需要将其传递给其他FSB。如果同一FSB上的其他处理器能满足读取请求,就会取消探听过滤器访问。如果同一FSB上其他处理器不满足读取请求,探听过滤器就会确定下一步的行动。如果读取请求忽略了探听过滤器,则会直接从内存返回数据。如果探听过滤器表示请求的目标缓存行在其他FSB上存在,它将向其他部分反映探听情况。如果其他部分仍然具有缓存行,就会将请求路由到该FSB。如果其他部分不再有目标缓存行,数据还是直接从内存返回。因为协议不支持写请求,所以必须始终将写请求传送到上述具有缓存行副本的所有FSB上。
在双独立总线之后又出现了如图2-9所示的专用高速互联(Dedicated High-Speed Interconnect,DHSI)。
图2-9 基于DHSI的服务器平台
基于DHSI的平台使用4个独立的FSB,每个处理器各使用一个FSB。引入探听过滤器实现了更好的带宽扩展。
FSB本身没有多大变化,只是现在变成点对点的配置了。
使用这种方法设计的平台仍然需要应对快速FSB上电子信号传输的挑战,DHSI也增加了芯片组上的针脚数量,需要扩展PCB路线,才能为所有FSB建立好连接。
随着Intel酷睿i7处理器的引入,许多Intel产品已经采用了一种新的系统架构。这就是著名的Intel QuickPath互联(Intel QuickPath Interconnect,QPI)。这个架构使用了多个高速单向链接,将处理器和芯片组互联。使用这种架构,使我们认识到了:
图2-10显示了一个多核处理器,集成了内存控制器和多个链接到其他系统资源的Intel QPI的功能示意图。
图2-10 具有Intel QPI和DDR3内存通道的处理器
在这个架构中,插槽中的所有核心共享一个可能具有多个内存接口(也就是内存总线)的集成内存控制器(Integrated Memory Controller,IMC)。
IMC可能具有不同的外部连接。
图2-11 具有高速内存通道的处理器
图2-12 四插槽的Nehalem EX
不同插槽中的IMC和核心使用Intel QPI相互通信。
实现了Intel QPI的处理器也可以完全访问其他处理器的内存,同时还保持缓存的一致性。这个架构也称为“缓存一致性非统一内存架构(Non-Uniform Memory Architecture,NUMA)”——也就是,内存互联系统保证内存和所有可能缓存的副本始终保持一致。
Intel QPI是一个点对点的互联和消息传递方案,它使用点对点的差动电流信号传输模式。在当前的实现中,每个链接由每个方向最高速度可达25.6 GB/s或6.4 GT/s的20条线路组成(参见本章的“平台架构”部分)。
Intel QPI使用点对点的链接,因此在插槽中需要一个内部交叉路由器(参见图2-10),以提供全局内存访问。这种路由直通能力使得不需要完整的连接拓扑结构就可以构建系统。
图2-12显示了四插槽的Intel Nehalem-EX配置,每个处理器有4个QPI,并与其他3个处理器和Boxboro-EX芯片组互联(还有SMB组件,但是没有显示)。
电子业在制造内存子系统上花费了巨大的精力,使内存子系统能够满足现代处理器所需的低访问时间和当今应用程序的高容量需求。
在介绍当前的内存子系统之前,有必要先介绍一些最常用的术语。
具体来讲,电子元件工业联合会(Joint Electron Device Engineering Council,JEDEC)是已经活跃在该领域的半导体工程标准组织。JEDEC标准21指定了从256位SRAM到最新的DDR3模块的半导体内存标准。
现代服务器的内存子系统是由RAM组成的,允许数据在一个固定的时间以任意顺序访问,无需考虑它所在的物理位置。RAM可以是静态的,或是动态的[27]、[28]、[29]、[30]。
SRAM(静态RAM)的速度通常非常快,但比DRAM(参见下一节)的容量要小(只有几兆字节),其芯片结构为只要有电就可保存信息。但它们不够大,因此不能用作服务器的主内存。
DRAM(动态RAM)是服务器的唯一选择。术语“动态”表示信息存储在集成电路的电容器内。由于电容器会随着时间的推移而放电,因此,为避免数据丢失,需要定期给电容器重新充电(“刷新”)。内存控制器通常负责刷新操作。
SDRAM(同步DRAM)是最常用的DRAM。SDRAM具有同步接口,这意味着其操作与时钟信号保持同步。时钟用于驱动流水线内存访问的内部有限状态机。流水线意味着在上一个访问未结束前,芯片可以接收新的内存访问。与传统的DRAM相比,这种方法大大提高了SDRAM的性能。
DDR2和DDR3是两种最常用的SDRAM(参见本章的“DDR2和DDR3”部分)。
图2-13显示了DRAM芯片的内部架构。
内存阵列由存储单元按矩阵方式组成。每个单元都有行和列地址。每一个位都存储在电容器中(也就是存储元件)。
为了提高性能和降低功耗,内存阵列被分割成多个“内存库(bank)”,图2-14显示了一个4-bank和一个8-bank的内存阵列组织方式。
图2-13 DRAM芯片的内部架构
图2-14 内存库(bank)
DDR2芯片有4个内部bank,而DDR3芯片有8个内部bank。
需要将多个内存芯片组装到一起才能构建一个内存子系统。它们就是按照DIMM(双列直插内存模块)来组织的。
图2-15显示了内存子系统的传统组织方式。例如,内存控制器连接4个DIMM,每一个DIMM由多块DRAM芯片组成。内存控制器(也可集成时钟驱动器)有一个地址总线、一个数据总线和一个命令(也称为控制)总线。该内存控制器负责读取、写入和刷新存储在DIMM中的信息。
图2-15 内存子系统示例
图2-16展示了内存控制器与DDR3 DIMM连接的示例。该DIMM由8块DRAM芯片组成,每一块芯片都能够存储8位的数据,每个内存字(内存数据总线的宽度)总共可存储64位的数据。地址总线有15位,它可在不同时间传输“行地址”或“列地址”,总共有30个地址位。此外,在每个DDR3芯片中,3位的库地址允许访问8个库。这可被视作将控制器的整体寻址能力提高到了8千兆字(也就是512Gbit,或64GB)。即使内存控制器有这样的寻址能力,但市面上可用的DDR3芯片容量还是很小。最后,行地址选择(Row Address Selection,RAS)、列地址选择(Column Address Selection,CAS)、写入生效(Write Enabled,WE)等都是在命令总线上。
图2-16 DDR3内存控制器示例
图2-17是DIMM示意图。
图2-17 DIMM
前视图显示了8个DDR3芯片,每个芯片提供8位信息(通常表示为“x8”)。侧视图显示了芯片位于电路板的一侧,总共有8个芯片(也就是64位)。
数据完整性是服务器架构中关注的一个重点。通常需要在DIMM上安装额外的内存芯片来检测和恢复存储错误。最常见的排列方式是添加8位纠错码(Error Correcting Code,ECC),将存储字从64位扩展到72位。这允许实现类似汉明码这样的编码方式,允许纠正单位错误并检测双位错误。这些代码也称为单纠错/ 双检错(Single Error Correction/Double Error Detection,SEC/DED)。
通过仔细组织如何将存储字写入到内存芯片中,ECC可以用于预防任一内存芯片的失效,以及单个内存芯片内的任意多位错误。该特性有几个不同的名称[24]、[25]、[26]。
Chipkill通过跨多个内存芯片位散射ECC字的位来实现这个功能,这样,任一内存芯片失效将只会影响到一个ECC位。这使得不必理会某个芯片的完全失效即可重建存储内容。
虽然完整地讨论这一技术超出了本书的范围,但是一个示例就可说明其工作原理。图2-18显示了一个每次访问时读取和写入128位有用数据的内存控制器,增加ECC后就变成144位了。144位可分成4个36位的存储字,每个存储字将是SEC/DED。通过使用两个DIMM,每个存储字包含18个4位芯片,就可以按照图2-18所示的方法重组位。如果芯片失效,每4个字中将会有一个错误,但因为字是SEC/DED的,所以每4个字都可以纠正一个错误,因而4个错误都可以被纠正过来。
图2-18 Chipkill示例
让我们重新回到DIMM是如何组织的,一组产生64位有用数据(不计ECC)的芯片称为一个“列(Rank)”。为了在DIMM上存储更多的数据,可以安装多个rank。目前有单、双和4个rank的DIMM。图2-19显示了这3种组织方法。
图2-19 DIMM和内存列
第一幅图显示的是一个单列的RAM,由9个8位芯片组成,这种配置还可以表示为1Rx8。第二幅图显示的是一个1Rx4排列,由18个4位芯片组成一个rank。最后,第三幅图显示的是一个2Rx8,由18个8位芯片组成两个rank。
内存列不能使用地址位选择,但可使用“芯片选择”。现代内存控制器最多可达8个独立的芯片选择,因此最大可支持8个rank。
SDRAM DIMM可进一步细分为UDIMM(无缓冲DIMM)和RDIMM(带寄存器的DIMM)。在UDIMM中,内存芯片直接连接到地址总线和控制总线,无需任何中间组件。
RDIMM在传入地址和控制总线,以及SDRAM组件之间放置了附加组件(寄存器)。这些寄存器添加了一个延迟时钟周期,但它们减少了内存控制器上的电负荷,因此支持在每个内存控制器上安装更多的DIMM。
因为需要附加组件,所以RDIMM通常更贵,但它们在服务器中得到了普遍使用,因为对于服务器来说,扩展能力和稳定性比价格更重要。
虽然理论上带寄存器/无缓冲的以及ECC/非ECC DIMM是可以任意组合的,但是大多数服务器级内存模块都同时具有ECC和带寄存器功能。
图2-20显示了一个ECC RDIMM。寄存器是箭头指示的芯片;这个ECC DIMM由9个内存芯片组成。
图2-20 ECC RDIMM
第一代SDRAM技术称为单倍速率(Single Data Rate,SDR),表示每个时钟周期传输一个数据单元。之后又出现了双倍速率(Double Data Rate,DDR)标准,通过在时钟信号的上升沿和下降沿上同时传输数据,无需提高时钟频率,其带宽就几乎能达到SDR的两倍。DDR技术发展到今天形成了两套标准:DDR2和DDR3。
DDR2 SDRAM(double-data-rate two synchronous dynamic random access memories)的工作电压是1.8V,采用240个针脚的DIMM模块封装。通过改进的总线信号传输,其外部数据总线能够以两倍于DDR的速度工作。
规则是:
表2-2显示了DDR2标准[2]。
表2-2 DDR2 DIMM
标准名称 |
DRAM时钟频率 |
每秒传输的数据(百万) |
模块名称 |
峰值传输速率(GB/s) |
---|---|---|---|---|
DDR2-400 |
200MHz |
400 |
PC2-3200 |
3.200 |
DDR2-533 |
266MHz |
533 |
PC2-4200 |
4.266 |
DDR2-667 |
333MHz |
667 |
PC2-5300 PC2-5400 |
5.333 |
DDR2-800 |
400 MHz |
800 |
PC2-6400 |
6.400 |
DDR2-1066 |
533 MHz |
1066 |
PC2-8500 PC2-8600 |
8.533 |
DDR3 SDRAM在DDR2的基础上对以下方面做了改进:
DDR3 DIMM有240个针脚,数量与尺寸都和DDR2一样,但它们在电气特性上是不兼容的,关键缺口位置也不一样。未来,DDR3工作时钟频率将更高。截至本书出版时,市面上只有DDR3-800、1066和1333这三种类型。
表2-3总结了不同的DDR3 DIMM模块。
表2-3 DDR3 DIMM
标准名称 |
DRAM时钟频率 |
每秒传输的数据(百万) |
模块名称 |
峰值传输速率(GB/s) |
---|---|---|---|---|
DDR3-800 |
400MHz |
800 |
PC3-6400 |
6.400 |
DDR3-1066 |
533MHz |
1066 |
PC3-8500 |
8.533 |
DDR3-1333 |
667MHz |
1333 |
PC3-10600 |
10.667 |
DDR3-1600 |
800 MHz |
1600 |
PC3-12800 |
12.800 |
DDR3-1866 |
933 MHz |
1866 |
PC3-14900 |
14.900 |
I/O子系统负责在服务器内存和外部世界之间传输数据。传统上,这种传输是通过服务器主板上兼容PCI(外围组件互联,PCI)标准的I/O总线实现的。开发PCI的目的是让计算机系统的外围设备可实现互联。PCI的历史非常悠久[1],现在的最新版本是PCI-Express。
外围部件互联专业组(Peripheral Component Interconnect Special Interest Group,PCI-SIG)负责开发和增强PCI标准。
PCI Express(PCIe)[2]是一种计算机扩展卡接口格式,旨在替代PCI、PCI-X和AGP。
它消除了困扰所有I/O整合的限制,即服务器总线缺少I/O带宽。目前所有的操作系统都支持PCI Express。
上一代基于总线拓扑的PCI和PCI-X已被点对点连接取代。由此产生的拓扑结构是一个单根联合体的树形结构。根联合体负责系统配置,枚举PCIe资源,管理PCIe树的中断和错误。根联合体及其端点共享单个地址空间,并通过内存读写和中断进行通信。
PCIe使用点对点链接连接两个组件。链接由N个通道(Lane)组成(一个N链接由N个通道组成)。每个通道包含两对电路:一对用于传输,另一对用于接收。
南桥(也称为ICH:I/O控制器集线器)通常会提供多个PCIe通道实现“根联合体”功能。
每个通道与PCI Express端点、PCI Express交换机或PCIe到PCIe桥接器相连,如图2-21所示。
图2-21 PCI-Express 根联合体
根据不同通道数量使用不同的连接器,图2-22显示了4个不同的连接器及采用PCIe 1.1可达到的速度。
图2-22 PCI Express连接器
在PCIe 1.1中,通道以2.5Gbp/s(在数据链路上的速度为2Gbit/s)的速度运行,可并行部署16条通道(参见图2-23)。可支持的速度从2Gbp/s(1x)到32Gbp/s(16x)。由于协议开销,支持10GE接口需要8x。
图2-23 PCI Express通道
PCIe 2.0(也称为第二代PCIe)将每个通道的带宽提升了一倍,即从2Gbit/s提高到4Gbit/s,同时也将通道的最大数量扩大到了32x。PCIe 4x足以支持10GE了。
PCIe 3.0将会再增加一倍带宽。最终的PCIe 3.0规范(包括外观规范更新)预计会在2010年年中发布,到2011年就可看到支持PCIe 3.0的产品[3]。要有效支持40GE(千兆以太网)就需要PCIe 3.0,这将是以太网的下一步演进。
目前所有的PCI Express部署都是单根的(Single Root,SR),也就是说,单个I/O控制器中枢(ICH)控制多个端点。
多根(Multi Root,MR)也已发展了一段时间了,但目前还未见到曙光,由于缺少组件和关注,目前还存在诸多问题。
单根I/O虚拟化(Single Root I/O Virtualization,SR-IOV)是PCI-SIG开发的另一个相关的标准,主要用于连接虚拟机和Hypervisor。这将在第3章的“DCBX:数据中心桥接交换”部分中进行介绍。
思科UCS使用Nehalem和Westmere微架构(更通用点说,是32nm和45nm的Hi-k Intel Core™微架构)的Intel处理器。
Nehalem微架构于2009年初引入到了服务器中,也是Intel[32]、[32]、[34]开发的第一个使用45nm硅技术的架构。Nehalem处理器可广泛应用于高端桌面应用程序、超大规模服务器平台等。代号名来源于位于太平洋西北岸的美国俄勒冈州的Nehalem河。
根据Intel公司的说法,处理器的发展速度就像嘀嗒钟声的节奏一样,如图2-24所示。Tick是缩小现有的处理器架构,而Tock则是在前一代技术上发展起来的全新架构。Nehalem就是45nm的Tock,Westmere则是紧跟Nehalem的32nm Tick。
图2-24 Intel Tick/Tock处理器开发模型
Nehalem和Westmere在不同需求之间取得了平衡:
它们试图在优化性能的同时降低功耗。这里的讨论基于一个优秀的Intel开发论坛教程[32]。在本章的其余部分,只讨论与Nehalem微架构相关的创新,这些创新在Westmere架构中也得到继承。Nehalem和Westmere架构有一些地方有所不同,会特别指出。
这可能是近10年来Intel最大的一次平台架构转变。该架构包括多个高速点对点连接,即Intel的QuickPath互联(参见本章的“专用高速互联”部分),以及集成内存控制器(Integrated Memory Controllers,IMC)的使用,这和基于FSB的方法完全不同。
图2-25显示了一个双插槽的Intel Xeon 5500(Nehalem-EP)系统示例。请注意,CPU插槽之间、从CPU插槽到I/O控制器之间的QPI链接,以及直接附加到CPU插槽的内存DIMM。
图2-25 双插槽Intel Xeon 5500(Nehalem-EP)
在Nehalem-EP和Westmere-EP中,每个包含集成内存控制器(IMC)的插槽支持3个DDR3内存通道(参见本章的“DDR2和DDR3”部分)。与DDR2相比,DDR3内存的运行频率更高,因此具有更高的内存带宽。此外,对于双插槽架构,有两套内存控制器而不是一套。所有这些改进使得带宽与前一代Intel平台相比提高了3.4倍(参见图2-26)。
随着时间推移,带宽以后还会持续增加,因为会有速度更快的DDR3。有了集成内存控制器后,延迟也减小了。
与DDR2的1.8V相比,由于DDR3采用了1.5V技术,因此其功耗也降低了。功耗与电压的平方成正比,因此电压降低20%,功耗就降低约40%。
最后,IMC支持单、双和四个列的RDIMM和UDIMM(只有RDIMM支持4个列,参见本章的“内存列”与“UDIMM和RDIMM”这两部分)。
图2-26 RAM带宽
Nehalem-EX有一个类似但不完全相同的架构。在Nehalem-EX中,每个插槽有两个IMC。每个IMC支持两个Intel可扩展内存互联(Scalable Memory Interconnects,SMI)连接到两个可扩展内存缓存区(Scalable Memory Buffers,SMB),每个插槽就可以连接到4个SMB(参见图2-27)。每个SMB有两个DDR3总线,每条总线连接两个DIMM。因此,每个插槽可连接的RDIMM总数就是16。
图2-27 SMI/SMB
表2-4总结了根据插槽数量和RDIMM容量计算的Nehalem-EX系统的总内存容量。
表2-4 Nehalem-EX内存容量
4GB RDIMM |
8GB RDIMM |
16GB RDIMM |
|
---|---|---|---|
2个插槽 |
128GB |
256GB |
512GB |
4个插槽 |
256GB |
512GB |
1TB |
8个插槽 |
512GB |
1TB |
2TB |
随着时间的推移,所有的通信架构都从总线架构向速度更快且扩展性更好的点对点链接演变。在Nehalem中,Intel QuickPath互联已经取代了前端总线(参见图2-28)。
图2-28 Intel QPI
Intel QuickPath互联是由Intel引入的一个一致的点对点协议,不局限于任何特定的处理器,且可在处理器、I/O设备和加速器之类的其他设备之间提供通信。
可用的QPI数量取决于处理器的类型。在Nehalem-EP和Westmere-EP中,每个插槽有两个QPI,支持如图2-25所示的拓扑结构。Nehalem-EX支持4个QPI,允许实现更多无缝连接的拓扑结构,如图2-29所示。
Intel Xeon 7500处理器也与第三方节点控制器兼容,能够与多于8个的插槽互联,从而使得系统实现更强的可扩展性。
图2-29 Nehalem-EX拓扑
Nehalem通过大量创新增加了每个CPU每秒执行的指令数,如图2-30所示。
图2-30 Nehalem微架构创新
其中有些创新是不言而喻的,我们将集中介绍最重要的性能与功耗方面的创新。
在比较性能和功耗时,通常假定1%的性能提升就会导致3%的功耗增加。这是因为减少1%的电压,功耗几乎总是降低3%(参见本章的“芯片设计”部分)。
Intel公司最重要的创新就是增强1%的性能,而功耗仅增加了1%。
Intel超线程技术可在同一核心上同时运行多个线程,在Nehalem/Westmere中实现了两个线程。这提高了性能和能源效率(参见本章2.1节中的“Intel超线程技术”部分)。
超线程的基本理念是,随着每个执行单元复杂度的增加,对于单线程来说,要保持执行单元繁忙是很困难的。通过在同一核心上运行两个线程,让所有资源保持忙碌的可能性更大,这样整体效率就提高了(参见图2-31)。超线程使用的领域非常有限(不到5%),但在多线程环境中极大地提高了效率。超线程也不是对多核心的替代,只是通过支持每个核心同时执行两个线程来对核心进行合理补充。
图2-31 Intel HT技术
对理想的内存系统的需求是:它应该具有无限容量、无限带宽和零延迟。当然,没有人知道如何构建这样的系统。最接近的方法是实现一个从较大且较慢到较小且较快的内存子系统层次结构。在Nehalem中,Intel将缓存层从2层增加到了3层(参见图2-32),从而添加了1级层次结构。
与Intel以前的设计相比,一级缓存(L1,指令和数据)没有发生变化。在Intel过去的设计中,所有核心共享二级缓存(L2)。如果核心数量限制为2,那么这种设计倒是可行的。但Nehalem将核心数增加到了4或8,二级缓存就不能再继续共享下去了,因为带宽和仲裁请求都会增加(可能会达到8倍)。为此,Intel在Nehalem中为每个核心增加了专用的二级缓存(指令和数据),以减少到共享的高速缓存(现在是三级缓存,L3)的带宽。
图2-32 缓存层次结构
Nehalem采用了模块化设计。核心、缓存、IMC和Intel QPI都是组成Nehalem处理器的模块示例(参见图2-30)。
这些模块都是独立设计的,它们可以以不同频率、在不同电压下运行。将模块粘接在一起的技术是一种新的同步通信协议,该协议提供了非常低的延迟。以前曾尝试过使用异步协议,但事实证明那样做的效率非常低。
这是一种电源管理技术,它是“时钟门控”技术进化版本,所有现代Intel处理器都使用了时钟门控技术。遇到空闲逻辑时,时钟门控会切断时钟信号,从而免除了开关电源,但仍然存在漏电流。漏电流产生了无用的功耗。随着通道长度减少,从大约130nm开始,漏电流已经占据了电源的很大一部分,到了45nm时,就会相当高了。
相反,功率门限同时关闭开关和漏电,使得空闲核心耗电几乎为零(参见图2-33)。对于软件和应用程序来说,这完全是透明的。
从技术角度来看,实现功率门限是很难的。传统的45nm工艺就存在明显的泄漏。它需要新的晶体管技术和大量铜层(7mm),以前可从来没有这么做过(参见图2-34)。
随着通道长度不断变短,功率门限也变得越来越重要,这是因为漏电流在不断增加。在22nm时,功率门限至关重要。
图2-33 Nehalem功率门限
图2-34 功率门限晶体管
Nehalem-EP和Westmere-EP都拥有“动态的”功率门限能力,当核心不需要执行工作负载时,可以完全关闭核心电源。之后,当工作负载需要核心的计算能力时,核心的电源又重新激活。
Nehalem-EX拥有“静态的”功率门限功能。某些核心出厂时就禁用,如当8核心熔合成6核心时,核心电源就会完全关闭。这些禁用的核心不能重新启用。对于前几代处理器,在工厂中禁用的核心仍然会消耗一些电力,但在Nehalem-EX中,电源是完全关闭的。
功率传感器是构建电源管理系统的关键。上一代Intel CPU具有热传感器,但没有功率传感器。Nehalem既有热传感器又有功率传感器,通过负责电源管理的集成微控制器(PCU)来进行监控(参见图2-35)。
图2-35 电源控制单元
功率门限和电源管理是Intel智能加速技术(Turbo Boost Technology)的基本组件。如果环境条件允许(足够的制冷和供电能力),例如,因为一个或多个核心被关闭,当操作系统需要更高的性能时,可以使用Intel的智能加速模式。Intel智能加速会提高活动核心的频率(以及功耗),从而提高指定核心的性能(参见图2-36)。这算不上是巨大的改进(从3%到11%),但在线程很少或者并不是所有核心都被并行使用的环境中,Intel智能加速还是很有价值的。每上升一步,频率提高133MHz。
图2-36显示了3种不同的可能性:正常情况下,所有核心都以标称频率(2.66GHz)运行;在4C Turbo模式下,所有核心的频率都上升了一步(例如,达到了2.79GHz);在<4C Turbo模式下,两个核心的频率都上升了两步(例如,达到了2.93GHz)。
图2-36 Intel智能加速技术
Intel虚拟化技术(Virtualization Technology,VT)扩展了核心平台架构,可以更好地支持虚拟化软件——例如,虚拟机(Virtual Machine,VM)和Hypervisor(也称为虚拟机监视程序,Virtual Machine Monitor,VMM),参见图2-37。
图2-37 虚拟化支持
VT包含4个主要的组件。
Intel VT-x增强包括以下内容。
一个新的、更高特权的Hypervisor——允许来宾操作系统和应用程序运行在为其设计的特权级别中,确保Hypervisor有权控制平台资源。
基于硬件的转换——在硬件级支持Hypervisor和来宾操作系统之间的切换。这减少了复杂的、计算密集型软件转换需求。
此外,Nehalem还增加了:
FlexMigration允许在不同指令集处理器 之间迁移VM。它是通过同步所有处理器 都支持的最小指令集来实现的。
当第一次实例化VM时,它会查询处理器 来获取指令集水平(SSE2、SSE3和SSE4)。处理器 返回池中商定的最低指令集水平,而不是处理器 本身支持的指令集水平。这就允许在具有不同指令集的处理器之间实现VMotion。
EPT是一种处于Hypervisor控制下的新页表结构(参见图2-38)。EPT定义了客户机物理地址和主机物理地址之间的映射。
图2-38 扩展页表
在虚拟化之前,每个操作系统负责虚拟应用程序地址和“物理地址”之间的程序页表转换。使用虚拟化后,这些地址就不再是物理的了,而是在VM中的虚拟地址。Hypervisor需要在客户机操作系统地址和真实物理地址之间转换。在EPT出现之前,Hypervisor通过软件的方式在重要的边界(如VM的入口和出口)更新它们来维护页表。
有了EPT后,无需Hypervisor的介入,EPT基指针和EPT页表支持直接从虚拟地址转换到物理地址,这种转换方式与操作系统在原生环境中的转换方式类似。
这是分配一个VM ID来标记CPU硬件结构(如,转换后备缓存区TLB,Translation Lookaside Buffers),以避免在VM转换时清洗的一种能力。
在VPID出现之前的虚拟化环境中,CPU会无条件为每个VM转换(如VM入口/出口)清洗TLB。这样做的效率很低,并且会降低CPU性能。有了VPID后,Hypervisor使用一个ID标记TLB,这可以更高效地清洗缓存区中的信息(只清洗需要的)。
有了这个功能后,Hypervisor可在一段指定时间后让客户机优先执行。在进入客户机之前,Hypervisor会设置一个计时器值,当计时器清零时,VM就退出。计时器会让VM无需中断就直接退出,因此使用这个功能时就不会影响VMM虚拟化中断的方式。
通过预防关键系统数据结构被修改,使VMM可以保护客户机操作系统免受内部攻击。
操作系统操作由一组CPU使用的关键数据结构(IDT、GDT、LDT和TSS)控制。如果没有这个功能,Hypervisor就无法预防在客户机操作系统上运行的恶意软件修改这些数据结构的副本。Hypervisor使用这个功能可拦截修改这些数据结构的尝试,从而禁止恶意软件的入侵。
这是一种改进32位客户机操作系统性能的技术,旨在加快虚拟化中断处理速度,从而提高虚拟化性能。FlexPriority通过避免访问高级可编程中断控制器时不必要的VMExits来提高中断处理速度。
这项技术检测多处理客户机的自旋锁以减少“锁定者抢占(lock-holder preemption)”。如果没有这项技术,指定的虚拟处理器(vCPU)可能会在锁定时被抢占。其他想获取锁定的vCPU会在整个执行时间片内自旋。
在Nehalem-EX中使用了这项技术,但在Nehalem-EP中没有使用该技术。
与Nehalem-EP相比,在Nehalem-EX中对高级可靠性进行了许多创新,或者更确切地说,应该是可靠性、可用性和可维护性(RAS),参见图2-39。
图2-39 Nehalem-EX RAS
具体来讲,所有主要的处理器功能都具有RAS特性,包括QPI RAS、I/O集线器(IOH)RAS、内存RAS和插槽RAS。
纠错现在使用修正机器校验中断(Corrected Machine Check Interrupts,CMCI)来发出信号。
另一种RAS技术是机器校验架构恢复(Machine Check Architecture-recovery,MCAr);也就是CPU向操作系统报告硬件错误的一种机制。有了MCAr后,就可以从致命的系统错误中恢复过来。
部分功能需要操作系统的额外支持,或需要硬件供应商的实现和验证。
这项技术目前仅在Nehalem-EX中实现。
Westmere-EP增加了6个新指令来加速常见高级加密标准(Advanced Encryption Standard,AES)算法的加密和解密。有了这些指令后,所有AES运算都通过硬件完成,这样不只是速度更快,比起软件实现也更安全。
这使得应用程序可使用更强的密钥且开销更小。应用程序可以加密更多数据以满足监管要求,除了更安全外,对性能的影响也更小了。
这项技术目前仅在Westmere-EP中实现。
Intel可信执行技术(Trusted Execution Technology,TXT)有助于检测和预防基于软件的攻击,特别是:
Intel TXT使用一个组合了处理器、芯片组和可信平台模块(Trusted Platform Module,TPM)的技术测量引导环境以检测软件攻击(参见图2-40)。
这项技术仅在Westmere-EP中实现。
图2-40 Intel可信执行技术
如果想获得高性能又想限制功耗,那么就需要在几个不同因素间达到平衡。
随着晶体管通道长度的逐渐缩短,可用的电压范围也越来越有限(参见图2-41)。
图2-41 电压范围
最高电压受总功耗以及与高功率相关的可靠性下降的限制,最低电压主要受软错误(特别是存储器电路中的错误)限制。
一般说来,在CMOS设计中,性能与电压成正比,因为电压越高频率也越高。
性能~频率~电压
功耗与频率和电压的平方成正比:
功率~频率×电压2
由于频率和电压是成正比的,因此:
功率~电压3
能源效率定义为性能和功率之间的比率,因此:
能源效率~1/电压2
因此,从能源效率的角度来看,降低电压(即功率,参见图2-42)才会凸现优势,因而Intel已经决定着手解决这个问题。
图2-42 功耗与性能的关系
由于更容易遭受软错误影响的电路是内存,因此,Intel在Nehalem中加入了复杂的纠错码(三重检测,双重纠错)来纠正这些软错误。此外,缓存的电压和核心的电压是解耦的,因此缓存可以保留高电压,而核心可在低电压下工作。
对于L1和L2缓存,Intel已采用新的8晶体管设计(8-T SRAM)取代了传统的6晶体管SRAM(6-T SRAM)设计,这解耦了读和写操作,并允许使用更低的电压(参见图2-43)。
同样,为了降低功耗,Intel又回到了能耗更低的静态CMOS技术(参见图2-44)。
通过重新设计一些关键算法(如指令解码),性能得以再次提升。
图2-43 6晶体管SRAM与8晶体管SRAM的对比
图2-44 不同技术的功耗
除了Nehalem提供的虚拟化支持外,在芯片组/主板级也增强了对虚拟化的支持。这些改进对于提高Hypervisor(按照Intel公司的说法,Hypervisor指的是VMM:虚拟机监视程序)的I/O性能很重要。
服务器使用输入/输出内存管理单元(Input/Output Memory Management Unit,IOMMU)将具有DMA能力的I/O总线(如PCIe)连接到主内存。和传统的内存管理单元(Memory Management Unit,MMU)一样,MMU将CPU可见的虚拟地址转换成物理地址,而IOMMU负责将设备可见的虚拟地址映射到物理地址。这些单元也提供了内存保护功能,以免受到错误操作设备的影响。
I/O虚拟化的一个基本要求是能够隔离和限制设备访问由管理设备的分区所拥有的资源。
2008年,Intel公司发布了IOMMU技术规范:直接I/O虚拟化技术,缩写为VT-d。
Intel VT-d为VMM软件提供了下列功能。
Intel连接虚拟化技术(Virtualization Technology for Connectivity,VT-c)是一组I/O虚拟化技术集,可降低CPU利用率,减少系统延迟,提高网络和I/O吞吐量。
Intel VT-c由平台级技术和创新的下一代I/O虚拟化技术集合而成:
在虚拟环境中,Hypervisor管理所有VM(虚拟机)的网络I/O活动。随着VM数量的持续增长,I/O负载也随之增加,Hypervisor需要更多的CPU周期来给网络接口队列中的数据包排序,然后将它们路由到目标VM,这降低了应用程序可用的CPU容量。
Intel虚拟机设备队列(Virtual Machine Device Queue,VMDq)通过在芯片组上添加硬件支持,减轻了Hypervisor的负担,同时增强了网络I/O。特别是,增加了多个网络接口队列和硬件级智能排序,如图2-45所示。
图2-45 VMDq
当数据包抵达网络适配器时,网络控制器中的二层分类器/排序器根据MAC地址和VLAN标记对数据包进行排序,并确定每个数据包的目的地应该是哪一个VM。然后按顺序将数据包放入分配给该VM的接收队列中。Hypervisor的二层软件交换机只是将数据包路由到各自的VM,不会执行繁重的数据排序操作。
当数据包从虚拟机向适配器传输时,Hypervisor会将数据包放入各自的队列中。为了防止阻塞,确保每个队列得到公平服务,网络控制器以一种轮循方式传输队列中的数据包,从而保证VM服务质量(QoS)。
如果要充分利用VMDq,就需要修改VMM以便每台虚拟机支持一个队列。例如,VMware在它的Hypervisor中引入了一个称为NetQueue的特性。NetQueue可以利用帧、VMDq的排序功能。NetQueue和VMDq结合使用可以减轻ESX路由数据包的负担,从而减轻了CPU压力,并降低了延迟(参见图2-46)。
图2-46 VMM NetQueue
VMQ是微软的一项Hyper-V排队技术,使用了Intel以太网控制器的VMDq功能,在将数据包传递到虚拟机的过程中,将软件参与处理的过程降低到最少。
虚拟机直接连接(VMDc)可给独立的VM分配直接网络I/O。这个功能提高了整体网络性能和VM之间的数据隔离,并让VM实时迁移成为可能。
VMDc符合单根I/O虚拟化(Single Root I/O Virtualization,SR-IOV)标准(参见第3章的“SR-IOV”部分)。
最新的Intel以太网服务器控制器支持SR-IOV,将物理I/O端口虚拟成多个称为虚拟功能(Virtual Functions,VF)的虚拟I/O端口。
将物理设备分为多个VF可以让VM实现与物理I/O设备相当的I/O性能。该功能可以增加每台物理主机支持的VM数量,从而增强服务器的整合能力。
VMDq和VMDc的结合就诞生了VMware VMDirectPath,以一种类似于“内核旁路”的方式绕过了ESX/vSphere Hypervisor,不使用Hypervisor中的软件交换机,数据直接从物理适配器传递到vNIC,反之亦然。参见第3章的“VN-Link”部分,特别是图3-20。
[1] 作者对编辑本章所采用的信息和材料向Intel公司表示感谢。大多数图片承蒙Intel公司提供。
[2] 某些DDR2模块有两个名字,具体取决于制造商。