web-dev-qa-db-ja.com

VirtualBoxにさらに「コア」を割り当てることには、実際に利点がありますか?

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

42
Chad Harrison

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

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

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

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

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

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

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

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

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

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

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

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

これもソフトウェアの実行に依存します。 VMこれはアイドル状態です(CPUを集中的に使用するプログラムはまったく実行されません)を実行すると、これによって課される負荷はVMが0%に近くなります。すべてのVMがアイドル状態の場合、10個の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コアに負荷を分散できる実際のマルチスレッドアプリケーションは、最適な場合には係数(デュアルコアではx2、クアッドコアでは4x)でブーストできます。 。したがって、マルチスレッドは、CPUパワーの観点から、シングルスレッドとクロックブーストを組み合わせた場合よりも常に多くのパワーを提供します。

63
SkyBeam

VBサイトのマニュアルを掘り下げていませんが、ゲストマシンにコアを割り当てると、ゲストOSが複数のコアを表示できるようになり、アプリケーションがこれらの追加コアの利点は、ホストOSの場合と同じように、速度/電力/効率が追加されます。

0
Xantec