はじめに
最新のMacBook Air(M2, 2022モデル)において、仮想環境がどの程度のパフォーマンスを発揮するのかを測定することにしました。この検証では、Limaを使用して様々な仮想環境を構築し、Rosetta 2を含む異なる仮想環境を用意し、性能をGeekbench6で測定して比較します。
環境の準備
$ brew install lima
$ softwareupdate --install-rosetta
# 各種仮想環境の用意
$ limactl start --name=qemu-aarch64 --vm-type=qemu --arch=aarch64 --cpus=8
$ limactl start --name=qemu-x86_64 --vm-type=qemu --arch=x86_64 --cpus=8
$ limactl start --name=vz-aarch64 --vm-type=vz --arch=aarch64 --cpus=8
$ limactl start --name=vz-rosetta --vm-type=vz --arch=aarch64 --rosetta --cpus=8
本来はRosetta環境だけでx86バイナリが動作するのですが、x86向けの共有ライブラリが不足しておりGeekbench6を起動することができませんでした。そのため、ここではコンテナとしてApptainer(Singularity)とnerdctl(Docker)を使用して検証します。
結果
CPU | Arch | Guest | VM | Container | Rosetta2 | Single | Multi |
---|---|---|---|---|---|---|---|
M2 | ARM | Mac | - | - | - | 2589 | 9923 |
M2 | ARM | Linux | VZ | - | - | 2485 | 8606 |
M2 | ARM | Linux | QEMU | - | - | 2506 | 8561 |
M2 | x86_64 | Mac | - | - | YES | 1205 | 4408 |
M2 | x86_64 | Linux | VZ | Apptainer | YES | 1092 | 4416 |
M2 | x86_64 | Linux | VZ | nerdctl | YES | 1094 | 4112 |
M2 | x86_64 | Linux | QEMU | - | - | 63 | 187 |
ARMアーキテクチャのネイティブ環境が最も高いスコアを示し、その後にARMのLinux環境が続きます。Rosetta 2を使用した環境では、パフォーマンスが低下していますが、それでも十分な性能を発揮しています。QEMUを用いたx86の実行は40倍ほど遅く、アプリケーションの実行に支障がありそうです。
感想
Rosetta for Linuxを使った環境は、NativeのRosettaと比べて遜色がありません。環境は異なるアーキテクチャ上であっても十分なパフォーマンスを発揮しており、デバッグには十分でしょう。また、Limaを利用することで、仮想環境のセットアップが簡単に行えました。他のMacやベンチマークで測定した結果があればコメントをお願いします。