私たちのITは、私が要求した4つではなく、2つのCPUが割り当てられたVMを作成しました。彼らの理由は、VMが4つのCPUではなく2つのCPUを使用したほうがパフォーマンスが高いためです。その理由は、VMハイパーバイザー(この場合はVMWare)は、すべてのCPUが使用可能になるのを待ってから、CPUのいずれかを使用することです。したがって、2 CPUではなく4 CPUを待機するのに時間がかかります。
この文は理にかなっていますか?
私たちのITは、私が要求した4つではなく、2つのCPUが割り当てられたVMを作成しました。彼らの理由は、VMが4つのCPUではなく2つのCPUを使用したほうがパフォーマンスが高いためです。その理由は、VMハイパーバイザー(この場合はVMWare)は、すべてのCPUが使用可能になるのを待ってから、CPUのいずれかを使用することです。したがって、2 CPUではなく4 CPUを待機するのに時間がかかります。
この文は理にかなっていますか?
回答:
これは以前は真実でしたが、もはや真実ではありません。
彼らが言及しているのは、厳密な共同スケジューリングです。
最も重要なことは、厳密な同時スケジューリングアルゴリズムでは、遅れるvCPUの存在により、仮想マシン全体が同時に停止することです。緩和された協調スケジューリングアルゴリズムでは、主要なvCPUが、最も遅い兄弟vCPUに対するスキューに基づいて、それ自体を協調停止するかどうかを決定します。
さて、あればホストは4つのだけのスレッドを持っている、あなたはそれらのすべてを割り当てるために愚かなことだろう。プロセッサに2つのプロセッサとプロセッサあたり4つのスレッドがある場合、ハイパーバイザーはメモリアクセスを高速化するために同じNUMAノードにvCPUを保持する必要があるため、単一のプロセッサのすべてのコンテンツを割り当てたくない場合があります。ソケット全体を単一のVMに割り当てることにより、このジョブをより困難にします(上記PDFの12ページを参照)。
そのため、より少ないvCPU がより優れたパフォーマンスを発揮できるシナリオもありますが、100%の場合はそうではありません。
言って完了したことですが、ゲストごとに3つ以上のvCPUを割り当てることはほとんどありません。デフォルトでは、全員が2つ、ワークロードが重い場合は3つ、SQL Serverや非常に重いバッチ処理VMなどの場合は4つ、多くのユーザーがいるターミナルサーバーを受け取ります。
MAXDOP
設定があれば4つのコアすべてを非常に効率的に使用できます。ただし、ワークロードに応じて、過度に課税されたSQLサーバーは、多くの場合、不適切なデータベース設計の兆候です。つまり、不適切なインデックス、クラスター化インデックス、インデックスが多すぎる、最適化がないなどです(常にではありませんが)。
これは、基盤となるハイパーバイザーとそれを実行する管理者に大きく依存します。
これから何を学ぶことができますか?常に最小限のリソースでVMを作成し、必要に応じて増やします。アップではなく常にスケールアウトすると、どこでもアプリを実行できます。
ハイパーバイザーではロックが発生する可能性があるため、実際には2つのCPUが4つのCPUよりも高速である可能性があります。
はい、文は一般的に理にかなっています。ただし、正確な構成とワークロードについてはテストする必要があります。CPUを実際に活用できる場合は、CPUの数が多い方が良い場合があります。ただし、実際にそれほど多くの並列性を持たない場合、CPUが少ない状態で構成されたVMは、CPU Ready Stateの一時停止によるスローダウンを回避するため、多くの場合わずかにパフォーマンスが向上します。
多くのVMでvCPUを削減し、大多数のスループットが向上しました。ほんの一握りが悪化し、vCPU数を増やす必要がありました。