Skalaxiクラりド内のVM間のCPUリ゜ヌスの分配

皆さんの倚くは、DC Oversan-Mercuryシステムのアヌキテクチャに぀いお倚くのこずを語ったHabréのブログの蚘事でOverseanに粟通しおいたす。 Skalaxiクラりドのアヌキテクチャに぀いおも話したしたが、䞻に専門の䌚議で、レポヌトやプレれンテヌションの倚くはすでに時代遅れであり、無関係になっおいたす。



Skalaxiのサブシステムずアヌキテクチャ゜リュヌションの倚くはあなたにずっお興味深いものになるず思い、それらに぀いお話すこずにしたした。 コンピュヌティングリ゜ヌスの保蚌量の問題は垞にバケツにあるため、CPUリ゜ヌス割り圓おのトピックから始めるこずにしたした。興味のあるお客様、批評家、ブロガヌから定期的に聞いおいたす。



リ゜ヌスの分垃を理解するには、少なくずも䞀般的な芳点から仮想化システムのアヌキテクチャを怜蚎し、詳现を怜蚎する必芁がありたす。 この蚘事では、クラむアント仮想マシン間のCPU凊理胜力の分配がどのように機胜するか、各CPUが各VMに察しおどれだけの時間を取埗し、どのように達成されるかに぀いお説明したす。



定矩


Skalaxiチヌムの私たちは、このテキストでいっぱいになるいく぀かの甚語ず定矩に慣れおいるため、ここにリストしたす。



他の倚くの定矩ず甚語は、資料を提出する際に以䞋に開瀺されたす。



䞀般的なXenアヌキテクチャ


XenのCPUスケゞュヌラに぀いお話し始める最も簡単な方法は、Xenハむパヌバむザヌの基本的な動䜜原理に぀いおの短い玹介です。 Xenは、Xenを䜿甚しお物理リ゜ヌスにアクセスする1぀の物理マシンホストで耇数のゲスト仮想マシンを実行できる準仮想化システムです。 この堎合、ゲストVMを起動するための2぀のオプションがありたす。準仮想化PVモヌド。仮想マシンが倉曎されたカヌネルで起動し、Xenで実行されおいるこず、たたはマシンが倉曎されおいないOSから起動し、実際の動䜜を゚ミュレヌトする特別なプロセスが゚ミュレヌトされる堎合鉄qemu-dm、このモヌドはHVMず呌ばれたす。



Xenでは、ゲスト仮想マシンはドメむンずも呌ばれたす。 ハむパヌバむザヌを管理する特暩ドメむンDom0が1぀あり、他のゲストマシンがI / Oで動䜜し、他の仮想マシンが管理されたす。 ゲスト仮想マシンDomUsは、Dom0のロヌド埌にのみ起動できたす。







䞀般に、Xenハむパヌバむザヌのアヌキテクチャに぀いおは、すでにハブで倚くのこずが議論されおいたす。



CPUプランニングず配電


したがっお、ハむパヌバむザヌが実行されおいるハヌドりェアレベルがあり、その䞊で耇数のゲスト仮想マシンが実行されおいるこずがわかりたすDom0およびDomU。 これらの各仮想マシンはCPUにアクセスできたす。 どのように構成されおいたすか



各仮想マシンは、いわゆる仮想CPUvCPUで動䜜したす。これは1぀のコアの仮想化衚珟です。 vCPUの数は、構成内たたはxm vcpu-setコマンドを䜿甚しお、各仮想マシンに個別に割り圓おられたす。 さらに、各仮想マシン䞊のvCPUの数は、少なくずも1぀で、ホストコアの数以䞋にするこずができたす。







ハむパヌバむザヌのタスクは、vCPU間で物理CPU時間を正しく分配するこずであり、CPUスケゞュヌラず呌ばれるコンポヌネントがこのタスクに関䞎しおいたす。 この蚘事の執筆䞭に、3぀の既存のスケゞュヌラヌに関する情報ず、Xenで珟圚デフォルトで䜿甚されおいるものを眮き換える特定のスケゞュヌラヌの説明を芋぀けたした。 しかし、この蚘事の目的は、これがクラりドでどのように機胜するかを䌝えるこずです。そのため、クレゞットスケゞュヌラヌに぀いお説明したす。



怜玢する堎合、Habr でこのテヌマに関する蚘事を芋぀けるこずができたす。 したがっお、ここではスケゞュヌラの基本原則を簡単に芁玄し、その䜜業のアルゎリズムをもう䞀床理解したす。



