谁能想到,最终在超大规模云平台上坚持x86架构的,很可能是谷歌。
在过去的几年中,亚马逊一直在努力推广其Graviton产品线,包括去年3月开始生产的Graviton 2和去年11月公布的Graviton 3芯片,目前仍处于预览非量产状态。总之,AWS地区和数据中心全力迎接新兵种的到来。

现在,微软也开始在Azure Cloud上发布新的实例,显然是想在ARM服务器芯片领域大显身手。这些示例基于Ampere Computing制造的80核“Quicksilver”Altra Arm服务器芯片。这款芯片于2020年6月首次发布,最高频率为3 GHz,可容纳80个计算核心。虽然Ampere Computing Altra处理器支持的新Azure D系列和E系列实例吸引了很多关注,但奇怪的是,为什么微软没有一年甚至更早开始发布它们,也不清楚为什么微软没有使用原定于2020年第四季度提供样本并于去年秋天正式供应的128核“Mystique”Altra Max来开发新的实例。但无论如何,Mystique处理器可以与微软目前部署的Quicksilver芯片进行socket兼容,因此微软可以根据需求快速将Altra Max芯片连接到供应链、服务器及其数据中心。
各位朋友可能还记得“Siryn”芯片,也就是采用安培计算“A1”原创研究核心的芯片方案。我们基本上已经对它失去了期待。毕竟不太可能使用Altra品牌,而且“A1”这个名字也不符合市场受众对技术和最终产品的期待——枯燥的名字往往会让人失去关注和讨论的兴趣。而且纵观安培计算的整个计算路线图,可以发现超大规模的企业和云服务商想要的是一个完整的技术体系,而不是一个具体的芯片产品。甲骨文、腾讯、阿里巴巴甚至微软都想为自己的公有云选择最合适的芯片,而A2核的下一代芯片在安培计算中值得期待。这款新产品预计将于2023年上市。
但是,发射和批量出货完全是两个概念。只要超大规模的企业和云服务商不能马上把这个芯片放到云端的上万台服务器上,安培计算的所有路线图仍然只是空说说而已。量产、认证、机房建设都需要时间,所以数据中心架构层面的这些阶段性变化转化为实际影响需要五到十年的时间。说了这么多,现在的ARM服务器芯片确实情况不错。只要不出大的意外,ARM当初定的20%到25%的市场份额目标应该没问题。
微软的态度也相当明确,全力支持Azure云端遍地开花的ARM服务器芯片。在2017开放计算峰会的演讲中,微软提到希望让ARM服务器占所有服务器计算能力的50%。不过,当时微软还没有承诺在Azure云基础设施中直接提供ARM计算能力,也没有提到在ARM上发布Windows Server stack。此外,微软还在本次峰会上公布了“奥林巴斯计划”(Project Olympus),以预览的形式展示了这些服务器上的Cavium ThunderX芯片和高通Centriq芯片。但随后几年,情况发生了很大的变化,高通取消了Centriq产品线,Cavium被Marvell收购,ThunderX3也很快被抛弃。这迫使微软不得不自己设计ARM服务器芯片,或者由Ampere Computing开发。目前,许多行业分析师认为,微软将采取双管齐下的研发方式。
那么,Azure部署了多少ThunderX2芯片呢?我们认为不会太多,否则Marvell会停止这个可观的业务板块。Azure有多少安培计算Altra设备?应该比ThunderX2多很多。简而言之,微软正在云基础设施上提供ARM计算能力,主要用于在虚拟机上运行Linux操作系统。但据我们所知,Windows Server尚未登陆ARM平台,一旦登陆,将对服务器计算架构产生深远影响。有了这个背景,再参考微软“AWS不会坐视不管,率先定义数据中心未来ARM服务器”的说法,接下来的情况就相当明朗了。
在微软的ARM AZURE实例上
目前微软的Quicksilver ARM实例还处于技术预览阶段,所以我们不太了解细节。但是,一旦Quicksilver和AWS Graviton 3实例揭开了这层神秘的面纱,那么我们一定会对这两个ARM服务器实例进行性价比分析,横向对比两个x86实例的销量。下面,我们用已知的参数信息编制了一个表格,对比各个实例的配置、速度和价格。如您所见,微软已经宣布了接下来六种ARM服务器实例类型的基本参数:
首先,每颗芯片提供8个DDR4内存控制器,这意味着Altra CPU可以支持远超目前配置水平的内存容量。ALtra CPU还支持NUMA集群,可以用来创建更大的内存地址空和计算引擎。尚不清楚这些Azure实例是单插槽还是双插槽设计。
至于我们另一个好奇点,微软也没有给出答案,那就是既然Altra芯片最多可以支持80核,为什么新实例分别只提供32核和64核?或许是因为这些实例都是使用单插槽服务器,对应的系统没有DPU来分担网络和存储虚拟化负载,所以只能画出一部分核心的运营管理程序栈。当然,微软服务器也可能配备DPU,但32核和64核是安培计算芯片的最佳性价比范围。无论如何,实际情况应该是这两者之一。
为了帮助您理解不同Azure ARM服务器实例之间的SKU差异,我们编制了下表,并列出了每个按需实例的每小时使用成本。。在表中,我们计算了超大规模企业和云服务提供商之间三年的实例运行成本,然后使用最终结果来比较云内外的性价比。
Azure上的实例价格与虚拟CPU的数量是线性相关的,至少在当前的产品线中是这样。但是底层芯片的成本不可能那么线性,每个实例在特定工作负载上的绝对性能也不可能线性扩展。所以不同例子中的性价比表现并不是恒定的。
根据微软的说明,Azure Dpsv5系列实例主要用于运行Web服务器、应用服务器、Java和。NET应用程序、开源数据库、游戏和媒体服务器。Dpsv5实例支持每核4 GB内存,不提供本地磁盘;Dpdsv5实例还支持每个内核4 GB内存,同时提供可随内核数量扩展的本地存储容量。Dplsv5的实例支持每核2 GB内存,Dpldsv5也是如此,只是后者提供本地存储容量。所有四种实例类型都可以从2个内核扩展到最多64个内核。虽然Epsv5实例为每个内核配备了8 GB的内存,但它最多只能扩展到32个内核,并且直到Epdsv5实例才会提供本地存储。
不提供本地存储的实例自然更便宜,微软在Azure上提供的各种外部flash选项也适用于这些ARM实例。每个实例提供2到8个网络接口。微软称这些接口可以带来“高达40 Gb/ s”的网络连接,相信这里的指标绝对是用虚拟网卡来衡量的。虚拟NIC的数量可能与每个虚拟NIC的传输带宽成反比。我们猜测每台物理服务器的最大传输通道是100 Gb/ s .但是如果有两个以太网端口,最大传输带宽是200 Gb/ s .具体如何,还要等到预览阶段结束才能确定。
这里还有一个重要的点值得注意。我们和Ampere Computing讨论过这个问题很多次,也听到过AWS的Gravtion系列芯片类似的说法:一组静态时钟速率的真实核会比一组可变时钟速率的虚拟核有更好的性能确定性。

