VirtualBoxにより多くの「コア」を割り当てることで、本当の利点はありますか?


40

VirtualBoxを備えた2.8クアッドコアi7があります。ゲストマシンに最大4つのコアを割り当てるオプションがありますが、2つしか実行していません。より多くのコアをゲストに割り当てることの利点/欠点は何ですか?ところで、2つのゲストOS(Win 7とUbuntu)を実行している間、ウルトラ設定でStarCraft 2をプレイすることができます。BFBC2(私のストレステスター)も同じです。i7はコア間の不均一な負荷にどのように反応しますか?

回答:


62

VMに割り当てる「仮想」コアは、クライアントOS内のマルチプロセッシングで使用できます。VMに1つのコアのみを割り当てる場合、ゲストOSが複数のコアに負荷を分散する可能性はありません。それでは、いくつかの実用的なシナリオを想定しましょう。

4つのCPUを持つホスト、1つのCPUが割り当てられたゲスト

  • 4つの物理コアを実行しているホストマシン
  • 1コアが割り当てられたVM内のクライアントOS

この場合、ゲストOSは1つのコアのみを使用できます。したがって、複数のコアで適切にスケーリングするマルチスレッドアプリケーションを実行する場合、1つのコアでのみ実行されます。したがって、ゲストOS上のすべてのスレッドは1つの物理コアを共有する必要があります。

CPUを完全にロードするこのセットアップでゲストOSを実行すると、ホストOSのCPU負荷が約25%になります(ホストにロードされる4つのコアのうち1つ)。

もちろん、ホストOS内でCPUを消費するタスクを実行し、残りの3つのコアを利用できます。

4つのCPUを持つホスト、4つのCPUが割り当てられたゲスト

  • 4つの物理コアを実行しているホストマシン
  • 4コアを割り当てられたVM内のクライアントOS

この場合、ゲストVM内で、4つの仮想CPUすべてを最大限に活用できる、適切にスケーリングされたマルチスレッドアプリケーションを実行できます。VirtualBoxは4つの物理コアを使用してVM内でスケジュールされたタスクを処理するため、ホストのCPU負荷は最大100%に達する可能性があります。

では、どの設定を選択する必要がありますか?

この質問に対する答えは、あなたが何をしたいかによってかなり異なります。場合によっては、すべてのコアをVMに割り当てるか、各CPUに全量が割り当てられた複数のVMを実行することも有用です。このような場合、VMはホストの処理能力全体を最大限に活用できます。実際に物理的に存在するよりも多くのCPUがVMに割り当てられている場合、VMは異なるVMの負荷の影響を受けます。これを防ぐには、特定のVM専用のコアを使用します。たとえば、4つのコアノードでそれぞれ2つのCPUが割り当てられた2つのVMを実行すると、各VMが2つの専用CPUを取得するのに役立ちます(処理能力の一部を担うホストOSによる負荷がないと仮定)。

すべてのコアをVMに割り当てると、ホストに悪影響がありますか?

繰り返しますが、これは実行されるソフトウェアに依存します。アイドル状態のVMを実行すると(CPU集中型プログラムはまったく実行されません)、このVMによって課される負荷は0%に近くなります。10個のVMを並行して実行しても、すべてのVMがアイドル状態の場合、ホストCPUの負荷は0%近くになります。

不均一な負荷でCPUは​​どのように動作しますか?

CPU負荷分散は、スケジューラと呼ばれるOS固有の組み込みコンポーネントに大きく依存しています。Windows XPの場合、スケジューラはすべてのCPUコアをラウンドロビンロードしようとしました。そのため、クアッドコアCPUで全負荷でシングルスレッドタスクを実行すると、各コアで最大25%の負荷が発生します。
残念ながら、これは最新のCPU電源管理にとって悪いことが証明されています。最新のシステムでは、2つのコアが関与する前に1つのコアが最大100%読み込まれるとさらに有利です。その理由は、1つのコアを完全に使用するのに十分な負荷がない限り、他のコアをディープスリープモードのままにして、エネルギーを節約し、熱放散を減らすことができるからです。

Intel Core i-Seriesや新しいAMD(Bulldozer)などの一部のCPUでは、コアのサブセットのみが使用されている場合は未使用のコアがオフになるため、これはさらに興味深いものです。これにより、CPUの消費電力が削減されます。両方(IntelおよびAMD)は、熱および電力消費の予算を使用し始め、アクティブなコアをオーバークロックします。そのため、これにより、シングルスレッドアプリケーション(複数のコアに分散してタスクを並行して処理することはできません)を強化できます。ただし、すべてのコアがアクティブな場合、「すべてのコアがアクティブ」な状況はCPUが設計された状況であるため、これらの「ブースト」テクノロジーのほとんどは処理能力にほとんど影響しません。

したがって、答えは、コアi7がシングルコアの不均一な負荷を非常にうまく処理し、シングルスレッドアプリケーションのパフォーマンスを向上させることさえあるということです。ただし、このブーストは数パーセントの範囲内ですが、実際には、複数のCPUコアに負荷を分散できるマルチスレッドアプリケーションは、最適な場合には要因(デュアルコアで2倍、クアッドコアで4倍...)によってブーストできます。そのため、マルチスレッドは、シングルスレッドとクロックブーストを組み合わせた場合よりも、組み合わせたCPUパワーの点で常により多くのパワーを提供します。


1
うわー、それは本当にそれがvmsにどのように影響するかだけでなく、マルチコアの動作を理解するのに本当に役立ちます。
ダン・アレン

2
2 GHzのi7デュアルコアを搭載したMacbook Airで、Ubuntu 12.04 LTSクライアントの動作が非常に遅いという問題がありました。クライアントの設定を2 cpusに上げたところ、今では燃え上がっています。最適でない設定の警告メッセージは無視します。
マイクグラフ

VirtualBoxはCoreを使用せず、Processorsを使用するため、非常に複雑です。CoresProcessorを呼び出さない限り、クアッドコアまたはオクタコアであっても、誰でも1個のプロセッサを使用できます。
–SSポーク

0

VBサイトのマニュアルを詳しく調べたことはありませんが、ゲストマシンにコアを割り当てると、ゲストOSが複数のコアを表示できるようになり、追加のコアを活用できるアプリケーションが追加の速度/ホストOSの場合と同じ電力/効率。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.