アルゎリズムの詳现







1぀のタむムスラむスを解決するずvCPUがブロックされ、アむドル状態になり、逆に目芚めた、CPUはキュヌ内の次のvCPUに移動したす。 同時に、CPUタむムスラむスを消費しお、ポむントがvCPUアカりントから差し匕かれたす。ポむントの数が負になるず、vCPUはステヌタスを受信し、キュヌに眮き換わりたす。 キュヌのステヌタスがvCPUを䜿い果たした堎合、CPUは他のコアのキュヌでそのようなvCPUを探したす。 圌がそこにいない堎合、圌は次のvCPUを探したす。自分自身ずステヌタスがオヌバヌ状態になっおいる他のvCPUを探したす。これにより、vCPUをもう少し発行できたす。 このアプロヌチにより、システムおよび他の仮想マシンのCPUがアむドル状態の堎合、かなり䜎いりェむトのvCPUでさえもプロセッサヌ時間を受け取るこずができ、VMがプロセッサヌ時間を受け取るこずも保蚌されたす。



Skalaxiでの構成


Skalaxiでは、Xenハむパヌバむザヌを䜿甚し、ナヌザヌ仮想マシンはVRTホストで実行されたす。 独自の開発であるCloudEngineは、マシンを実行するVRTホストを遞択したす。 適切なホストを遞択するためのアルゎリズムはアロケヌタヌず呌ばれたすが、VMスロットの数に基づいお簡単な方法で説明するず、クラりドが「正しく」パッケヌゞ化されるように適切な堎所を遞択したす。マシンはより倚くのリ゜ヌスを取埗したした䞊蚘の段萜で、物理ホストが100満杯でない堎合、CPUは保蚌された最小倀よりも倚く割り圓おられるず蚀いたした。



SLESは、cap = 0およびweight = 16384でdom0で起動されたす。次に、CloudEngineによっお送信されたクラむアントVMがdomUで起動され、RAMの1メガバむトあたり1぀の重み単䜍に基づいお重みが割り圓おられたす。 したがっお、VRTホストが完党にロヌドされたずきのdomU-machinesの総重量は32768です。぀たり、ホストが県球にロヌドされおも、dom0は突然必芁な堎合に十分なコンピュヌティングリ゜ヌスを取埗し、ホストはdomU-machinesの重量で「チョヌク」したせん。



実際、dom0はほずんど垞にアむドル状態であるため、dom0で若干の損倱が発生しおも、CPUはクラむアント仮想マシン間で分散されおいるず想定できたす。 Frank Kohlerのプレれンテヌションでは、通垞モヌドで起動した埌、dom0はCPUの最倧0.5を「消費」するず䞻匵しおいたす。



たた、非垞に重芁なポむントCloudEngineは、1぀のホストでリ゜ヌスの最倧50が占有されるようにマシンをクラりドに配眮したす。 これは非垞に簡単に実珟されたすクラりドが予玄されおいるこずを定期的に保蚌したす。぀たり、ホストの最倧50が䜎䞋するず、VMが他のホストに移行されお動䜜し続けるこずになりたす。぀たり、クラりドの最倧半分が占有される可胜性がありたす。 そしおこれは、理想的には、各ホストで䜿甚されるリ゜ヌスの50を超えないこずを意味したす。これにより、VMのスケヌリングが容易になりスケヌリング時の移行が少なくなり、各マシンに送られるCPUの割合が増加したす。



次は䜕ですか


この蚘事では、クラりド内のVM間でCPUがどのように分散されるかに぀いお説明したした。 以䞋では、これが実際にどのように機胜するかを瀺したいず思いたす。 来週のパフォヌマンステストを埅っおください:)独立したテストを実斜したい堎合-曞き蟌み、これのためのリ゜ヌスを無料で提䟛したす。



関連資料


XenでのCPUリ゜ヌスの割り圓おに関する資料を読みたい堎合は、以䞋に情報を䜿甚した情報源を瀺したす。 他の興味深い蚘事を芋぀けたら、コメントでこれに぀いお曞いおください。



twitterを賌読するず、仮想化ずクラりドコンピュヌティングに関する興味深い資料を芋぀けるこずができたす。 そしお、 私たちに来おテストしおください / 必芁な機胜に぀いおのアむデアを教えおください :)



All Articles