Hyper-VでホストされているVMの「論理プロセッサ数」を増やすと、そのVMのパフォーマンスが向上するのはなぜですか?


9

私の理解では、仮想マシン(Relative Weight等しいと仮定)はプロセッサの均等なシェアを取得します。

VMにある程度の処理時間が与えられた場合、Hyper-Vホスト上のプロセッサのアレイから処理が行われるため、VMが単一のコアを使用しているか、複数のコアを使用しているかは関係ありません。ただし、Number of logical processors特定のVMのHyper-Vで設定を1から4に設定すると、パフォーマンスが大幅に向上します。

私の現在のセットアップの仕様はおおよそです:

  • Hyper-Vホストには、32 GBのRAM、24の論理プロセッサ(単語が間違っていますか?)、数TBのスペースがあります。

  • VMには6 GBのRAM、1つまたは4つのコア、数百GBのスペースが割り当てられ、2008 R2が実行されます。

過去のHyper-Vセットアップでも同様のことが起こりました。

回答:


20

私が知っているすべてのハイパーバイザーの仮想マシンは、追加の同時実行スレッドをスケジュールするために追加の仮想CPUを使用できます。

それは、物理マシンと仮想マシンの間の抽象化のレイヤーであり、説明したとおりに機能しないのです。VMは、物理マシンのコア数を認識しません。VMは、物理マシン上の物理CPU(またはコア)を「認識」しません。ハイパーバイザーはVMに仮想CPUの数を提供し、ゲストOSはそれらの仮想CPUを使用して追加の同時スレッドをスケジュールします...ハイパーバイザーが仮想マシンに渡す仮想CPUの総数は、物理CPUの数を超えることもあります。マシンのコア。

別の言い方をすると、仮想マシンは、単一のvCPUが割り当てられると、1つのCPUしか持たないかのようにスレッドをスケジュールします。基盤となる物理マシンにコアがいくつあるかは関係ありません。(ただし、物理マシンは、1つのスレッドクォンタムまたはタイムスライスに対して1つの物理コア上の1つのVMスレッドをスケジュールし、次に実行するようにスケジュールされているときに、別の物理コアで実行する場合があります。仮想マシンにはただし、仮想CPUが1つしかないため、一度に1つのスレッドしかスケジュールできないことがわかっています。

そして、ここで私たちの用語について非常に明確にしましょう。「コア」ではなく、vCPUまたは仮想CPUをVMに割り当てます。コア(単一の物理ソケットを共有する物理処理ユニットを意味すると私は想定します)はvCPUと等しくありません。それらの間には抽象化の層があります。VMに割り当てられているvCPUが1つだけの場合、一度に実行するようにスケジュールできるスレッドは1つだけです。そのため、VMは2 -4個の仮想CPUが割り当てられた状態でより高速に実行されます。これは、複数のスレッドを同時に実行するようにスケジュールできるようになったためです。

ただし、仮想CPUの数が多すぎると、同期などのオーバーヘッドのコストがますます高くなるため、ここでは確実に収益が減少するという法則があります。

Hyper-VとVMwareハイパーバイザーが仮想マシンスレッドの実行をスケジュールする方法にはわずかな違いがあり、物理リソースの「オーバーサブスクリプション」へのアプローチは異なりますが、これは最初から良い概念です。


7
@ Flapjack00いいえ...それは私が言ったばかりの正反対です。そして、ここで私たちの用語について非常に明確にしましょう。「コア」ではなく、vCPUまたは仮想CPUをVMに割り当てます。コア(単一のソケットを共有する物理処理ユニットを意味すると私は想定します)は、vCPUとは異なります。それらの間には抽象化の層があります。VMに割り当てられているvCPUが1つだけの場合、一度に実行するようにスケジュールできるスレッドは1つだけです。
ライアンリース2013

1
ああ!したがって、その場合、4つのvCPUで構成されたVMは、一度に4つのスレッドをスケジュールできます。私のホストに十分なvCPUがあると仮定すると、これらの4つのスレッドを同時に処理できますか?
Blackjack00

1
@ Flapjack00 「ホストに十分なvCPUがあると仮定」 - ホストにはvCPUがなく、VMにはあります。ホストには vCPUが割り当てられるコア(より正確には、論理プロセッサ-ハイパースレッドなどの単一のコアに複数の論理プロセッサが含まれる場合があります)があります。
BlueRaja

2
@Dan、それはVMwareに固有の問題です。Hyper-Vには影響しません。
Jake Oshins 2013

1
VMwareが持っていた「x vCpuにはY cpuロックが必要」はESX 3.5で削除されたため、これは現在のハイパーバイザーには適用されません。とはいえ、不要なリソースをVMに割り当てないように注意する必要があります。vCpuは特に重要です。それらが多すぎると、全体的なパフォーマンスが低下します。
pauska 2013

3

割り当てられる仮想CPUの量は重要です。VMで実行されているソフトウェアは、VM内にあること、およびホストがVMが提供する以上の能力を備えていることを認識していません。したがって、複数のCPUコアを利用できるソフトウェアを実行している場合、1つのコアのみが割り当てられているVMでは、ソフトウェアはタスク用に1つのコアのみをスケジュールし、VMも1つのホストコアのみを使用します。時間。VMにより多くのコアを与えると、ソフトウェアはより多くの並列タスクをスケジュールでき、ホストのCPUがVMに対してスケジュールします。

1つのVMにホストよりも多くの仮想コアがある場合、VMは競合を引き起こさないように、VMに過剰に与えないように注意してください。VMはそれ自体に対して競合します。また、VMwareなどのスケジュールされたハイパーバイザーがギャングの場合、VMはまったく何も実行できない(もちろん、overococateのオプションは管理レイヤーによってブロックされます)。

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