VirtualBox、および場合によっては他のVMソフトウェアを使用すると、ユーザーはVMに公開されるCPUの数を指定できます。私の特定のケースでは、デュアルコアCPUがあり、Windows 7 64ビットが実行されていますネイティブ、およびVMとしてUbuntu 9.04 64ビット。
ヘルプファイルは、これを使用可能な物理コアの数を超えて設定しないことを推奨しています。意味あり。では、1つまたは2つのCPUコアを割り当てるのが最善でしょうか?これはネイティブCPUの負荷に完全に依存していますか?
ゲストOSの動作に完全に依存します。私の個人的な経験では、a VMは単一のプログラム(ビルドサーバー、tracサーバー、SVNなど)を実行しているため、1つ以上に設定する理由はありません。
たとえば、大学がゲストOSを使い捨てとして使用している大学(つまり、TA)のエンドユーザーである場合、1より大きい値に設定する可能性があります。
この回答の情報は正しくありません。厳格な共同スケジューリングの時代にはそれは正しかったが、もはやそうではない。
私は繁栄のために以下の答えを守っていますが、最新のハイパーバイザーにとって正確であるとは限りません。
すべてのコアを仮想マシンのvCPUとして決して割り当てないでください。
VMリクエストanyCPU時間の場合、VMWareはallvCPUを割り当てるか、none vCPUの。
つまり、4コアシステムで4コアすべてを割り当てると、ホストまたはゲストのどちらかのみにプロセッサ時間を割り当てることができ、同時に両方を割り当てることはできません。
これは、絶対に両方の環境でパフォーマンスを台無しにします。
奇数のコア(たとえば3)を自由に割り当ててください。奇妙に感じますが、それは完全に正当な選択肢です。
通常、(n/2)を超えるvCPUを割り当てることはありません(あなたの場合は2)。ただし、通常、コアに割り当てるコアは12から32コアで、大きな影響を与えることなくvCPUを大量に割り当てることができます。
ゲストCPUに公開されているコアの数は、パフォーマンスにはあまり影響しません。ゲストCPUが「認識」するコアの量を調整するだけです。
エミュレーターのセットアップ方法によっては、仮想マシンのパフォーマンスを文字通り半分にするか、何もしないか、ゲストOS /アプリケーションがスレッドスケジューリングを分割する方法にのみ影響を与える可能性があります。
デフォルトのままにしておくことをお勧めします。ホストPCでパフォーマンスの問題が発生した場合は、Windowsタスクマネージャーでプロセスの優先順位を調整するだけです。
Nateが述べたように、VMがほとんどシングルスレッドプロセスの実行に役立つ限り、複数のコアを割り当てる理由はほとんどありません。
ただし、より多くのコア(マルチスレッドプログラム、多くの並列プログラムなど)のメリットを享受できる方法で使用する場合、ストーリーはより複雑になります。以前は、CPUの半分をVM=に使用することをお勧めしました。これが常に最適であるとは限らないことがわかりました。
確認する唯一の方法は、ベンチマークを実行することです。理由はわかりませんが、Core2 Quadシステム(VT-xサポート、ネストされたページングなど)では、実際には4つのコアのうち1つを使用するとパフォーマンスが向上します2つ以上のコアを使用するよりも!これは単にVMの起動時だけでなく、コンパイルのベンチマークでも見られます。
他のハードウェアでは結果が異なります。私は8コアのi7も持っていますが、パフォーマンスはそこにあるコアの数に応じてはるかに良くなります(そこで4をうまく使っています)。
私のヒント:最初に新しいハードウェアをベンチマークします。
これは、物理マシンだけでなく仮想マシンで何を実行するかによって異なります。ホストオペレーティングシステムが他のアクティビティに使用されているときに仮想マシンを使用する必要がある場合は、2つのプロセッサコアをVMに使用して、 VMは全負荷状態です。一方、主にVMで作業している場合は、すべてのプロセッサコアを使用できます。
ただし、ゲストが4つのコアすべてを一度に使用することを期待できない場合は、ホストOSでの作業を継続しながら、それらすべてを安全に使用できます。 VMプロセスがホストオペレーティングシステムで実行されている間は、プロセスの優先度をいつでも調整できます。システムはそれに応じて負荷を分散します。
OSのスケジューラを信頼し、VMを物理コアの数に設定します。ただし、 VM。
はい、私はそれが依存しているとも言います。しかし、私は私が何をしたいかを言います。仕事ではクアッドコアCPUを使用しています。したがって、仮想イメージ(win7)には2つのCPUを割り当てました。これにより、ホストマシンと仮想マシンの両方を同時に使用でき、それぞれに等しいCPUリソースが割り当てられます。