英特尔与ARM CPU性能对对象存储的影响

英特尔与ARM CPU性能对对象存储的影响


AWS最近发布了有关其新型ARM驱动的Graviton2服务器的一般可用性的公告,这使我们重新审视了这些ARM服务器的性能。在此博客文章中,我们描述了可能令人惊讶的结果。

介绍

MinIO是Apache许可的,开源的S3兼容对象存储服务器,特别注重高性能。结合使用SSD或NVME驱动器,使用普通硬盘可以读取和写入10s / s,甚至可以使用100 Gbit网络读取和写入100s / s

为了实现这些高水平的性能,MinIO利用了Golang紧密集成的汇编语言功能(MinIO的主要开发语言)。

MinIO在计算上有严格要求的两个核心算法是擦除编码(用于数据持久性)和散列(用于位腐烂检测)。不仅针对英特尔平台(AVX2和AVX512),而且针对ARM(NEON)和PowerPC(VSX)的SIMD(单指令多数据)指令,这两种算法都进行了优化。

MinIO依赖的第三个密钥算法是(每个对象)加密。由于Golang的标准库通过优化的代码为各种加密技术提供了强大的支持,因此MinIO只是使用了这些实现。

由于其核心算法的高度优化特性,MinIO是在不同CPU体系结构之间进行比较基准测试的理想目标。但是,为了消除任何系统影响,例如网络速度和/或存储介质吞吐量,我们选择进行如下所述的单独基准测试。

标杆方法

为了比较新的Graviton2 CPU与Intel的堆叠方式,我们在两种不同类型的EC2实例上进行了测试。对于Intel,我们选择了c5.18xlarge实例,而对于ARM / Graviton2,我们使用了新m6g.16large类型。

英特尔Skylake服务器是双插槽,每个CPU 18个内核。这将产生36个vcpus,每个cpu具有超线程,或者两个cpu的总和为72 vcpus。ARM服务器仅使用具有64个内核的单个套接字,而没有超线程。可以在下表中找到更多详细信息:

| Architecture       |   x86_64 | aarch64 |
| CPU(s)             |       72 |      64 |
| Thread(s) per core |        2 |       1 |  
| Core(s) per socket |       18 |      64 | 
| Socket(s)          |        2 |       1 |
| NUMA node(s)       |        2 |       1 | 
| L1d cache          |      32K |     64K |
| L1i cache          |      32K |     64K |
| L2 cache           |    1024K |   1024K |
| L3 cache           |   25344K |  32768K |

由于与ARM芯片相比,英特尔CPU具有8个(超线程)vcpu,因此我们将测试中的最大线程数限制为64个,以创建平等的竞争环境。

您可以在github上MinIO基准存储库中找到代码

擦除编码

下面的组合图在左侧显示了运行8数据和8奇偶校验(Reed Solomon)擦除编码编码步骤的单核性能,其变化范围为1 MB至25 MB。与ARM Graviton2 CPU相比,此处的Intel Skylake具有明显的性能优势。随着数据分片大小的增加,它有所降低,而ARM性能几乎保持不变。

如果我们看一下右侧的多核性能图(所有64核都在两个平台上都100%忙于进行擦除编码),则实际上我们看到的是一个倒影。与Intel相比,汇总的ARM性能非常稳定,并且大约快2倍,而随着数据分片大小的增加,差距实际上在扩大。


reedsolomon-comparison.png


高速公路哈希

将我们的注意力转向MinIO的用于位腐烂检测的哈希算法,我们可以看到类似的模式。对于单核性能,随着块大小的增加,英特尔显然占据了上风,而优势则较小。

关于多核性能,对于所有不同的块大小,ARM的性能再次超过英特尔,超过英特尔的2倍多。


highwayhash-comparison.png


加密

最后,对于加密,模式也相同。在单核上,英特尔显然优越,尽管差距随着块大小的增加而缩小(并且在性能方面,ARM再次几乎完全一致)。

然后,在多核性能方面,ARM再次以两倍以上的优势击败了英特尔。


aes-gcm-comparison.png


线性可扩展性

根据我们收集的数据,我们能够生成另一个有趣的比较表。它显示了(汇总的)Reed Solomon擦除编码性能(8个数据和8个奇偶校验(具有25 MB碎片))与Skylake(和Cascade Lake;以下更多内容)的核心数量的函数关系,从一直到单核到64核。

这更详细地证实了我们上面观察到的结果。多达约20个内核左右,英特尔Skylake CPU击败了Graviton2,但此后(总计)性能仍保持大致平稳(甚至有所下降)。

另一方面,Graviton2具有完整的线性性能可扩展性,直到大约30多个内核为止,然后性能逐渐下降。

