web-dev-qa-db-ja.com

VMwareで採用されているギャングスケジューリングは重大な欠点ですか?

VMwareとhyper vがCPUスケジューリングを行う方法の違いに関して、いくつかのtechnet記事と this one を読んでいました。

これに関する客観的な情報を得ることができるかと思っていました。 VMwareで使用されるギャングスケジュールは非常に不利なように思えますが、私はクーラードだけを飲みたくありません。それはパフォーマンスに深刻な影響を与えますか、それともVMwareのハイパーバイザーの最新のイテレーションでこれを解決しますか?

編集:私が不利なことを言うとき、私はHyper Vの「無料のプロセッサスケジューリング」に関連することを意味しますが、KVMはそれを行います。 "ギャングスケジューリングでは回避できます。

15
red888

暗い照明のバスルームミラーにBloody Maryを唱えるように、Jake Oshinsを表示できるかどうか見てみましょう...

ギャングスケジューリングは、共同スケジューリングとも呼ばれます。 VMwareはギャングスケジューリングよりも共同スケジューリングという用語を好んでいると思います。

バージョン3.xより前のESXバージョンでは、VMwareは「厳密な」コスケジューリングを使用していましたが、同期の欠点がありました。 ESX 3.x以降では、VMwareは「リラックス」コスケジューリングに切り替えました。

緩和されたコスケジューリングは、ESX 3.xの厳密なコスケジューリングに取って代わり、以降のリリースで改良されて、CPU使用率を向上させ、幅広いマルチプロセッサ仮想マシンをサポートしています。ゆるやかなコスケジューリングには、厳密なコスケジューリングアルゴリズムと比較していくつかの特徴があります。最も重要なのは、厳密なコスケジューリングアルゴリズムでは、遅れているvCPUが存在するため、仮想マシン全体がコストップされることです。緩やかなコスケジューリングアルゴリズムでは、先行するvCPUが、最も遅い兄弟vCPUに対するスキューに基づいて、コストップするかどうかを決定します。スキューがしきい値よりも大きい場合、先頭のvCPUが共同で停止します。遅れているvCPUは、最高速の兄弟vCPUよりも大幅に進行が遅いvCPUであり、先行するvCPUは、最も遅い兄弟のvCPUよりも大幅に進行が速いvCPUであることに注意してください。最も遅い兄弟vCPUを追跡することにより、各vCPUが独自に共同スケジューリングを個別に決定できるようになりました。コストップと同様に、コスタートの決定も個別に行われます。最も遅い兄弟vCPUが進行を開始すると、同時停止したvCPUが同時起動する資格があり、pCPUの可用性に応じてスケジュールできます。これにより、vCPUのグループを一緒にスケジュールする必要がないため、厳密なコスケジューリングアルゴリズムのCPU断片化の問題が解決されます。前の4 vCPU仮想マシンの例では、使用可能なアイドルpCPUが1つしかない場合でも、仮想マシンは前進することができます。これにより、CPU使用率が大幅に向上します。

上記のスニペットは、VMware独自の documentation からのものです。

そのため、VMwareは厳密なギャングスケジューリングを使用しなくなりました。私はベンダーからのドキュメントを直接より信頼できるものとして扱います。

正確な数値を与える唯一のものはベンチマークであり、CPUが実行しているコードの種類に完全に依存します。しかし、VMwareがこのような不利な状況にあったとしても、仮想化市場で大きなシェアを獲得することはできないでしょう。

22
Ryan Ries

さて、ライアン、あなたは私の一日を作りました。私は以前ほどこのフォーラムを読みませんでしたが、たまたまチェックインしました。

Red888、私がMicrosoftでHyper-Vに取り組んでいるソフトウェアアーキテクトであることを前もって知っておく必要があります。これを読んでいるほとんどの人は、この下にある私の名前のリンクをクリックして、それを発見したり、私をググリングしたりすることが完全にできると思います。

一般に、ギャングスケジューリングは、ハイパーバイザーがVM内で実行されているOSの動作に影響を与える方法がない場合に役立ちます。もちろん、これがVMwareがこのように始めた理由です。彼らはオペレーティングシステムを所有していないため、既存のオペレーティングシステムを適切に機能させることが目標でした。私が彼らだったら、ここから始めました。

ギャングのスケジューリングとVMwareはおそらく私がこれについて正しいと言っているでしょうが、マシン内で物理プロセッサを使用する方法には多くの制限があります。ハイパーバイザーは、現時点で適切なリソースを見つけることができないことがよくあります。したがって、彼らは長年にわたってアルゴリズムを変更し、スケジューリングをより効果的に行う方法を模索してきました。

Microsoft(およびおそらく他のいくつかの企業)は、異なる見方から始めました。私たちはWindowsを所有しています。仮想化したときにWindowsが適切に動作するようにします。したがって、ギャングスケジューリングは必要ありません。ギャングスケジューラを作成する必要もありません。

興味深いことに、Microsoftは、VMware、KVM、Xen、Oracle、UnisysなどよりもHyper-Vが優れていることよりも、他のオペレーティングシステムと比較してWindowsが適切に実行されていることを重視しています。ハイパーバイザーとの連携に使用します。好奇心旺盛な方のためのリンクですが、就寝時の読書としてはお勧めしません。

http://www.bing.com/search?q=Hypervisor+Top-Level+Functional+Specification+3.0a%3A+Windows+Server+2012&src=IE-SearchBox&FORM=IESR02

そのため、どのハイパーバイザーベンダーも、Windowsから協調動作をトリガーするものを公開できます。それらのいくつかは持っています。正直なところ、VMwareがこれを持っているか、持っているか、公開するかどうかはわかりません。それら、またはそれらに多くの注意を払う誰かに尋ねる必要があります。そして、もしそうなら、彼らが彼らのスケジューラーをさらにリラックスするように変更していなかったとしたら、私は非常に驚きます。もちろん、最後のステートメントは純粋な推測です。

したがって、私の結論としては、ハイパーバイザースケジューラの動作に基づいて、2014年に購入を決定する必要があるとは思いません。私はそれらが今ではすべてかなり良いと思います。数年前、それは本当ではなかったかもしれません。

さまざまなシステムでワークロードを試し、それらがどのように機能するかを確認する必要があります。究極のパフォーマンスは、ストレージとネットワークがニーズを満たしているかどうかにかかっていると思います。

16
Jake Oshins