(CPUの)物理コアごとのvCPUのプロビジョニングに関する仮想化のドキュメントまたはベストプラクティスガイドを見つけようとしています。それが重要であれば、仮想化の実装のためにvmWareを検討しています。たとえば、Intel Xeon CPUには4、8などのコアがある場合があります。 1つの物理コアあたり1つのvCPUを超えるプロビジョニングについて詳しく知りたいです。私が話しているベンダーは、単一のコアを複数のvCPUにプロビジョニングできると確信しています。
これまでの私の研究でよく目にするのは、「まあ、それはアプリケーションによって異なります」です。その場合、私のアプリケーションはコードの編集、コンパイル/リンク、テスト、および構成管理です。もちろん、すべてのVMをコアごとに複数のvCPUで構成する必要はありませんが、一般的なケースではそうです。
単一の物理CPUを複数のvCPUとして利用できます。仮想化ソリューションでCPUリソースが不足することはほとんどありません。 RAMおよびストレージは常に制限要因です...
VMwareでは、CPU使用率はコアではなく使用されるMHzで表されます。すべての仮想CPUを100%でペギングしている場合を除き、すべての時間、私はあなたのベンダーが正しいとは思いません。
次のシステムのクラスタを見てみましょう...
別のアクティブなクラスターから-3台のホストで42台の仮想マシン
複数のvCPUまたはvCPUごとの複数のコアを明示的に利用できるアプリケーションがない限り、ewwhiteの説明を拡張すると、複数のvCPU /コアをVMに割り当てるメリットはまったくありません。実際、多くの場合、1つのコアが割り当てられている単一のvCPUで実行するのとは対照的に、実際にはパフォーマンスが低下します。これは、複数のvCPUを実行するために必要なスケジューリングのオーバーヘッドが原因です。
FWIW、VDI設定でよく引用される数は、物理コアあたり5 vCPUです。もちろん、それは事務用デスクトップを考慮に入れています。 VMがコードのコンパイルで常にビジー状態である場合、物理コアごとに5つのvCPUに対応できない可能性があります。
非常に多くの人々が「依存する」と言うのは、それが本当にそうであるからです。 CPU Readyの値を確認し、特定のシステムにより多くのCPU負荷をかけることができるかどうかを判断します。 CPU Readyは、コマンドを実行する準備ができているvCPUの測定値ですが、物理CPU時間が使用可能になるまで待機する必要があります。
あなたの場合、大きなプログラムをコンパイルしている場合、VMが実際には多くのCPU時間を必要とする可能性があります。 ewwhiteが述べたように、通常、仮想化はディスクI/Oである傾向があり、RAMでも、CPUの制約よりも制約されます。
根本的な問題は、物理システムでのプロセススケジューリングと基本的に同じです。システムの負荷がコア(またはハイパースレッディングの場合は論理プロセッサ)の数を下回っている限り、問題はなく、プロセッサは負荷を処理できます。
そのため、使用されているすべてのvCPUの同時負荷が、物理コアで処理できる負荷を超えない限り、問題はありません。
あなたの要求では、コンパイルのみがCPUを必要とする作業であり、これは時々必要とされるだけです。コンパイラーVMの場合、可能な限り多くのCPUを割り当てます。したがって、コンパイルする必要がある場合、それは可能な限り速く行われます(コンパイラが並列コンパイルをサポートしている場合)。
これは、一定の負荷がかかっているコンパイラVMには当てはまらない場合があります(たとえば、コンパイルを行うためにインターネットサービスを提供し、それが常に使用されている場合)。
私が見た経験則の1つ(おそらくVMwareのドキュメントで)は、VMにホストに物理的に存在するよりも多くのコアを割り当てることではありません。これにより、複数のvCoreがシングルコア、不要なオーバーヘッドを追加します。