由于Skylake不是最新一代的Intel CPU,因此我们决定在Cascade Lake服务器上也运行此测试。为此,AWS提供了c5.24xlarge具有双Cascade Lake CPU实例类型,每个CPU总共提供96 vcpus和36608K的L3缓存。为了更好地进行比较,我们再次没有超出64个并发内核的范围。

可以看出,与Skylake相比,Cascade湖在我们的测试中要快得多,尽管它显示出更多的“锯齿状”图形。其最高性能在20到30个核心范围内(也许不足为奇,因为它具有24个物理核心),并且与Skylake相比,更高核心数量的下降幅度较小。

如果我们也将Cascade湖和Graviton2进行比较,那么在低核心数时它要快得多,但是对于较高的核心数(如果要进行某种“移动平均”),它位于Skylake和Graviton2之间。因此,Cascade湖显然比Skylake具有更多的性能,但不能满足Graviton2的要求。


linear-scalability.png


单插座与双插座

上面报告的(双)英特尔CPU的结果有些不尽人意,这促使我们再进行一次测试,以查看单个套接字服务器上的性能如何。

事实证明,c5.9xlargeandc5.12xlarge实例类型正是我们要寻找的对象,因此我们对这些实例类型重复了上面的线性可伸缩性测试。由于我们现在在单个CPU上运行,因此对于Skylake,Cascade Lake的限制为36个内核和48个内核。为了更容易比较,Graviton2的图形最多重复了64个核(当然也包括单个插槽)。

借助c5a实例类型形式的AWS上的AMD EPYC cpus可用性,我们也对该CPU(48个物理内核;类型7R32)重复了单插槽测试。结果将添加到下面的图表中,并且可以比两个Intel CPU更好地扩展。与Graviton2相比,高端产品的性能似乎要低一些。


single-socket-performance--1-.png


与前面显示的双插槽图相比,生成的图在形状上非常相似,但“平滑”得多。再次,英特尔CPU在较低的内核数下提供了出色的性能,并在物理内核数达到顶峰之前,先对其最大内核数稍作改动。

该图详细说明的是(在很大程度上)双插槽服务器没有其他性能,这表明双插槽服务器在内存访问上可能被严重“竞争”,这在很大程度上损害了性能。MinIO的代码库针对性能进行了高度优化的事实无疑将在很大程度上归因于这种现象。

成本和功耗

关于功耗,估计Graviton2(运行于2.5 GHz)每个核心消耗高达1.8 W功率,总共约115W。有传言称,AMD EPYC的功耗约为280W,而Intel的CPU的功耗约为240W。下表总结了四个CPU的信息:


Screenshot-at-Jun-09-10-55-34.png


基于此,我们可以计算一些有趣的比率。下表显示了每个vcpu和(物理)内核的功率和价格之比。同时显示与vcpus和内核之比的原因是,正如我们在上面看到的,根据使用情况,超线程的“有效性”可能会有很大差异。因此,“每个vpu”或“每个核心”可能更适用于您的特定用例。

请注意,由于Graviton2不使用超线程,因此vcpu和core之间显然没有区别。此外,基于ARM的实例类型在256 GiB时提供了更多的RAM,而在144 GiB或192 GiB时提供了更多的RAM。


Second.png



考虑到ARM的背景,也许就不足为奇了,就功耗而言,Graviton2的效率明显高于Intel CPU和AMD CPU。就成本比较而言,Graviton2和AMD EPYC在“ vcpu”基础上的价格相同,而Intel CPU则要贵一些。

结论

首先让我们说,实际上,英特尔和ARM平台都提供了足够的计算能力,即使是最快的网络速度和NVMe驱动器也能达到饱和。因此,从这个意义上讲,两者都完全能够满足MinIO对象存储服务器上的最高性能要求。

话虽如此,很明显,随着AWS推出Graviton2处理器,ARM体系结构已经缩小了与英特尔的性能差距,甚至在多核性能方面都超过了它。

特别是在高度多线程的环境中,Graviton2 cpu看起来状态很好。随着云工作负载要求服务器应用程序处理(许多)多租户方案,这可能是真正的好处。随着Firecracker(用于轻量级虚拟化和无服务器计算)等技术的普及,这些最新的ARM芯片也成为了一个不错的选择。

最后,考虑到ARM的背景来自移动计算领域,Graviton2的功耗很可能相对较小(尽管尚不清楚确切的细节)。

注意事项

亚马逊不是唯一关注此新ARM平台的人,还有一些其他值得关注的发展:

  • Ampere Computing:具有80个内核的Ampere Altra处理器,结合多达128通道的PCIe Gen4支持,有望成为一个高性能,可扩展且节能的平台。

  • 诸如NUVIA之类的初创公司旨在“提供一类新型处理器,这些处理器可提供推动下一个计算时代所需的性能和能效”(假设背景是基于ARM的?)


上一篇 下一篇