2つのCPUを搭載したVMは、4つのCPUを搭載したVMよりも本当に高速ですか?


67

私たちのITは、私が要求した4つではなく、2つのCPUが割り当てられたVMを作成しました。彼らの理由は、VMが4つのCPUではなく2つのCPUを使用したほうがパフォーマンスが高いためです。その理由は、VMハイパーバイザー(この場合はVMWare)は、すべてのCPUが使用可能になるのを待ってから、CPUのいずれかを使用することです。したがって、2 CPUではなく4 CPUを待機するのに時間がかかります。

この文は理にかなっていますか?

回答:


62

これは以前は真実でしたが、もはや真実ではありません。

彼らが言及しているのは、厳密な共同スケジューリングです。

最も重要なことは、厳密な同時スケジューリングアルゴリズムでは、遅れるvCPUの存在により、仮想マシン全体が同時に停止することです。緩和された協調スケジューリングアルゴリズムでは、主要なvCPUが、最も遅い兄弟vCPUに対するスキューに基づいて、それ自体を協調停止するかどうかを決定します。

さて、あればホストは4つのだけのスレッドを持っている、あなたはそれらのすべてを割り当てるために愚かなことだろう。プロセッサに2つのプロセッサとプロセッサあたり4つのスレッドがある場合、ハイパーバイザーはメモリアクセスを高速化するために同じNUMAノードにvCPUを保持する必要があるため、単一のプロセッサのすべてのコンテンツを割り当てたくない場合あります。ソケット全体を単一のVMに割り当てることにより、このジョブをより困難にします(上記PDFの12ページを参照)。

そのため、より少ないvCPU より優れたパフォーマンスを発揮できるシナリオもありますが、100%の場合はそうではありません。

言って完了したことですが、ゲストごとに3つ以上のvCPUを割り当てることはほとんどありません。デフォルトでは、全員が2つ、ワークロードが重い場合は3つ、SQL Serverや非常に重いバッチ処理VMなどの場合は4つ、多くのユーザーがいるターミナルサーバーを受け取ります。


3
ちなみに、仮想化のハードルは別としても、並列処理を活用するソフトウェアを作成するのは一般に注意が必要です。ソフトウェア担当者が十分でない場合、実際には、4つの実行スレッドを実行する1つのホストよりも、ソフトウェアの1つのインスタンスを実行する4つの仮想ホストを使用することをお勧めします。
ルアーン

4
@LuaanこのボックスにはSQL Serverが搭載されているので、そこに優秀なソフトウェアを手に入れたと思います。
AngryHacker

1
@AngryHackerはいSQLサーバーは、適切なMAXDOP設定があれば4つのコアすべてを非常に効率的に使用できます。ただし、ワークロードに応じて、過度に課税されたSQLサーバーは、多くの場合、不適切なデータベース設計の兆候です。つまり、不適切なインデックス、クラスター化インデックス、インデックスが多すぎる、最適化がないなどです(常にではありませんが)。
マークヘンダーソン

1
@Luaanそれはまだ並列性です...お互いに話をする必要がある場合、はるかに高いレイテンシーで。:)
レイラブ

@MarkHenderson最適化されていますが、一部のワークロードは大きすぎて、2つのCPUと他の大量のクエリで同時に簡単に処理できません。
AngryHacker

15

これは、基盤となるハイパーバイザーとそれを実行する管理者に大きく依存します。

  1. あなたがそれを要求したからといって、4 CPUを勝手に与えることは悪い習慣です。一般的に言って、4が必要だと思います。しかし、リソースの監視では、必要なのは1つだけです。
  2. たとえば、VMware ESXi では、vCPUがCPUリソースを要求するときにすべてのpCPUをロックする必要があります。そのため、このハイパーバイザーではパフォーマンスが低下します。KVMはESXiのようにロックを行いません。基礎となるカーネルスケジューラを使用しますが、長期的にはCPUの競合を引き起こす可能性があります。
  3. 4つのCPUを使用して最初からシステムを構築している場合は、実際にはスケールアウトしませんが、スケールアップします(特にVMの場合は悪い習慣です)。現在の最新のクラウドインフラストラクチャに合わせて拡張できるように、現在取り組んでいるものをどのように設計しているかを確認することをお勧めします。

これから何を学ぶことができますか?常に最小限のリソースでVMを作成し、必要に応じて増やします。アップではなく常にスケールアウトすると、どこでもアプリを実行できます。

ハイパーバイザーではロックが発生する可能性があるため、実際には2つのCPUが4つのCPUよりも高速である可能性があります。


4

はい、文は一般的に理にかなっています。ただし、正確な構成とワークロードについてはテストする必要があります。CPUを実際に活用できる場合は、CPUの数が多い方が良い場合があります。ただし、実際にそれほど多くの並列性を持たない場合、CPUが少ない状態で構成されたVMは、CPU Ready Stateの一時停止によるスローダウンを回避するため、多くの場合わずかにパフォーマンスが向上します。

多くのVMでvCPUを削減し、大多数のスループットが向上しました。ほんの一握りが悪化し、vCPU数を増やす必要がありました。

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