安培计算Altra芯片不提供同时多线程,所以vCPU才是真正的CPU核心。而且Altra芯片每个内核的时钟速率都是锁定的,所以没有可变的时钟速率可以根据特定时间内的内核使用情况进行调整。另一方面,云服务器的常规用例是将其以无数种方式拆分,在支持大量客户的同时保持每个核心以一定的强度运行,这意味着某个核心或某组核心不太可能长时间保持超频。所以安培计算显然听取了超大规模企业和云服务提供商的意见,决定让CPU性能更具确定性。所以Altra芯片会保持时钟速率不变,而不是采用可能导致争用内核的虚拟线程技术。
但以上结论只适用于特定场景。对于高性能计算工作负载,运营商通常会关闭SMT,否则虚拟线程带来的管理开销会降低整体性能。对于占用大量线程的工作负载,没有必要画蛇添足地引入虚拟线程,因为核心缓存之间没有太多争用。根据多年的实践经验,对于HPC工作负载,同样属于SMT的英特尔超线程技术很可能会降低10%到20%的性能。但是采用IBM“积云”Power 10处理器的Power E1080服务器就不一样了。根据IBM的rPerf基准测试,这个全尺寸240核系统的相对性能分数为2250.8,其中每个核对应一个线程。随着虚拟线程的开放——即每个内核2个线程、4个线程,最终8个线程——其性能分别扩展了2倍、2.8倍和3.6倍。
最关键的是,SMT会带来极其复杂的影响,大多数使用x86架构的云实例都会默认启用,以增加vCPU密度。SMT确实可以为实例提供更多的片和SKU单元,这使得在实例级呈现的服务器资源比x86 CPU实体更丰富。但我认为云服务提供商最好是开放和诚实的,允许客户灵活选择SMT或裸机选项。
现在,我们继续说性能。在关于ARM架构Azure实例的官方博文中,Azure计算平台产品负责人Paul Nash表示,“新的虚拟机系列实例包括通用的Dpsv5和内存优化的Epsv5,其性价比比同级别x86虚拟机最高高出50%。”
但这个结论还是太模糊了。毕竟它比较的是“性价比”而不是单一的具体产品。因此,我们调整了上表中微软Azure实例的对比信息。
无论如何,微软在声明中没有提供太多关于性能或性价比的具体信息。
Ampere Computing首席产品官Jeff Wittich解释了该声明,“Ampere Altra VM的性能分别比同代同水平的Intel和AMD实例高39%和47%。*除了更高的性能,Ampere Altra处理器还非常节能,可以帮助用户显著减少他们的整体碳足迹。”
原文中星星的脚注是:“结论来自运行在Ubuntu 20.04 LTS系统上,兼容GCC 10.2.1,-O3,-mcpu = native,Jemalloc的D16ps v5,D16s v5,D16as v5 Azure虚拟机。”
很清楚,但还不够好。SPECrate是CPU领域常用的吞吐量整数测试。对于基准测试结果,所有SPEC模块都应该使用相同的编译器标志进行编译,并且峰值应该包含在结果中。测试人员需要运行多份SPEC测试,看看芯片能承载多少事务吞吐量。通过SPECspeed2017测试,套件中所有基准测试的副本将在一系列不同的条件下运行。测试人员根据OpenMP选择使用多少个线程,最后的结果用时间来衡量,时间代表整个基准测试可以运行和完成的时间。
我们就此事联系了威迪奇,反映目前微软的声明太含糊不清。他向我们提供了由Ampere Computing发布并在Azure博客帖子中使用的实际数据:
下表显示了每个实例的原始SPECrate2017整数性能。这些实例分别使用AMD、Intel和Ampere Computing提供的最新CPU,并参考每个实例的每小时运行成本。为了反映每组数字的相对大小,Wittich将性能除以成本,结果是三者在相同成本下提供的SPEC整数运算的吞吐量。
这里澄清一下,上表中的“Altra D16pdv5”是笔误,其实应该是Altra D16psv5的一个例子。微软,看看你创造的这些例子的名字...
在这里,我们更关注单位性能的成本。毕竟,性能要求往往很难。首先,我们需要知道需要多大的性能,然后计算需要多少成本。为此,我们用整数运算计算了三个安培计算实例三年的测试结果:

