ベストプラクティス:物理コアごとのvCPU


27

(CPUの)物理コアごとのvCPUのプロビジョニングに関して、仮想化に関するドキュメントまたはベストプラクティスガイドを見つけようとしています。問題があれば、仮想化の実装についてvmWareを検討しています。たとえば、Intel Xeon CPUには4、8などのコアがあります。1つの物理コアにつき1つのvCPUを超えるプロビジョニングの詳細に興味があります。私が話しているベンダーは、単一のコアを複数のvCPUにプロビジョニングできると確信しています。

私のこれまでの研究でよく見られるのは、「まあ、それはあなたのアプリケーション次第」です。その場合、私のアプリケーションはコードの編集、コンパイル/リンク、テスト、および構成管理です。もちろん、すべてのVMをコアごとに複数のvCPUで構成する必要はありませんが、一般的な場合です。

回答:


24

単一の物理CPUを多くのvCPUとして使用できます。仮想化ソリューションでCPUリソースを使い果たすことはめったにありません。RAMとストレージは常に制限要因です...

覚えておいてください、あなたは100%であなたの仮想CPUのすべてをペッグしている場合を除きVMware社では、CPU使用率が...コア、MHzのに使用される表現されていないすべての時間、私はあなたのベンダーが正しいとは思いません。

次のシステムのクラスターを見てみましょう...

  • 9 ESXiホスト。
  • 160台の仮想マシン
  • クラスタ全体で104個の物理CPUコア。
  • 仮想マシンの平均プロファイルは、4つのvCPUと4GB〜18GB RAMです。
  • CPUは安全にオーバーサブスクライブできますが、VMレベルで制限、予約、および優先順位付けすることもできます。

ここに画像の説明を入力してください ここに画像の説明を入力してください

別のアクティブなクラスターから-3つのホスト42仮想マシン ここに画像の説明を入力してください


4
3936のvMotionでの移行を見た後、私は、私たちの約1,200悪く感じることはありません
マーク・ヘンダーソン

2
昨日、VMクラスターの統計を見ましたが、これは@ewwhiteの数値を裏付けています。合計24個のプロセッサと55 GHzの合計3つのホストがあります。合計79個のvCPUが割り当てられた59個のVMがあります。vSphereの統計によると、過去6か月間で、平均で14 GHz以上を使用し(最小9 GHz、最大25 GHz)、その間にCPUコアカウント競合はありませんでした。
ポール・ギア

7

ewwhiteの評価を拡大するには、複数のvCPU、またはvCPUごとに複数のコアを明示的に利用できるアプリケーションがない限り、複数のvCPU /コアをVMに割り当てるメリットはまったくありません。実際、複数のvCPUを実行するのに必要なスケジューリングのオーバーヘッドのために、1つのコアが割り当てられた単一のvCPUで実行するのではなく、実際にはパフォーマンスが低下することがよくあります。

FWIW、VDI設定でよく引用される数は、物理コアあたり5 vCPUです。もちろん、オフィスのデスクトップを考慮に入れています。VMが常にコードのコンパイルで非常に忙しい場合、物理コアあたり5つのvCPUを搭載できない可能性があります。

非常に多くの人々が「依存する」と言う理由は、本当に依存しているからです。CPU Ready値を確認してから、特定のシステムにより多くのCPU負荷をかけることができるかどうかを判断します。CPU準備完了は、コマンドを実行する準備ができているvCPUの測定値ですが、物理CPU時間が利用可能になるまで待機する必要があります。

あなたの場合、大きなプログラムをコンパイルする場合、VMが実際に多くのCPU時間を必要とする可能性が完全にあります。ewwhiteが指摘したように、通常、仮想化はCPUの制約ではなくディスクI / OとRAMの制約を受ける傾向があります。


13
absolutely zero benefit in allocating multiple vCPUs/cores to a VM-完全に正しいわけではありません。毎週ハングするのに使用されるシングルスレッドアプリケーションがあります。単一のvCPUが100%の場合、そのシステムにアクセスすることは不可能であり、VMのハイパーバイザーレベルのリセットを行う必要がありました。2番目のvCPUを追加し、アプリがハングしたときに、問題のあるスレッドを簡単に取得して強制終了できました。これはちょっとした事実ですが、絶対に対処することはできません。
マークヘンダーソン

4
Markが書いたのは、2つのコアをすべてのVMの下限として使用する理由です-それが必要かどうかは関係ありません。
ニルス

2
準備値は、ホストのプロビジョニングが過剰かどうかを判断する最良の方法です。準備値はできるだけ低くする必要があります。これは、VMがCPUサイクルを使用する準備ができているが、CPUが別のタスクでビジーであるために待機しなければならない時間の%です。VMに多くのコアを与えるとパフォーマンスに影響する理由を説明するために、単純な例を使用します:4つの物理コアと4つのVMがあり、2つのコアを持つ3つのVMと4つのコアを持つ1つのVMがある場合、小さなVMは実際に取得しますより多くのサイクルに対応します。これは、複数のサイクルでより適切に「適合する」ためです。あなたと一緒に可能な限り保守的に行きましょう!
-Rqomey

@MarkHenderson私はそれがどのように有益であるかを見ることができ、彼がコンパイラーで働いているので、質問をした人にそのようなことが起こる可能性があります。
リアリティエクストラクター

@Nilsビジネス上のニーズがあるかどうかに関係なく、すべてのVM 2コアを提供するのは本当に悪い考えだと思います。さまざまな方法で簡単に悪影響を与える可能性があります。スロットサイズ、再起動/フェールオーバーに使用できるコアが不足している、Rqomeyが書いたことによるパフォーマンスの低下、その他数え切れ​​ないほどのこと ほとんどの場合、vCenterおよびDCUIを介してVMにアクセスできます。
リアリティエクストラクター

3

根本的な問題は、基本的に物理システムでのプロセススケジューリングの場合と同じです。システムの負荷がコア(またはハイパースレッディングの場合は論理プロセッサ)の数を下回っている限り、すべてが正常であり、プロセッサが負荷を処理できます。

そのため、使用されているすべてのvCPUの同時負荷が、物理コアで処理できる負荷を超えない限り、すべてうまくいきます。

あなたの要求に対しては、コンパイルのみがCPUに負担のかかる作業であり、それは時々のみ必要です。コンパイラーVMには、使用可能な限り多くのCPUを割り当てます。そのため、コンパイルが必要な場合は、可能な限り高速に実行されます(コンパイラが並列コンパイルをサポートしている場合)。

これは、一定の負荷がかかっているコンパイラVMには当てはまらない場合があります(たとえば、コンパイルを行うためにインターネットサービスを提供し、常に使用されている場合)。


2

私が見た経験則の1つ(おそらくVMwareのドキュメントで)は、ホストに物理的に存在するよりも多くのコアをVMに割り当てないことです。これにより、単一のコアで複数のvCoreがエミュレートされ、不要なオーバーヘッドが追加されます。


1
逆はどうですか?6コアのXeonがあり、VMに4コアしか割り当てない場合はどうなりますか?それではパフォーマンスはどうなりますか?VMシステムは、6つの物理コアすべてから電力を取得できますか、それとも4つに制限されますか?
オーバーマインド

4つのコアのみを指定すると、一度に4つのコアにしかアクセスできなくなります。ただし、ピン留めを構成していない限り、6つの物理コアのうち4つにこれらの4つの仮想コアが割り当てられる可能性があります(確認されていません)。
ポール・ギア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.