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ビルドを提供しているか確認しましょう。
関連ガイド
What Is a Linux Runner? The Default, Cheapest CI MachineA Linux runner is a CI runner running Linux - the default and cheapest option for most builds. Learn why it i…
What Is a GPU Runner? CI for ML, CUDA, and GraphicsA GPU runner is a CI runner with a graphics processing unit for ML, CUDA, or rendering workloads. Learn when…
What Is a Build Minute? The Unit Your CI Bill Is Made OfA build minute is the billing unit for CI compute - one minute of runner time. Learn how OS multipliers and r…
What Is a Spot Instance Runner? Cheap, Interruptible CIA spot instance runner uses discounted, interruptible cloud capacity to cut CI cost. Learn how it works, the…