揭开Nitro系统神秘面纱,迁移到AWS全新实例正当时?
2013年,AWS开始在内部启动了一项革命性的研发项目Nitro,该项目通过软硬件的创新,能够给使用AWS云服务的全球用户带来更丰富的计算选项和性价比。今天,Amazon EC2的最新计算实例C5、R5和M5等五系列实例已经基于最新的Nitro系统构建,而且AWS已经完成Nitro系统向后兼容前几代实例,实现了Nitro在整个EC2产品组合中的普及。
Nitro系统包括定制化硬件Nitro卡、Nitro虚拟机管理程序(Hypervisor)、Nitro芯片,它已经成为AWS新一代云服务实例的技术底座。多年以来,业界对Nitro系统充满了好奇,但AWS一直对其讳莫如深,随着C5、M5、R5和T3等新实例落地中国,AWS也首次在中国市场揭开了Nitro的神秘面纱。
Nitro的前世今生
对于用户而言,选择适合自己的公有云服务的因素有很多,但最核心的还是围绕如按需付费来进行成本优化,可按需索取弹性可扩展的资源,使用丰富的云功能等来考量,Nitro正是从客户这些敏感需求而来的技术产物。从纯技术视角,其实用户不需要对云服务提供商背后所进行的技术架构变革过于关注;但在应用视角,用户却有必要进行考虑,这就是为什么我们要一窥Nitro的原因。
据AWS提供的数字,相比C4基于Nitro的C5实例在性价比方面提升了25%,在中国更是高达49%。也就是说,在相同用量和成本的情况下,C5实例提供给用户预测性更强的性能表现。基于Nitro实例的性能表现已经接近于裸机系统,根据第三方的报告显示,二者的差别小于1%。
而这离不开AWS不断通过技术革新来降低虚拟化开销的努力。在AWS将Nitro引入到EC2实例之前,Amazon EC2实例的虚拟化走过了漫长的过程。
Amazon EC2虚拟化的演进历程
Nitro项目的驱动力,源自虚拟机管理程序从2012年开始暴露出的一系列瓶颈与缺陷,特别是虚拟机管理程序对于网络以及存储设备的处理方式。这促使AWS寻求新的方法以改进纯软件虚拟和Xen半虚拟化(简称PV)架构,克服其以设备类型不同而存在的巨大差异,进而探索分解虚拟机管理程序以提升性能与灵活性的可行方法。
通过上图,我们不难发现,Nitro的诞生循序渐进,从软件虚拟化、Xen半虚拟化块存储到硬件虚拟化,Xen都一直伴随着Amazon EC2实例用量的快速增长,AWS不断加入硬件虚拟化的的技术来降低开销。到了2017年,不管是网络I/O,本地存储I/O,远程存储I/O等都已平滑切换到了Nitro。
一直以来Xen都是Amazon EC2中的核心组件,Xen虚拟机管理程序要求用户在每台服务器上设置一个管理分区。该分区连同其托管的VMM(Xen、KVM等)与DM(设备模型),共同申请执行任务所必需的系统资源。这些管理要求势必会从虚拟机的手中夺取一部分系统资源。要想在管理分区与虚拟机之间实现资源使用量均衡,会让用户投入大量时间与精力通过实验取得平衡。
另一大挑战在于,DM属于软件解决方案,其处理的问题在传统服务器中由硬件负责解决。所以相比之下,软件DM的速度慢,而且会降低虚拟机的整体性能水平。
基于此,AWS的Nitro开始尝试改进EC2的虚拟化策略,首先将目光投向DM,并尝试降低其处理任务时所带来的延迟。于是,EC2团队与硬件团队合作开发了一系列适用于特定场景的接口卡(即Nitro卡),从而利用硬件解决方案取代原本的多种DM。从上图我们会发现,从Xen AWS 2013开始,AWS已经逐渐开始引入Nitro卡,EC2实例类型C3开始支持网络接口的硬件虚拟化,AWS称之为增强型网络,从最初通过使用ixgbe驱动程序,实现10 Gbps的网络连接,到引入ENA驱动程序,实现25 Gbps的网络连接。现在Nitro系统已经可用于处理来自Nitro Hypervisor的存储、网络、管理、监控以及安全等硬件的调用请求。
Nitro是一套生态系统
Nitro是结合了软硬件的生态系统,不仅仅是虚拟化这么简单。
搞明白了Nitro系统诞生的前世今生,我们再来具体看看它各个组件是如何协同配合实现近乎于裸机的性能。AWS的Nitro系统包含一款轻量级的Hypervisor,用于替代Xen及其设备处理系统,以及多款定制化的接口卡,用于处理Nitro实例的存储、网络、管理等需求;还有自研的安全芯片,其被直接集成在主板之上。
AWS为网络、存储的I/O加速和监控、安全配备了多种Nitro卡,它们搭载在物理服务器的PCIe插槽上。包括了面向VPC (Virtual Private Cloud)型的Nitro卡,面向EBS(Elastic Block Store)型的Nitro卡,面向实例存储型的Nitro卡,Nitro卡控制器,Nitro安全芯片,满足用户对EC2实例的不同需求。
面向VPC的Nitro卡,本质上是一款PCIe连接的网络适配器(即网卡),它的作用是在EC2服务器与该服务器类型之上建立网络连接,提供丰富的网络传输、安全、控制和路由功能。与所有其它网卡一样,与之连接的设备需要加载特定的驱动程序,目前在EC2实例上普遍使用ENA驱动程序,它支持25 Gbps的网络连接。需要特别强调的是,ENA目前已经纳入全部主要的操作系统与发行版当中,如Windows、红帽企业Linux、Ubuntu、Debian、SUSE企业Linux、CentOS以及FreeBSD等,并逐渐成为业界的标准。
据了解,在2018年,AWS将ENA升级为EFA驱动程序,提供了高达100 Gbps的网络连接,这在其他云服务提供商中是没有的。目前,EFA驱动程序仅在EC2的C5n实例中提供。
面向EBS的Nitro卡,可为AWS EBS提供存储加速支持。所有实例的本地存储都以NVMe(PCIe非易失性内存)设备的形式实现,并由面向EBS的Nitro卡提供透明加密、限制并保护其他用户系统性能、驱动器监控以追踪SSD寿命以及裸机实例类型支持等功能。
远程存储同样以NVMe设备的形式实现,作为NVMe over Fabrics实现面向EBS卷的访问,以确保加密保护并消除对其他EC2用户的性能影响。特别重要的是,即使是在裸机环境当中,这些安全保护机制也同样有效。
与AWS通过ENA和EFA定义业界网络标准不同,在存储方面AWS会遵循业界标准来构建Nitro卡的相关实例类型。
Nitro卡控制器负责协调所有Nitro卡、Nitro Hypervisor以及Nitro安全芯片。其利用Nitro安全芯片实现硬件root可信性,同时支持实例监控功能。此外,它还能够为单一或者多个面向EBS型Nitro卡提供NVMe控制器功能。
Nitro安全芯片,涵盖从I/O到NVMe的所有保护对象,包括BIOS、各类I/O设备固件以及服务器上的任何其它控制器固件,为整个Nitro系统的安全启动和应用提供保障。
作为Nitro系统中的核心组件之一,Nitro Hypervisor主要负责为EC2实例提供CPU与内存隔离能力。它基于Linux内核的虚拟机(简称KVM)技术自主开发,它取消了各类常规操作系统组件,从而为EC2虚拟化实例提供更出色的性能一致性,同时提升可用计算与内存资源,允许AWS提供更为可观的实例规模。与Nitro卡协同配合,Nitro Hypervisor变得更加轻量级,因为涉及任何与网络及数据存储相关的处理任务都交给Nitro卡承担。
运行在Nitro Hypervisor上的实例最高可支持27个额外PCIe设备作为EBS存储卷与VPC ENI(全称Elastic Network Interfces)。每个EBS存储卷或者VPC ENI占用一个PCIe设备名额。
举例来说,如果你向某一使用Nitro Hypervisor的实例中接入3个网络端口,则可向该实例中再接入24个EBS存储卷。
前面我们已经提到,Xen一直伴随着AWS虚拟化策略的演进,面对未来Xen与Nitro Hypervisor所存在的竞争关系, AWS的官方回复指出,“Xen仍将作为EC2实例的核心组件存在。自从Xen作为Linux基金会协作项目诞生以来,AWS一直作为Xen项目的创始成员,且目前仍然是其咨询委员会中的积极参与者。随着AWS不断扩展全球云基础设施,EC2中基于Xen的虚拟机管理程序也在不断发展。因此,EC2对于Xen的投资将持续增长,而非削减。”
但我认为,随着Nitro系统体系的完善,Nitro Hypervisor会逐渐取代Xen,在未来很长的时间内,二者或将并存于AWS的EC2实例中。但不管是选择Nitro Hypervisor,还是Xen,AWS把决定权交给了用户。
迁移到新一代EC2实例
在系统性的了解了Nitro系统之后,可能会让你从EC2的已使用实例迁移到EC2新一代五系列实例,或选择EC2服务更有信心。据AWS透露,目前在全球范围内已经有超过2000个中国客户在使用C5和M5实例”。
对于用户来说,选择云供应商不是一次性事件,而是每次为应用选择承载的云环境都要考虑的持续性工作。当企业把工作负载和应用迁移到云端,公有云服务商则需要匹配更多、更丰富的实例选项来供用户选择,并兼有更经济的成本,新一代EC2实例就是这样的绝佳选择。因为在中国区上线的新实例中,不仅性价比大幅提升,AWS还结合中国市场对其实例价格进行了大幅度的调降。
EC2在全球提供超过185种实例,涵盖通用计算M系列(最新M5,已在中国区上线)、计算密集C系列(最新C5,已在中国区上线)、内存密集型R系列(最新R5,已在中国区上线)、存储密集i、d和h系列和通用型可突增T系列(最新T3,已在中国区上线)的高性能计算实例。
目前EC2实例家族,支持四大类处理器类型,既有满足主流需求的英特尔Skylake处理器,也有从用户需求角度出发、更具性价比的AMD EPYC处理器,在GPU领域采用基于英伟达V100和图灵T4的处理器。此外,AWS在2018年的re:Invent大会上公布了AWS自研的Graviton处理器,这是一款基于ARM架构开发的处理器,为EC2满足用户相关应用在云端的部署和开发提供了便利。
用户需要特别留意,AWS在新的五系列EC2实例C5、M5、R5和T3中,处理器配置与竞争对手的不同,它们都采用了英特尔新的Xeon Platinum (之前代号Skylake)处理器,其中C5是与英特尔定制的Intel Xeon Platinum 8124M处理器,18核,主频3.0/睿频3.5;而M5a和R5a实例独家采用了最新的AMD EPYC处理器。AWS也是最早和英伟达在GPU领域展开合作的公有云提供商,目前在全球基于V100的实例聚集了众多在人工智能、机器学习、HPC和图形计算的客户群。
以上全新上线实例,结合了Nitro系统和领先的处理器,使得其实例性能都大幅度提升。
AWS为满足用户工作负载和业务需求所提供的实例类别
相比C4,C5实例在标准频率下能够达到3.0GHz,在turbo情况下能够达到3.5GHz频率。最多支持72个vCPU和144GiB的内存,上文已提到C5实例支持25 Gbps的网络网络连接,而在最新一代C5n的实例中可支持100 Gbps的网络连接。
同时C5上支持英特尔AV-512的指令集,方便很多用户基于指令集开发一系列的基于机器学习的应用负载,同时C5d支持本地的NVMe SSD存储。
除了性能之外,因为采用Nitro系统,C5实例在CPU:RAM比和规模(Size)上都有了极大提升
AWS表示,因为AWS针对中国区采取了特别的定价策略,使得C5实例的性价比提升了49%。正因为如此,建议有计算密集型工作负载,例如批处理、分布式分析、HPC、机器/深度学习推理、广告投放、高度可扩展的多人游戏和视频编码需求的用户,尽快迁移到C5实例。
M5支持最多96个vCPU和384GiB的内存,同时支持英特尔AV-512的指令集。M5实例与M4实例相比,性价比最多提高47%;M5a因为在AMD EPYC处理器上运行,价格比M5低10%。
R5的CPU和内存的比例是1:8,最大也支持到25 Gbps的网络连接,同时R5d支持最大3.6TB的本地NVMe SSD。R5a也运行在AMD EPYC处理器上,所以价格比也R5低10%。
此外,T3实例的CPU性能可以突增,与T2实例相比,性价比最多提高30%。
AWS透露,M5、M5a、T3、R5a和I3实例支持所有EC2定价选项(包括按需、预留和 Spot 实例),按需价格最高可享受90%的折扣。
结语
根据IDC发布的《2018中国公有云服务市场下半年度跟踪报告》显示,AWS以6.4%的份额名列第四,份额比2018年上半年提高了0.4个百分点。如果计算IaaS+PaaS,AWS的份额是7.2%,而且在前五名中如果计算IaaS+PaaS,只有AWS的份额为上升。相信随着搭载了Nitro系统的新一代EC2实例落地中国市场,AWS将进一步扩大其市场份额,因为Nitro系统显著降低了AWS的运营成本,同时却能够为中国用户提供速度更快、性能更强的实例。