MinIO 性能如此之高的原因之一是,我们做了其他人不会或不能做的细粒度工作。从 SIMD 加速到 AVX-512 优化,我们已经完成了艰巨的任务。ARM CPU 架构的最新发展,特别是可扩展矢量扩展 (SVE),为我们提供了比前几代产品显著提高性能和效率的机会,并使 ARM 成为 AI 数据基础设施生态系统中的一流公民。
这篇博文将概述什么是 ARM SVE,以及为什么它对 MinIO 服务器很重要,以及我们如何启用它。
ARM 的粉丝
长期以来,我们一直是 ARM CPU 架构的粉丝,因此我们从 MinIO 的早期就支持 ARM。由于当时没有配备 ARM CPU 的云实例,因此最初的开发实际上是在 Pine64 板上完成的。这项工作的很大一部分包括添加 128 位 NEON 向量指令,以加速 MinIO 的一些核心算法,最引人注目的是纠删码部分、比特腐烂检测(Highway Hash)和各种哈希技术,如 Blake2b 和 SHA256。
我们发表了一些关于这些主题的博客文章,例如在 ARM 上的 Golang 中将 SHA256 加速 100 倍。此外,我们在 2020 年对 Intel (amd64) 和 ARM (arm64) 平台进行了一些基准测试,请参阅英特尔与 ARM CPU 性能对对象存储的影响。我们鼓励您接受这项工作,因为它在该领域具有开创性意义。
云开发:从 AWS 到 GCP 和 Azure
随着 2019 年 Graviton 1 的推出,AWS 成为第一家开始基于 ARM 架构设计自己的 CPU 的云供应商。从那时起,又推出了三个版本,其中 Graviton 4 是最新的化身,提供 96 核。
最近,谷歌和 Microsoft 都紧随其后,发布了谷歌的 Axion 处理器以及 AzureCobalt 100 处理器。对于这两家供应商来说,实现这一目标的主要驱动力是提供更好的性能和更高的能源效率。
最后但并非最不重要的一点是,NVIDIA 正在与 ARM 密切合作,首先是 GH200 Grace Hopper,现在是 GB200 Grace Blackwell 超级芯片。这两款超级芯片都结合了双 GPU 和支持 SVE2 的 72 核 ARM CPU。
NVIDIA正在投资的另一个领域是“智能”网络控制器或DPU(数据处理单元)方面,鉴于计算和存储的分解性质,这是一个关键组件。最新一代的BlueField3 NIC提供集成的16核ARM CPU作为网络控制器卡本身的一部分。通过将 NVMe 驱动器直接连接到网卡并完全绕过任何(主服务器)CPU,这有可能简化服务器设计。
SVE简介
虽然 NEON 已经存在了 10 多年,并且“仅”支持 128 位宽矢量指令(仅比常规 64 位指令宽 2 倍),但第一个 SVE 和最近的 SVE2 提供了更广泛的功能。最有趣的是(与 Intel/amd64 SIMD 架构相比,SVE/SVE2 是一种与长度无关的 SIMD 架构。这意味着相同的机器代码指令在具有不同大小的向量单元的硬件实现上运行。例如,AWS 上的 Graviton 3 实现是 256 位宽,而富士通 A64FX 处理器是 512 位宽的实现。除此之外,SVE还通过预测执行支持通道掩码,从而可以更有效地利用矢量单元。对分散和收集指令的广泛支持使得以灵活的方式有效地访问内存成为可能。与NEON相比,SVE和现在的SVE2具有更宽的指令集和类型系统,使其可以用于更广泛的应用。另请注意,SVE 不是 NEON 的超集,而是全新的 ISA(指令集架构)。
对 MinIO 的 ARM SVE 支持
我们很高兴地宣布,我们通过添加对两种关键算法的 SVE 支持,即纠缠编码和位腐蚀检测,扩展了对 ARM CPU 架构的支持,如下所述。
里德·所罗门
对于 releasev1.12.2,我们为 MinIO 对象存储服务器使用的纠缠编码库提供了广泛的 ARM SVE 支持。通过“模仿”AVX2 实现,我们现在能够利用 ARM SVE 库中的所有优化工作。一般来说,与以前的实现相比,新的 SVE 实现速度快了大约 2 倍,如下图所示:
可以看出,在大约只使用四分之一的可用内核(大约 16 个)时,内存带宽已经消耗了一半(大约占用了之前内核数量的一半)。性能继续扩展,并开始使用总共 64 个内核中的 32 个左右。
高速公路哈希
MinIO 使用 Highway Hash 算法进行位腐检测,该算法在 GET(读取)和 PUT(写入)操作期间都非常频繁地运行。在这里,我们也添加了对核心哈希更新函数的 SVE 支持,结果如下:
从图表中可以明显看出,随着内核数量的增加,性能完全线性扩展,并开始达到内存带宽限制,大约在 50 到 52 个内核之间,对于较大的块大小。请注意,有一个稍微快一点的 SVE2 算法,我们还没有能够在硬件中测试(只能通过 armie 指令仿真器)。因此,这应该将性能再提高 10% 左右。
更多内容即将推出
我们正在研究一些进一步的优化,例如最近登陆 Linux 内核的一些优化,所以请继续关注。
结论
ARM SVE 标志着一项重大的技术改进,它使对象存储和 AI 数据基础设施的实际性能提升成为可能。随着越来越多的基于 ARM SVE 的解决方案进入市场,我们很高兴看到这项技术将如何继续发展和改进。