前回、M1 Mac の UTM 上に Windows11 on ARM をインストールした。
今回は、主に WoA の x86/x64 エミュレーションの性能についてチェックする。
検証方法
M1 上の仮想マシン/UTM という制約上, マルチスレッドや GPU の評価はなかなか難しいので、
今回はシングルスレッド性能で評価することにする。
M1 Mac 上の Windows で何か作業するという(私の)目的上はシングルスレッド性能で特に問題ないだろう。
以下の2つの項目について分けて評価する。
- UTM のオーバーヘッド
- WoA の x86/x64 エミュレーションのオーバーヘッド
UTM のオーバーヘッドは、Arm64 の Windows, macOS 双方でネイティブ動作する Geekbench5 を利用する。
WoA x64 エミュレーションについては Windows, macOS 双方が x86_64 動作する Cinebench R20 を用いる。
(UTM, x64エミュレーションの2つのオーバーヘッドでかなりヘビーなので R20 です。。。)
なお、これまでの同じハード構成での測定から
Windows では Linux/macOS と比べて 8~10% 程度性能が出ない傾向があることが分かっているが、
今回一番知りたいのは WoA x64 エミュレーション であり、
上記の効果は計算上最終的にはキャンセルされるので無視することにする。
UTM - Geekbench 5
いきなりだがシングルスレッドの性能は以下(数字は敢えてまるめてある)。
- M1, macOS, Host: 1750
- UTM, WoA, Guest: 1400
いずれも AArch64 のネイティブ動作なので、UTM のオーバーヘッドは約 20%、
x0.8 倍動作と等価な結果になった。
(前述の macOS/Windows 比を考慮すると -12%, x0.88倍程度。)
x64 Emulation - Cinebench R20
いきなりだがシングルスレッドの性能は以下。
- M1, macOS, Rosetta2, Host: 401
- UTM, WoA, x64-emu, Guest: 199
前者が Rosetta2 (x64-emu)、後者が UTM+x64-emu であること、
前項で得た UTM のオーバーヘッド ~20% であることを考慮すると、
WoA の x64-emu の性能は Rosetta2 の 0.62倍 ~ 2/3 程度と見積もることができる。
他のデータから仮に M1 Mac 上で Cinebench R20 がネイティブ動作したとすると、
そのシングルスレッド性能は 600~700 程度である(※別記事予定)。
なので AArch64 上での x64-emulation としては、
- macOS Rosetta2: 60-70%前後
- WoA x64-emu: 40%前後
と見積もることができる。
結果など
前述の M1 Mac なホスト, UTM上の WoA の Geekbench5, Cinebench R20 に加えて、
i9-9900K, i7-8750H, Ryzen7 3700X の結果, および Geekbench4 single-therad の結果も追加した。
(先と同様 Geekbench4, 5 の結果については適当にまるめている。)
Geekbench4 については前述しなかったが、
例えば 9900K と WoA/native の結果が近いので、
Cinebench R20 の WoA/native の結果は 500程度と思うと、
やはり WoA の x64-emulation は 199/500 ~ 40% 程度という結果が同様に得られる。
[6/8 追記]
Geekbench4 について、コマンドプロンプトから x86_64 バイナリを実行することができ、
WoA + x64-emu で、その signle thread スコアが 3450 であった。
AArch64 ネイティブ動作の結果と比較すると x64-emu は 50%ちょっとになり、
処理内容によっては前述した数字よりはもう少し性能がでるのかもしれない。
- | Geekbench 5 Signle thread |
Cinebench R20 Single thread |
Geekbench 4 Signle thread |
macOS (M1, Host) |
1750 (AArch64) |
401 (x86_64, Rosetta2) |
5760 (x86_64, Rosetta2) |
Windows 11 on ARM (UTM, Guest) |
1400 (AArch64) |
199 (x86_64, x64-emu) |
6370 (AArch64) 3450 (x86_64, x64-emu) |
以下参考値 | |||
macOS (i9-9900K) |
1270 | 507 | 6340 |
macOS (i7-8750H) |
1040 | 422 | 5020 |
Windows 10 (Ryzen7 3700X) |
1290 | 509 | 6190 |
戯言
WoA の x64 エミュレーションより、Rosetta2 の方が随分性能が良いので、
Rosetta2 上で x86_64 版の仮想化アプリを動かすことができれば、
その上で Windows (x64) を動かす方が、AArch64 --> x64 を WoA にやらせるより速そうだけど、
仮想化は Kernel extension とかあるのでさすがに難しいのでしょうね。
まぁ AArch64 の Windows アプリが揃ってくれば特に問題はないのでしょうけど。