返回全部

ARM架构是云计算的未来吗?

中央处理器 (CPU) 可以与人脑进行比较,因为其独特的架构允许它们以不同的方式求解数学方程。现在,x86是云计算中使用的主要架构。然而,值得注意的是,这种架构并非对所有场景都有效,其专有性质正在导致行业转向 Arm。

Arm是一种 CPU 架构,为大多数平板电脑和智能手机以及世界上最快的超级计算机 Fugaku 提供动力。Arm 的低功耗和高计算性能使其成为云计算中 x86 当之无愧的对手。

在本文中,我们将讨论一些流行的 Arm 项目,x86 和 Arm 架构之间的主要区别,并探讨我们如何通过为开发人员提供基于 ARM 的容器环境来为他们的未来做好准备。

1、ARM 与 x86

越来越多的公司转向 Arm 以降低成本和能源消耗。虽然 x86 仍然是专有的CPU 架构,但 Arm向其他公司提供许可证。这允许这些公司使用 Arm 的专利技术设计定制处理器。

亚马逊定制设计的 Graviton 处理器是 Arm 在云计算中的一个很好的例子。通过使用这些处理器,AWS A1 实例可提供与 x86 EC2 实例相当的性能,同时节省 40%的成本。

Arm 和 x86 之间的主要区别可以追溯到这些 CPU 执行指令的方式。例如,普通的 x86 台式机 CPU 使用复杂指令集计算机 (CISC) 架构的实现,允许单个指令在每个时钟周期内执行多步操作。

另一方面,Arm 使用精简指令集计算机 (RISC) 架构的实现,允许它使用有限的、高度优化的指令集在每个时钟周期执行一条指令。

2、Arm容器

大多数人可能会想,“许多容器运行时环境,例如 Docker,可以使用buildx(或类似的)命令为各种 CPU 架构创建容器,那么我们为什么还要进行这种对话呢?”

尽管docker build --platform可以创建特定于平台的映像,但不能运行从配方 (Dockerfile) 执行二进制文件的命令。

在以下示例中,大家可以看到由于主机和二进制架构类型之间的差异而导致的构建失败。

容器与主机共享 CPU 和内核,这意味着底层硬件决定了可以在容器环境中使用的指令集。这可以在之前的 Docker 构建输出中以红色突出显示。

我们使用的可执行程序被编译为二进制文件。编译是软件开发过程中的一个神奇步骤,其中编译器(软件)获取一段源代码(可以说是人类可读的)并将其转换为特定于 CPU 的二进制机器代码(即 1 和 0)。简单来说:程序是由其他程序制作的。有一些基于解释器的语言可以直接从源代码执行指令,但我们不要深陷其中。

3、使用Linux

Linux 内核包含许多功能,是一个模块化软件,可以根据使用要求进行广泛定制。其中一项功能 binfmt_misc 允许用户使用解释器在系统中运行几乎任何二进制文件,而不管二进制编译的体系结构如何。Linux 可以配置为使用binfmt_misc并匹配二进制文件的开始字节,以确定哪个解释器适合执行它。

在我们的例子中,我们需要使用能够理解 ARM64 CPU 指令的解释器来运行所有内容。

ProjectMultiarch使用相同的概念将管理程序 QEMU 注册为解释器,允许用户模拟容器的各种 CPU 架构。

4、仿真成本

仿真是一种无需实际硬件即可开始测试和开发解决方案的好方法。然而,值得注意的是,仿真在原生平台之上增加了一层开销,使其不适合生产环境。

有限的功能和边缘情况,例如由于不是原生而导致的性能输出较低,可能是仿真成本的一个例子。

5、用例

近年来,编程语言已经发展到支持多体系架构,并且在大多数情况下,支持像 Arm 这样的架构几乎不需要付出任何努力。

Web 层项目是 Arm 集成的一个很好的起点。例如,Apache和NGINX等项目是非常流行的 Web 服务器,它们已经支持 Arm 架构。值得注意的是,对 Arm 的支持并不是唯一的好处,因为在 ARM 环境中将 NGINX 作为缓存服务器或反向代理运行将获得比 x86 更好的性能。

内存数据库是 Arm 架构可以提供改进的另一个领域。使用 RISC 架构,与 x86 环境相比,Redis 等应用程序可以实现引人注目的性能。

以下基准测试比较了Redis 在x86和ARM64 CPU架构下的设置和获取操作。

6、结论

Arm 架构似乎是 x86 系统的绝佳替代品,并且由于其效率,公司正在为其未来的云计算进行投资。转换应用程序和集群可能会在不影响性能的情况下节省成本。

其它

技术支持

技术支持

扫码加入技术支持微信群

扫码加入技术支持微信群


公众号

官方公众号

扫码关注获取最新动态