回答:
VMに割り当てる「仮想」コアは、クライアントOS内のマルチプロセッシングで使用できます。VMに1つのコアのみを割り当てる場合、ゲストOSが複数のコアに負荷を分散する可能性はありません。それでは、いくつかの実用的なシナリオを想定しましょう。
この場合、ゲストOSは1つのコアのみを使用できます。したがって、複数のコアで適切にスケーリングするマルチスレッドアプリケーションを実行する場合、1つのコアでのみ実行されます。したがって、ゲストOS上のすべてのスレッドは1つの物理コアを共有する必要があります。
CPUを完全にロードするこのセットアップでゲストOSを実行すると、ホストOSのCPU負荷が約25%になります(ホストにロードされる4つのコアのうち1つ)。
もちろん、ホストOS内でCPUを消費するタスクを実行し、残りの3つのコアを利用できます。
この場合、ゲスト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を実行すると(CPU集中型プログラムはまったく実行されません)、このVMによって課される負荷は0%に近くなります。10個のVMを並行して実行しても、すべてのVMがアイドル状態の場合、ホストCPUの負荷は0%近くになります。
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パワーの点で常により多くのパワーを提供します。