LoginSignup
0
0

More than 1 year has passed since last update.

M1 MAC上でのAMD64イメージとAARCH64イメージの速度比較

Last updated at Posted at 2021-11-27

はじめに

M1MAC上でDockerを実行するとQEMM上でコードを実行することで、イメージによってかってにamd64イメージと、aarch64イメージが選択されます。
M1上で、通常のMACOSのプログラムを実行している気分でいるとamd64イメージでも2,3割程度のオーバーヘッドで動く気がしますが、QEMM上でKernelごと動かしている都合上もっとオーバーヘッドが想像以上に大きかったので、取りあえず測ってみました。

UNIXベンチの結果

M1MAXでDockerのResource設定でCPU8 メモリ20Gのときの結果です。
裏側でも微妙にブラウザとかつかってたので、あまり厳密な結果じゃないですが、AMD64イメージをM1MACのDockerで実行するとても遅いと言うことで。。
DOCKER上でAARCH64イメージを実行しているとき
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 55439770.2 4750.6
Double-Precision Whetstone 55.0 5969.6 1085.4
Execl Throughput 43.0 6479.6 1506.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 614480.0 1551.7
File Copy 256 bufsize 500 maxblocks 1655.0 157878.0 953.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 1866978.0 3218.9
Pipe Throughput 12440.0 944731.2 759.4
Pipe-based Context Switching 4000.0 17741.4 44.4
Process Creation 126.0 2757.5 218.9
Shell Scripts (1 concurrent) 42.4 8041.5 1896.6
Shell Scripts (8 concurrent) 6.0 3634.8 6057.9
System Call Overhead 15000.0 641956.6 428.0
========
System Benchmarks Index Score 1024.8

DOCKER上でARM64イメージを実行しているとき
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 3783450.9 324.2
Double-Precision Whetstone 55.0 337.5 61.4
Execl Throughput 43.0 81.0 18.8
File Copy 1024 bufsize 2000 maxblocks 3960.0 464183.0 1172.2
File Copy 256 bufsize 500 maxblocks 1655.0 120919.0 730.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 1465216.0 2526.2
Pipe Throughput 12440.0 694340.4 558.2
Pipe-based Context Switching 4000.0 16642.8 41.6
Process Creation 126.0 543.9 43.2
Shell Scripts (1 concurrent) 42.4 329.2 77.6
Shell Scripts (8 concurrent) 6.0 139.3 232.1
System Call Overhead 15000.0 434722.2 289.8
========
System Benchmarks Index Score 200.6

一応、参考までにExperimental Features にある Use the new virtualization frameworkにチェックをいれたときのAMD64の結果も載せときます。

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 3788495.6 324.6
Double-Precision Whetstone 55.0 339.6 61.7
Execl Throughput 43.0 82.7 19.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 487335.0 1230.6
File Copy 256 bufsize 500 maxblocks 1655.0 125785.0 760.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 1659651.0 2861.5
Pipe Throughput 12440.0 736066.3 591.7
Pipe-based Context Switching 4000.0 24887.4 62.2
Process Creation 126.0 739.6 58.7
Shell Scripts (1 concurrent) 42.4 384.1 90.6
Shell Scripts (8 concurrent) 6.0 171.0 285.0
System Call Overhead 15000.0 457701.0 305.1
========
System Benchmarks Index Score 225.8

M1 上でのDocker

個人的には一般的な用途というよりは、Dockerをマシンラーニングの環境構築を楽にするためにつかっているので、いろいろM1上のDockerだと制限が多いです。
AMD64の実行は、動くだけでハッピーなのですがそれ以上にUSBパススルーができないからはじまり、カメラとかAudioデバイスをDockerコンテナ上で扱うことが出来ないのがパフォーマンス以上に痛いです。
同様に、GPUにしてもニューラルエンジンにしてもせっかくあってもDoocker上からは使う方法がみつかりません。
速くDocker上からUSBへのダイレクトアクセスと、GPU,ニューラルエンジンが使えるようになって欲しい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0