web-dev-qa-db-ja.com

VM 2 CPUの場合、4 CPUの場合よりも本当に高速ですか?

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

このステートメントは意味がありますか?

67
AngryHacker

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

彼らが言及しているのは Strict Co-Scheduling です。

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

さて、ifホストには4つのスレッドしかないので、すべてのスレッドを割り当てるのはばかげています。 If2つのプロセッサがあり、プロセッサごとに4つのスレッドがある場合、あなたはmightハイパーバイザーがvNUMを同じNUMAノードに保持してメモリアクセスを高速化する必要があるため、単一のプロセッサのすべてのコンテンツを割り当てる必要はなく、ソケット全体を単一の= VM(その12ページを参照PDF上記))。

したがって、vCPUの数が少ない可能性のあるシナリオが複数のシナリオよりも優れている場合がありますが、100%の確率でそうなるとは限りません。

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

62
Mark Henderson

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

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

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

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

15
user101130

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

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

4
Brian Knoblauch