Appleシリコン搭載Macで UTM を使って Linux を動かす場合、仮想化方式として Apple Virtualization Framework(AVF) を選べることがあります。
UTM の通常構成では QEMU ベースで動かしますが、Appleシリコン環境では Apple が提供する仮想化機能を利用することで、よりオーバーヘッドを抑えた動作が期待できます。
今回は、Ubuntu Server 環境で AVF 使用時 と 通常の QEMU 使用時 を Geekbench 6(ARM対応の preview版)
で比較し、どの程度差が出るのかを見てみます。
この記事で見たいこと
今回の比較で確認したいのは次の点です。
- Apple Virtualization Framework を使うと性能差は出るのか
- シングルコア性能とマルチコア性能のどちらに差が出やすいのか
- Ubuntu を UTM 上で使う場合、AVF を選ぶ価値があるのか
比較条件
比較対象は次の2パターンです。
- AVF を使用した Ubuntu
- 通常の QEMU を使用した Ubuntu
同じ Ubuntu 環境で、割り当てコア数をそろえたうえで Geekbench 6 を実行しています。
Geekbench 6 の結果
AVF 使用時の Ubuntu と、通常の QEMU を使った Ubuntu の結果は次の通りです。
| 項目 | AVF | QEMU |
|---|---|---|
| シングルコア | 2098 | 1914 |
| マルチコア | 6069 | 4775 |
※ 今回は画像ではなく、数値を表で整理しています。
結果から見えること
今回の結果を見る限り、シングルコア性能にはそこまで大きな差は見えませんでした。
一方で、マルチコア性能では AVF 使用時の方が差が出る 結果になりました。
このことから、少なくとも今回の条件では、
- 単発の軽い処理
- 単一スレッド中心の処理
では差を体感しにくい一方で、
- マルチプロセス処理
- マルチスレッド処理
- 並列性のあるビルドや検証
のような用途では、AVF の方が有利に働く可能性がありそうです。
Apple Virtualization Framework(AVF)とは何か
Apple Virtualization Framework(AVF)は、Apple が macOS 向けに提供している仮想化フレームワークです。
Appleシリコン環境では、この仕組みを使うことで、一般的なエミュレーション寄りの構成よりも Apple のハードウェアに近い形で仮想環境を動かしやすい のが特徴です。
ざっくり言えば、UTM 上で Linux を動かす際にも、AVF を使える場面では よりネイティブに近い形で仮想マシンを動作させるための仕組み と考えると分かりやすいです。
起動は早い
AVF を使った場合、ベンチマーク上では特にマルチコア性能に差が見られました。
一方で、体感面では Ubuntu の起動の速さも目立ちました。
Ubuntu は起動時にさまざまなサービスが立ち上がるため、仮想環境では時間がかかることがあります。
ただ、AVF 有効時はかなり短時間で起動する印象がありました。
AVF にどこまでディストリビューションごとの差や相性があるかは、今後も見たいところですが、少なくとも Ubuntu では試す価値があると感じました。
一時的に CLI ベースで Linux 環境を立ち上げたい用途にも向いていそうです。
UTM で Ubuntu を使う場合の印象
今回の比較だけで全てを断定することはできませんが、少なくとも Ubuntu を UTM 上で動かすなら、AVF を試す価値は十分ある と感じました。
特に、
- ビルド
- 並列処理
- ベンチマーク
- 軽いサーバー用途
- 開発用 Linux 環境
のように、マルチコアを活かしやすい用途では恩恵が出やすそうです。
逆に、設定互換性や用途によっては従来の QEMU 構成の方が扱いやすいケースもあると思うので、
とにかく常に AVF 一択 というより、用途に応じて選ぶのがよさそうです。
まとめ
Appleシリコン搭載Macの UTM では、Apple Virtualization Framework(AVF)を使うことで、Ubuntu の性能に差が出る可能性があります。
今回の Geekbench 6 比較では、
- シングルコア性能の差は小さい
- マルチコア性能では AVF の方が有利に見える
という傾向が見えました。
そのため、Ubuntu を UTM 上で使う場合は、特に マルチスレッドや並列処理を使う用途 で AVF を有効にする価値がありそうです。
今後は、Geekbench だけでなく、
- Docker 系の処理
- 実際の開発ビルド
- AI / Python 系の軽い推論や前処理
- サーバー用途での体感差
なども比較すると、さらに実用的な評価ができそうです。