发布于 2026-01-06 0 阅读
0

Tarantool 在 Apple M1 上运行:初步结果

Tarantool 在 Apple M1 上运行:初步结果

图片描述

苹果的 M1 芯片早已不是什么新鲜事。很多人都知道这些芯片速度很快,而且 macOS 应用也需要针对新架构进行适配。Tarantool 开发团队决定接受同样的挑战。

我叫 Alexey Koryakin,是Tarantool的首席技术官,Tarantool 是 VK 生态系统的一部分。我会解释为什么我们需要这项功能,即使 macOS 并不用于生产服务器——我会展示我们是如何解决这个问题的,并分享基准测试结果。

任务与解决方案

Tarantool是一个高性能的内存计算平台,它由数据库服务器和应用服务器组成。许多开发人员在办公电脑上安装 Tarantool 并直接在上面编写代码。在很多情况下,它比单独的服务器更方便。

我们团队的一些开发者也更喜欢在本地安装 Tarantool。其中就包括我们的产品经理,他年初的时候买了一台搭载 M1 芯片的新款 MacBook Air。有一次他问我们的技术团队:“为什么 Tarantool 不能在 M1 芯片上原生运行?我最近买了一台新的 MacBook Air,现在只能通过 Rosetta 启动 Tarantool。如果能原生支持 Apple M1 芯片,对我们的社区来说将会是一个很棒的功能,这样一来,换用新款 Mac 的用户就能高效地开发基于 Tarantool 的系统了。 ”

技术团队经过思考和决定:

  1. Tarantool 和 M1 都以速度快而闻名。我们想知道 Tarantool 在 M1 上运行速度还能提升多少。
  2. 苹果公司正在积极升级其Mac产品线,将其迁移到M1芯片(现在也包括M1 Max)。世界各地的开发者和其他IT专家都在积极转向新平台。现有的x86_64软件通过Rosetta转换环境启动,这限制了软件(包括Tarantool)在新苹果芯片上的全部性能。这种情况必须改变。

这就是为什么我们最终有了这项新任务——支持 M1 芯片。

大约在同一时间,我们也在开发 Linux 的 ARM64 支持。由于 M1 本质上是具有一些特定特性的 ARM64,我们认为实现 M1 支持应该很容易。事实证明,我们的想法基本正确:我们在完成 Linux 的 ARM64 支持的同时,也完成了大部分 M1 支持的工作。主要问题与 ARM 架构 RISC 指令的特殊特性有关。例如,机器代码中不同部分的直接控制权转移只能在 2 MB 的偏移量范围内进行。与 ARM Linux ABI 不同的 Apple ABI 成为了 M1 支持的一个显著特征。我们不得不专门针对新芯片调整 Tarantool 代码,并仔细研究Apple 的公开文档

总而言之,支持 ARM64 和 M1 架构是一项相对简单的工程任务。虽然遇到了一些问题,但我们无需阅读大量的规范文档或熬夜就能解决。整个项目耗时约 4 个月,从 5 月到 8 月。

性能基准

M1 以其卓越的性能而闻名。即使是通过 Rosetta 运行的代码,速度也很快。我们也没有忽略性能问题,决定测试一下 Tarantool 的运行速度能提升多少。

我们对比了在不同硬件配置的普通商用设备上运行的 macOS 系统。我们的目标并非比较不同的操作系统,也不是追求像 Xeon 这样的服务器级 CPU。我们只是想了解,对于换用新款 MacBook 的开发者来说,Tarantool 的运行速度能提升多少,并评估新 Mac 平台的前景。测试中使用了团队成员自有或市售的多台电脑。

● MacBook Pro 16,2 (2020)、
● Mac mini 8,1 (2018)、
● MacBook Air 10,1 (2020)、Apple M1。

我们编写了一个简单的基准测试,它包含以下三个步骤:

  1. 这是 Lua 代码,这意味着涉及到应用服务器。
  2. 这段代码会写入数据库,这意味着数据库的事务引擎会参与其中。
  3. 这段代码在M1上运行正常,不会崩溃 :)

该基准测试在一个系统线程中运行,该线程启动 50 个纤程,每个纤程在每次事务中插入 100 个操作。这种情况会给 CPU 带来更大的负载,而不是内存或存储。而这正是我们测试 CPU 所需要的。如果事务只包含一次或三四次更新,那么负载就会从 CPU 转移到内存或存储。

我们进行了多次测试,插入的记录数量从 1 条到 2000 万条不等。每项测试重复 15 次,然后计算中位数。以下是所有测试的完整结果,供您详细查看。为了便于说明,我们在图表中展示了中位数。

墙钟基准测试,取 15 次迭代的中位数。数值越小,代码运行速度越快。

我们发现,M1芯片上的Tarantool性能比同年采用不同处理器的笔记本电脑的性能高出两倍。

然后,我们测试了 M1 在 Rosetta 翻译器上执行任务的性能。结果表明,其性能与 2018 款 Mac mini 大致相同,但明显高于 2020 款 MacBook Pro。

挂钟基准测试。相同的设备,并通过 Rosetta 启动。

挂钟基准测试。相同的设备,并通过 Rosetta 启动。

我们明白这并不意味着所有应用程序的性能都会翻倍。它们的代码、任务和运行条件各不相同。但无论如何,您可以预期本地安装的 Tarantool 运行速度会更快。

总结...

2.10.0-beta 版本开始,Tarantool 可以原生运行在 M1 芯片上。目前这只是初步支持:某些程序可能会崩溃或运行不稳定。我们已经修复了几乎所有已知的 bug,只剩下一些小问题。例如,JIT 编译器存在一些问题。但这并没有阻止我们的产品经理在他的新 MacBook Air 上安装 Tarantool 并每天运行它。

稍后我们会修复其他已知错误,以及开发者向我们报告的错误。如果您使用的是新款 M1 Mac,请尝试使用最新版本的 Tarantool。如果出现崩溃情况,请提交错误报告,我们会提供帮助。

访问https://try.tarantool.io试用 Tarantool 集群。从官方网站下载 Tarantool,并在Telegram 群组中获取帮助

文章来源:https://dev.to/tarantool/tarantool-running-on-apple-m1-first-results-1omn