Graviton2性能概览

Graviton2的故事

亚马逊为其云科技去年 12 月宣布了新的 Graviton2 处理器。

亚马逊为其云科技这项计划始于 2015 年,当时亚马逊为其云科技收购了位于 Isarel 的 Annapurna Labs。Annapurna 之前曾致力于以网络为中心的 Arm SoC,主要用于NAS 设备等产品。在亚马逊的领导下,该团队的任务是创建定制的 Arm 服务器级芯片,而新的 Graviton2 被誉为是颠覆这一领域的一次发布。

那么,什么是 Graviton2? 它是一种 64 核单片服务器芯片设计,是由 AWS 使用 64 位 ARM Neoverse N1 内核定制而成。说起ARM处理器,我们所了解的是其在移动计算市场的所向披靡,却一直在桌面计算、服务器等对性能要求更高的市场中表现不佳。在过去数年中,ARM不止一次对高性能处理器领域发起挑战,但多以惨淡的结果收场。而转机就出现在2019年初ARM发表的Neoverse N1。对于这一次的发布,ARM的设计目标就是使其成为一个高性能架构,并重新调校了微架构使其能够以更高的频率运行。在这一点上,ARM与AMD、Intel的路线有所不同,后两家面向高性能平台的处理器产品受制于功耗、面积等因素,频率相比消费级产品要低。但是在N1的设计中却恰好相反,处理器的频率相对更高。不仅如此,Neoverse N1还有一些独特设计,例如缓存的设计。N1中的L1数据缓存和指令缓存部分都是64KB、4-Way设计。其中最重要的改变是整个缓存完全采用了一致性设计,它大幅度简化了虚拟环境的实现并且极大地提高了性能。而且这一设计对ARM在超大规模计算中保持竞争力也是必须的,因为这可以很方便地扩展核心数量。而这一点在Graviton2 处理器上表现的淋漓尽致。与第一代 AWS Graviton 处理器相比,Graviton2 处理器实现了性能和功能飞跃,性能提升 7 倍、计算内核数量增加 4 倍,缓存增加 2 倍,内存速度提升 5 倍。

Graviton2使用 Arm 的新 Neoverse N1 内核(移动 Cortex-A76 内核的微架构衍生产品)以及 Arm 的CMN-600 网状互连。 Graviton2 的 CPU 内核的时钟频率 2.5GHz,在网状互连 32MB 的 L3 缓存。该系统由 8 通道 DDR-3200 内存控制器提供支持,SoC 支持 64 个 PCIe4 通道用于 I/O。它是 N1 平台的相对教科书式设计实现,采用台积电的 7nm 工艺节点制造。

Graviton2 由新的 N1 内核实现。我们已经看到 Cortex-A76在去年的移动 SoC 中表现出色,N1 微架构有望带来更好的性能和服务器级功能,同时保持使 Arm 在移动领域如此成功的能效。N1 内核仍然非常精简和高效,对于 1MB L2 缓存实现(例如在 Graviton2 上),预计约为 1.4mm²,并且在亚马逊新芯片到达的 2.5GHz 频率下,每个内核具有约 1W 的出色能效.

总体来看,Graviton 2 与N1平台差异不大,且采用了TSMC的7nm工艺。当然细微差异还是存在的。例如Graviton 2的CPU内核的时钟频率较N1要低一些。我自己运行一个简单的测试程序得到的Gravitino 2 时钟频率约为2.5GHz,并且L3缓存为32MB而不是公版的64MB。该系统由8通道DDR-3200内存控制器支持,并且SoC支持64个PCIe4通道用于I/O。至于这款芯片的功耗,考虑到ARM宣称的64核2.6GHz CPU的功耗约为105W,以及Ampere最近披露的其80核3GHz N1服务器芯片的功耗为210W。ANANDTECH 对Graviton 2给出的的估算结果是功耗大致位于80瓦至之110瓦之间。

现代的CPU 存在着核心数量越来越多的趋势。随着系统中的核心数量的增多,服务器芯片中的内存性能成为了影响性能至关重要的因素。借助8个DDR4-3200内存控制器, Graviton 2芯片具有先进的内存功能,理论上可提供高达204GB/s的峰值带宽。在ANANDTECH 的测试中, Graviton2的单个CPU内核能够以高达36GB/s的速度传输写入数据。内存加载速度高达18.3GB/s,内存复制达到了令人印象深刻的29.57GB/s,这是测试中AMD系统的两倍以上,几乎是Intel系统的三倍。关于ANANDTECH的这份测试报告,可以访问这个链接来了解 https://www.anandtech.com/print/15578/cloud-clash-amazon-graviton2-arm-against-intel-and-amd

