ホストMacOSよりUbuntu VMでbashがより速く表示されるのはなぜですか?

ホストMacOSよりUbuntu VMでbashがより速く表示されるのはなぜですか?

今私の前にあるノートパソコンはこんな感じです。

ここに画像の説明を入力してください。

VMWare Fusion 8.5.3およびUbuntu 16.04 64ビットVMがインストールされています。ホストのbashと仮想マシンのbashのパフォーマンスを比較するために、以下の小さなテストを実行しました。

time for i in {1..1000000}; do :; done

MacOSの一般的なbashバージョンは3.2.57なので、公正な比較のために同じバージョンをダウンロードして仮想マシンで実行するように構築しました。

結果 - 仮想マシンはホストの2倍以上高速です。

ホスト(MacOS)

mymac:~ me$ time for i in {1..1000000}; do :; done

real    0m4.608s
user    0m4.536s
sys 0m0.067s
mymac:~ me$

仮想マシン(Ubuntu)

ubuntu@ubuntu:~$ time for i in {1..1000000}; do :; done            

real    0m2.146s
user    0m2.136s
sys 0m0.008s
ubuntu@ubuntu:~$

同じCPUで同じコードを効果的に実行する必要がある場合(仮想化の一形態)、どのように仮想マシンを高速化できますか?


ノート

  • MacOSホストには8つの論理コアと16 GBのRAMがあります。仮想マシンには2つの論理コアと2 GBのRAMしか割り当てられていません。私はこれに違いはないと思います。このテストはメモリバインディングではなく、シングルスレッドです。
  • ホストテストの実行中にVMをシャットダウンしました。
  • Ubuntu bashプロセスでstraceを実行しています。予想どおり、テストの開始と終了にはいくつかのシステムコールがあり、forほとんどのテスト(ループ)中にシステムコールはありません。したがって、このテストは主にCPUにバインドする必要があり、MacOSとUbuntuの間のI / O実装の違いによって影響を受けるべきではありません。
  • 複数のテストを実行しましたが、結果はかなり一貫しているようです。
  • 他に顕著なシステム負荷はありません。

関連情報