Skip to content
Latchkey

ARM runnerとは?ARM64上のより安価で効率的なCI

ARM runnerはx86ではなくARM64(aarch64)プロセッサ上に構築されたCI runnerで、多くの場合、作業単位あたりでより安価かつ電力効率が高くなります。

ARMはサーバーやラップトップで主流になり、CIもそれに続いています。ARM runnerを使えばARMネイティブなソフトウェアを直接ビルドしテストでき、しばしばx86の同等品より優れた価格性能を発揮します。

なぜCIでARMなのか

  • 遅いエミュレーションではなくARM64のartifactをネイティブにビルドする。
  • デプロイ先と同じアーキテクチャ(ARMクラウド、Apple Silicon)でテストする。
  • 効率的なARMハードウェアのおかげでjobあたりのコストが低い。

ネイティブ vs エミュレートビルド

x86上でエミュレーション(QEMU)を使ってARMイメージをビルドするのは遅く不安定です。ネイティブなARM runnerはARMのartifactをフルスピードでビルドし、これはマルチアーキテクチャのコンテナイメージや大規模なコンパイルで大きく効いてきます。

価格性能の観点

ARMインスタンスは同等のスループットに対してx86よりコストが低いことが多いため、適したjobをARM runnerへ移すことでビルドを遅くせずにCIコストを削減できます。落とし穴は、toolchainと依存関係にARMビルドがあることを確認する点です。

互換性の注意点

一部のツールやプリビルドバイナリはx86専用です。jobを移行する前に依存関係がARM64ビルドを提供しているか確認し、まだARM対応していないものに備えてx86 runnerを1つ残しておきましょう。

ARMとマルチアーキテクチャイメージ

マルチアーキテクチャのコンテナイメージを公開している場合、ネイティブなARM runnerを使えばx86上でエミュレートする代わりにARMバリアントを直接ビルドできます。これは遅く不安定なQEMUビルドを高速なネイティブビルドに変え、チームがARM runnerを追加する最大の理由になることがよくあります。

重要なポイント

  • ARM runnerはx86ではなくARM64(aarch64)上で動作します。
  • 遅いエミュレーションを避け、ARMのartifactをネイティブにビルドします。
  • ARMはjobあたりでしばしば優れた価格性能を発揮します。
  • 移行前に依存関係がARM64ビルドを提供しているか確認しましょう。

関連ガイド