Graviton2性能测试

与一年前发布的第一代 AWS Graviton 处理器相比,Graviton2 处理器不管在性能还是功能上都实现了一次巨大的飞跃。它们都支持 Amazon EC2 M6g、C6g 和 R6g 实例,而且与当前这一代基于 x86 的实例相比,这些实例为各种工作负载(包括应用程序服务器、微服务、高性能计算、电子设计自动化、游戏、开源数据库和内存中的缓存)提供高达 40% 的性价比提升。AWS Graviton2 处理器也为视频编码工作负载提供增强的性能,为压缩工作负载提供硬件加速,并为基于 CPU 的机器学习推理提供支持。它们可以提供高 7 倍的性能、多 4 倍的计算核心、快 5 倍内存和大 2 倍缓存。

在AWS re:Invent 2019大会上,EC2产品团队分享的几组处理器Benchmark的结果就让人兴奋不已。

此外,在今年3月份KeyDB分享了它们针对M6g vs M5实例上的性能对比测试。众所周知,KeyDB是Redis的多线程超集,由于其先进的体系结构,具备了很好的性能表现。

他们的测试结论是这样的 –

“M5实例使用Intel Xeon Platinum 8175处理器,与其他大多数可用实例类型相比,它们通常为我们带来非常好的效果。令我们震惊的是,在较小的使用AWS Graviton2处理器的M6g实例上,与现有的KeyDB M5实例相比,获得了如此巨大的收益。

m6g.large比m5.large快1.65倍,而m6g.xlarge则比m5.xlarge快1.45倍。随着内核数量的增加,两种产品之间的差距开始缩小。但是,我们仍在研究m6g.2xlarge和m6g.4xlarge的性能,因为我们相信可以将性能水平提高到相同的倍数。在此测试中,我们没有针对M6g进行任何调整,因此我们对即将到来的结果感到乐观。”

而在今年的5月15日,在测试工具市场久负盛名的Phoronix 发表了一篇关于使用Graviton2 CPU的新M6g 实例的性能测试的文章。他们使用M6g实例作为基准。然后将这些实例与较早的A1Graviton实例进行比较。在Intel Xeon方面,选择了M5实例,在AMD EPYC方面选择的是M5a实例。该测试报告的全文的链接在这里,https://www.phoronix.com/scan.php?page=article&item=amazon-graviton2-benchmarks&num=1。

这里仅仅撷取其中的部分结果以供各位参考:

Linux Kernel(V5.4)的编译时间,数字越小越好

Memcached mcperf v1.6.0, 数字越大越好

EC2 实例吞吐量的基础概念 – vCPU 与核心

除了实例类型之外(例如M5、C4),其它用于描述实例能力的最重要的指标就是其vCPU的数量。所谓的vCPU是Virtual Central Processing Units 的缩写。vCPU 本质上是指虚拟机上可用的逻辑CPU的内核。但EC2 的逻辑CPU计算方法却并非是基于物理上的CPU内核。准确的说,并发线程的数量即为EC2 vCPU的数量。例如,默认情况下,M5.xlarge 实例类型有两个 CPU 内核,每个内核支持两逻辑个线程,这样该类型实例的vCPU的数量即为4个。EC2实例范围通常从1个vCPU到最多128个,常见的实例的vCPU的数量多为2、4、8、16、32、48、64和96等。

Graviton 2是不带SMT的单路64核平台。所谓的SMT(Simultaneous multithreading) 的含义其实就是我们熟知的超线程技术。简单来说,SMT技术可以在一个实体CPU中提供两个逻辑线程,通过分享处理器的资源来提高性能。在Intel 的CPU中类似的技术被称作Hyper-Threading,或者简称HT。目前,Graviton 2 最大可用vCPU实例大小为就是64。

但是,这也意味着在谈论例如64个vCPU 实例的时候(在EC2中的规格称为16xlarge),对于Graviton2实例我们将获得64个物理核心,而对于AMD或Intel系统,我们将仅获得32个具有SMT的物理核心。这确实有一点“不公平”的味道,但是考虑到规格描述的一致性,这一点差别只好被忽略了。