因为您计划在云实例中长时间运行负载,所以最好知道成本。这里获得的百分比与Wittich计算的百分比相同。如果我们关闭AMD和Intel芯片上的SMT功能,会有什么区别?还是要看情况。如果对vCPU数量有硬性要求,关闭后可能只能购买两倍大小的AMD和Intel实例。这种核更强大,功能更强大,但同时也失去了与安培计算相比的意义。
我们认为比较合理的方式是回归8真核的AMD和Intel芯片,然后提升10%到20%的性能,再重新计算性价比。因此,AMD“米兰”EPYC 7003实例的SPECrate integer性能将介于50.8和55.4之间,而英特尔“冰湖”至强SP实例的SPECrate integer性能将介于53.7和58.6之间。Altra example依然保持价格优势——比米兰低10.5%,比冰湖低19.8%;与此同时,它仍然拥有更高的表现水平——比米兰高出23%至34.2%,比冰湖高出16.5%至27%。所以Altra芯片的性价比还是很突出的,其对应的单位性能成本比竞争对手低三分之一左右。
Google之前也说过,只要有20%左右的性价比优势空,他们愿意改变CPU架构。
最后一点:微软目前在ARM实例上支持Canonical Ubuntu Linux、Cent OS和Windows 11 Professional和Enterprise Edition,未来还将支持Red Hat Enterprise Linux、SUSE Linux Enterprise Server、Debian、AlmaLinux和Flatcar,但没有提到Windows Server。
我们期待看到AWS Graviton和Azure Altra实例之间的性能数据对比,这是下一个亮点。亚马逊和微软两大巨头终于要正面交锋了。孰优孰劣,我们拭目以待。


