VMに公開されるCPUコアの数に最適な設定はありますか?


23

VirtualBox、および場合によっては他のVMソフトウェアにより、ユーザーはVMに公開されるCPUの数を指定できます。私の場合、Windows 7 64ビットがネイティブで実行され、Ubuntu 9.04 64ビットがVMであるデュアルコアCPUがあります。

ヘルプファイルでは、使用可能な物理コアの数を超えてこれを設定しないことを推奨しています。意味あり。それで、1つまたは2つのCPUコアを割り当てるのが最善ですか?これはネイティブのCPU負荷に完全に依存していますか?

回答:


6

ゲストOSの動作に完全に依存します。私の個人的な経験では、VMは単一のプログラム(ビルドサーバー、tracサーバー、SVNなど)を実行しているため、1つ以上に設定する理由はありません。

たとえば、ゲストOSを使い捨て(つまりTA)として使用している大学のエンドユーザーである場合、1を超える値に設定する可能性があります。


つまり、一時的なシステムの場合、CPUコアクォータを最大化することもできます。しかし、「通常の」または一般的な使用では、1つのコアに設定します(ホストOSのパフォーマンスにあまり干渉しないように)。
sblair

18

この答えの情報はもう正しくありません。厳密な共同スケジューリングの時代には正しいことでしたが、もはやそうではありません。

私は繁栄のために以下の回答を続けていますが、現代のハイパーバイザーにとって正確であることに頼らないでください。


あなたは必要があります決して仮想マシンに仮想CPUとして、すべてのコアを割り当てません。

VMがCPU時間を要求する場合、VMWare すべてのvCPU を割り当てるか、vCPU を割り当てないでください。

つまり、4コアシステムでは、4つのコアすべてを割り当てると、ホストまたはゲストのいずれか一方にのみプロセッサ時間を割り当てることができ、両方を同時に割り当てることはできません。

これにより、両方の環境でパフォーマンスが完全に損なわれます。

奇数のコア(たとえば、3)を自由に割り当ててください。奇妙に感じますが、それは完全に正当なオプションです。

通常、(n / 2)vCPU(あなたの場合は2)を超える割り当ては行いませんが、通常、大きな影響なしに膨大な数のvCPUを割り当てることができる12から32コアのサーバーにコアを割り当てます。


これは、これまでのところ、ある程度の権限で書かれた唯一の答えです。あなたの経験を共有してくれてありがとう。
G-Wiz

5
-1:私の経験と一致していません。VMは、ホスト上の他のプロセスと同じ方法でCPU時間をスケジュールできるプロセスです。ホスト上のVMプロセスの優先順位を調整でき、システムは負荷を適切に分散します。
-bwDraco

2
続き)16コアのサーバーがあるとしましょう。構成例は、それぞれ8つのコア用に構成された4つのVMです。これは仮想コアが多すぎるように思えるかもしれませんが、個々のVMがより重いワークロードでより適切にスケーリングできるようにします。組み合わせた使用率が物理コアの数を超えた場合、ホストはそれに応じて負荷を分散します。ホストハードウェアを最大限に活用することで、仮想化によってスループットを向上させ、コストを削減することができます。
-bwDraco

@DragonLord-この回答は、ほぼ4年前の質問で2年以上前のものであり、古い情報に基づいている可能性があります。ESXの「厳密な協調スケジューリング」について言及していますが、その情報がどれほど古いかは思い出せません。また、過去数年間でCPUスケジューリングがどのように変化したかについても最新の状態に保っていません。
マークヘンダーソン

1
ここで、Ubuntu 14.04と16.04の両方で、CPUの数を奇数に設定すると、ブートの問題とクラッシュが発生することに注意してください。問題を回避するために偶数でそれを維持することにしたので、私は理由を理解することができませんでした。
ドリアン

3

ゲストCPUに公開されるコアの数は、パフォーマンスにそれほど影響しません。ゲストCPUが「見る」コアの量を調整するだけです。

エミュレータの設定方法によっては、文字通り仮想マシンのパフォーマンスの半分になるか、何もしないか、ゲストOS /アプリケーションがスレッドスケジューリングを分割する方法にのみ影響を与える可能性があります。

デフォルトのままにしておくことをお勧めします。ホストPCでパフォーマンスの問題が発生した場合は、Windowsタスクマネージャーでプロセスの優先順位を調整するだけです。


3

Nateが述べたように、VMがほとんどシングルスレッドプロセスの実行を提供する限り、複数のコアを割り当てる理由はほとんどありません。

ただし、より多くのコア(マルチスレッドプログラム、多くの並列プログラム、..)の恩恵を受けることができる方法で使用する場合、ストーリーはより複雑になります。以前は、VMにCPUの半分を使用することをお勧めします。これは常に最適とは限りません。

確認する唯一の方法は、ベンチマークを実行することです。理由はわかりませんが、Core2 Quadシステム(VT-xサポート、ネストされたページング、..)では、実際に4つのコアのうち1つを使用するとパフォーマンスが向上します。 2つ以上のコアを使用するよりも!これは、VMの起動時だけでなく、コンパイルベンチマークでも見られます。

他のハードウェアでは結果が異なります。また、8コアのi7があり、そこにあるコアの数に応じてパフォーマンスが大幅に向上するようです(そこに4を使用すると幸いです)。

私のヒント:最初に新しいハードウェアのベンチマークを行います。


1

OSのスケジューラを信頼し、VMでビジー状態のときに常にホストに潜在的にアイドル状態のコアを持たせたいことがわかっている場合を除き、VMを物理コアの数に設定します。


1

これは、物理マシンだけでなく仮想マシンで何をしたいかによって異なります。ホストオペレーティングシステムが他のアクティビティに使用されている間に仮想マシンを使用する必要がある場合は、VMに2つのプロセッサコアを使用して、VMが全負荷状態の場合にホストに2つ残るようにすることをお勧めします。一方、主にVMで作業している場合は、すべてのプロセッサコアを使用できます。

ただし、ゲストが4つのコアすべてを一度に使用することが予想される場合を除き、ホストOSでの作業を続けながら、それらすべてを安全に使用できます。ホストオペレーティングシステムで実行中のVMプロセスの優先度はいつでも調整でき、システムはそれに応じて負荷を分散します。


これは、VirtualBoxでの私の経験に基づいています。私はVMware製品に詳しくないので、間違っているかもしれません。もしそうなら、私はこの答えを削除します。
bwDraco

0

はい、私もそれが依存すると言うでしょう。しかし、私がやりたいことを言います。職場では、クアッドコアCPUがあります。そのため、仮想イメージ(win7)に2つのCPUを割り当てました。そうすれば、ホストマシンと仮想マシンの両方を同時に使用でき、それぞれのCPUリソースが等しくなります。

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