(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
図1は、例えば、ノードs1、s2、s3、d1、d2およびd3を有するネットワーク構造の一例を示す。システムネットワーク構造が与えられると、システムは、各ネットワークリンクにおいて、利用可能な帯域幅を測定する。システムは、システム内の全てのVMについて、メモリ使用パターンのような仮想マシン特性も収集する。
【0015】
さて
図1に戻って、全体的なリソース割り当ての問題を表す例が示されている。典型的な3層データセンタネットワークでは、ソースS
iから目的地マシンd
i,i=1、2、3,への3つのマイグレーションM
1、M
2、M
3が存在し、それらの複数のマイグレーションパスは、それぞれ、破線、実線、鎖線で描かれている。我々がわかるように、マイグレーションM
3は、M
1およびM
2と完全に分離しているパスを有しているので、M
3は、M
1およびM
2と同時発生的にスケジュールされることが可能である。一方、M
1とM
2は、それらのマイグレーションパスにおいて重複したリンクを有しているため、我々がそれらを同時発生的にスケジュール可能か否かは、それらの共通するリンクの帯域幅共有方針に依存する。すなわち、重複したリンクで利用可能な帯域幅が、両方のタスクの早期完了のための並列マイグレーションをサポートするのに十分大きいと、我々は、M
1とM
2を同時発生的に実行し、その逆の場合は逆になる。
【0016】
次に、システムは、各ネットワークリンクでのVMマイグレーション共有方針、すなわち、各リンクに特定の特性を有するVMマイグレーションをいくつ割り当てることが可能かを解析するための、シミュレーションツールを生成する。これは、
図2にリンク110、120、130と共に示されている。
【0017】
各マイグレーションタスクのパスと同様に、各ネットワークリンクでのVMマイグレーション共有方針を考慮して、システムは、
図3に示されたように、全てのネットワークリソース140を最もよく使用するための全体的なリソース割り当て解決手法を生成する。
【0018】
ソフトウェアシミュレーションは、VMおよびリンクの、異なる条件のもとで、最適のリンク共有方針を特定するために使われる。シミュレーションは、使用可能なリンク帯域幅とVM特性とが与えられると、Xenでのソースコードの実行に従ってVMマイグレーション時間を予測する。複数のVMマイグレーションの場合、システムは、シミュレーションにいくつかの追加要素を組み入れる。例えば、ターゲットマシンにおける、初期のリソース予約および最終のVM起動に要する時間のような、いくつかのマイグレーションオーバーヘッドが、複数のマイグレーションの並列処理によって保存されることができる。システムは、複数のマイグレーションがネットワークリンクを共有するときの帯域幅の使用の動作のモデルを作ることができる。シミュレーションツールを動作させることによって、システムは、異なる条件下でのVMマイグレーションパフォーマンスを比較でき、その次に、リンクごとに、最適な共有方針、すなわち、最小のトータルのマイグレーション時間を達成できる同時発生のVMマイグレーションの数を、リンクの利用可能な帯域幅とVMのメモリページのダーティ率とに基づいて生成できる。
【0019】
ここで
図4では、複数のVMを移行するプロセスが示されている。まず、システムは、シングルリンクVMマイグレーション共有方針を処理する(200)。システムは、VMマイグレーションの動作を解析できる(202)。システムは、シングルVMマイグレーションのパフォーマンスをシミュレーションできる(204)。次に、システムは、ネットワークリソースの多重化を実行することと(208)、通信プロトコルに関連するオーバーヘッドを決定すること(210)と、を含むことができる複数のVMマイグレーションのパフォーマンスを、シミュレーションすることを含む(206)。
【0020】
ネットワークリンク共有に追加して、複数のVMマイグレーションの他の課題は、それらの複数のタスクの早急な完了を達成するために、各マイグレーションにシステムの全体的な(グローバル)リソースを割り当てることである。その理由は、ネットワークは、それぞれ異なる利用可能な帯域幅を持つ多くのリンクで構成され、そして、複数のマイグレーションは、種々のネットワークリンクの組を通って行くからである。リンク共有方針は、各個別リンクにおけるマイグレーションの数にのみ関係する一方で、全体的なリソース割り当ては、ネットワーク全体での帯域幅を十分に使うための複数のVMマイグレーションの最適なスケジューリングを見つけるために試みられる。例えば、1つのVMのマイグレーションパスが他のタスクのパスと重複していないと、システムは、直ちにそれを開始できる。しかし、1つのVMのマイグレーションパスに沿ったいくつかのリンクが、他のマイグレーションと共有されていると、それらのリンクのマイグレーション共有方針に基づいてそれらのタスクを順序づけるための計画が必要になる。システムは、全体的なリソース割り当てを決定することもできる(220)。これは、ネットワークリンク容量を決定することも含む(222)。システムは、複数のマイグレーションを1つにまとめることができる(224)。これは、マイグレーション要求の推測(226)および/または各アイテムをまとめること(228)を順番に含むことができる。
【0021】
1つの実施形態は、ビンパッキングアルゴリズムを使って、全体的なリソース割り当てを処理し、そして、ビンパッキングアルゴリズムでは、ビンがネットワーク内の全てのリンクを表し、アイテムが各マイグレーションタスクを示す。ビンの容量は、全てのネットワークリンク内の利用可能な帯域幅によって決定され、一方、各アイテムのサイズは、各マイグレーションの帯域幅要求に関連し、その要求は、VMのマイグレーションパスに沿った各リンクでのマイグレーション共有方針から推定されることができる。ビン容量とアイテムサイズが与えられると、システムは、ファーストフィットデクリーシング(first-fit decreasing:FFD)法を使って、これらの複数のマイグレーションを行うためのビンの数が最小になるように、各マイグレーションを、対応するビンに割り当てる。その結果、ビンの数が、それらの複数のマイグレーションを実行するための期間の長さに対応するので、システムは、複数のマイグレーションタスクの最短の完了を達成する。
【0022】
異なるVM特性およびリンク帯域幅が与えられると、複数のVMマイグレーションを行うために、テストベットが使用される。実際の評価結果は、シミュレーション出力と比較され、そして、シミュレーションツールは、異なる条件下でのマイグレーションパフォーマンスの正確な予測を提供することができる。マイグレーションスケジューリング技術は、巨大なデータセンタにおいて異なる数のVMマイグレーションをシミュレーションすることによって、さらにテストされる。結果は、マイグレーションスケジューラが複数のマイグレーションの早期の完了を達成できることを示す。
【0023】
1つの実施形態は、Xen、VMwareおよびKVMのような大多数の仮想化ソフトウェア用のデフォルトのVMマイグレーションメカニズムである事前コピーマイグレーション技術を重点的に取り扱う。VMマイグレーションベースの事前コピーの実際の実行は、種々のベンダーに応じて変化するが、それらの基本的なメカニズムは同じである。このため、Xenがマイグレーションスケジューリングの方法に使われるが、その方法は、他の仮想化ツールに適用することができる。
【0024】
事前コピーマイグレーションは、繰り返されるマルチパスアルゴリズムを使って、連続するステップにてVMゲストメモリを移動する。各繰返しでは、その繰返しの中で書き換えられた(ダーティにされた)メモリだけが送られる。事前コピーステージが終了したとき、最終状態が新たなホストに送られ、新たな物理マシンへの制御の引き渡しが完了する。
図4は、ホストAから目的地BへのVMマイグレーションの主なステージを表す。繰り返される事前コピーは、いくつかの停止条件が満たされるまで無期限に続けられてもよい。Xenでは、以下の条件の1つが当てはまれば、それは停止されることになる。
【0025】
・50未満のメモリページが、最新の事前コピーの繰り返しの間に書き換えられた(ダーティにされた)。
【0026】
・29回の事前コピーの繰り返しが実行された。
【0027】
・コピーされたメモリのサイズが、VMに割り当てられたRAMの総量の3倍に達した。
【0028】
上記条件のうち、最初のものは、少しのページのみが最後のラウンドで転送させられる必要があるというように、事前コピーの収束を表し、一方、他の2つの条件は、収束しない動作が観測されたときに、事前コピーステージの終了を、単に強制する。
【0029】
ソースマシンAから目的地ホストBへの1つのVMのマイグレーションは、以下のステップを含む。
【0030】
1.リソース予約:目的地ホストBでリソースが予約される。
【0031】
2.繰り返される事前コピー:以前の繰り返しの間に更新されたVMメモリページが、目的地に転送される。最初の繰り返しでは、RAM全体が送られる。
【0032】
3.停止とコピー:VMは、最後の転送ラウンドのために停止する。残っているメモリページが目的地Bに転送される。
【0033】
4.引き渡しと起動:マシンBがVMの完全なコピーの受信に成功したことを示した後、リソースがホストB内のVMに再び結びつけられる。
【0034】
「トータルのマイグレーション時間」と「サービスダウン時間」との2つの指標(metrics)が、VMマイグレーションパフォーマンスを量化するために共通に使用される。トータルのマイグレーション時間は、全体のマイグレーションプロセスの期間をカバーする一方で、サービスダウン時間は、VMがマシンAで一時停止されたときと、それがマシンBで起動されたときと、の間、すなわち、マイグレーションの最後のステージで発生する。システムは、移行中のVMがパフォーマンス低下をあらわにするトータルのマイグレーション時間を、主に重点的に取り扱う。ソースおよび目的地マシンに位置する他の複数のVMも、システムリソースのためのマイグレーションプロセスとの競合のため、悪影響を被る。システムは、移行中のVMとバックグラウンドのアプリケーションとの間の衝突を調べない。システムにおいて現在利用可能なリソースが与えられると、目標は、トータルのマイグレーション時間を減らすために複数のマイグレーションタスクを適切にスケジュールすることになる。その結果、移行中の複数のVM(および起こりうるバックグラウンドの複数のVM)におけるパフォーマンス低下の期間を減らすことが可能になる。
【0035】
実際には、複数のマイグレーションが同時に起こったとき、それらの全体のマイグレーション時間は、事前コピーメカニズムのため、非常に長くなるかもしれない。これを明らかにするために、システムは、まず、利用可能な帯域幅Bを持つネットワークリンクにおいて、メモリサイズVとメモリダーティ率Rが与えられると、1つのVMのマイグレーション時間のモデルを作成する。
図4に示した4つのステージのうち、「リソース予約」と「引き渡しと起動」とにおいて費やされる時間は、比較的安定しており、それは、2つの一定値:マイグレーション以前のオーバーヘッド(Pre-migrationOverhead)と、マイグレーション以降のオーバーヘッド(Post-migrationOverhead)と、によって表すことできる。しかしながら、事前コピーと、停止およびコピーと、のための時間は、リンク条件とVM特性とに応じて非常に変動する。それは、時間t
0=V/Bを要する全てのVMメモリページの転送でスタートし、その後、t
1=R*t
0/B、t
2=R*t
1/B、・・・、t
k-1=R*t
k-2/B、・・・を要する、以前のラウンドで書き換えられた(ダーティにされた)メモリページの転送が続けられる。事前コピープロセスは、複数の停止条件が満たされたときのK番目のラウンドで停止される。その後、ソースVMは一時停止し、残りのメモリがt
k=R*t
k-1/Bを要して目的地に転送される。このため、事前コピーと停止およびコピーとのための時間は、
T
0=t
0+t
1+・・・+t
k
【0038】
全体として、トータルのマイグレーション時間は、
T
mig=マイグレーション以前のオーバーヘッド+T
0
+マイグレーション以降のオーバーヘッド (2)
として表される。
VMマイグレーションは、純粋なデータマイグレーションとは異なる。データマイグレーションでは、システムがパケットロスのための再送データを無視すると、転送されるデータのサイズは、種々のネットワーク条件下で固定されるが、VMマイグレーションにおいて転送されるコンテンツのサイズは、式(1)に示されたように、VMメモリダーティ率と同様にリンク帯域幅に応じて変動する。大きいネットワーク帯域幅が与えられると、各事前コピーの繰り返しでの時間t
iは短くなっていき、その結果、次のラウンドでのコンテンツR*t
iが小さくなっていくと予想され、事前コピーの早期の収束を引き起こす。一方、少ない帯域幅を有するネットワークは、事前コピーの繰り返しにおいて転送される必要があるメモリページが多くなるであろう。
【0039】
VMマイグレーションの独自の動作のため、システムは、複数のVMが同時にマイグレーションをリクエストする状況を適切に処理する必要がある。まず、複数のマイグレーションタスクが、ネットワーク内のいくつかの共通リンクを通って通過すると、システムは、それらの複数のタスクを、重複したリンクを共有する1つの群として、または、連続的ないくつかの群として、実行するかを、決定する必要がある。そのような決定を行うことは、それらの種々の条件下でVMマイグレーションのパフォーマンスの予測を必要とする。しかしながら、式(1)に示したように、マイグレーションのパフォーマンスは、リンク帯域幅とVM特性とを含むいくつかの要素に依存し、そのような依存は非線形である。ソフトウェアのシミュレーションは、種々のリンク共有方策の下でのマイグレーションのパフォーマンスを明らかにするために使用される。シミュレーション結果に基づいて、システムは、重複するネットワークリンクでの複数のマイグレーションの間での最適な共有方針を特定することができる。
【0040】
最適なリンク共有は、各個々のネットワークリンクに関連づけられているが、各マイグレーションは、通常、多くのネットワークリンクを通って移動するので、全てのネットワークリンクからグローバルリソースを構成することと、複数のマイグレーションタスクにそれらを割り当てることも必要である。ネットワーク全体の帯域幅が十分に利用され、それゆえにそれらの複数のタスクのトータルのマイグレーション時間が最小になるように、どのVMが最初におよび他のどのVMと一緒に移行する必要があるかを決定するためのスケジュールを、システムは見つける。1つの実施形態は、マイグレーションのスケジューリングを、ビンがネットワークリンク全体を表しアイテムが各マイグレーションタスクを示すビンパッキング問題に変換する。システムは、複数のマイグレーションタスクを最小の数のビンにパックしてそれらのタスクの最も早い完了を引き起こすアルゴリズムを提示する。
【0041】
s個のマイグレーションタスクが与えられた場合に、並列に実行されると、トータルのマイグレーション時間T
(pal)は、
T
(pal)=max[T
mig-1,T
mig-2,・・・,T
mig-s] (3)
となる。
【0042】
ここで、T
mig-iはi番目のマイグレーションの期間である。T
mig-iの値は、割り当てられた帯域幅での差のために、同時発生のマイグレーションの数sに応じて変化することを示す。ここで、我々は、さまざまなsの設定の下でT
mig-iを推定し、そして、最良のネットワークリンク共有方針、すなわち、最短のトータルマイグレーション時間を引き起こす同時発生のs個のマイグレーションを特定する。システムは、様々なs値の下での全体のマイグレーション時間を比較するために、標準化された値T
(pal)/sを使う。
【0043】
s=1のとき、それは、複数のマイグレーションが連続的に実行されるときの場合に対応する。s値の増加につれて、並列に実行されるマイグレーションの数が多くなる。連続的なマイグレーションと比較して、複数のマイグレーションが同時に発生すると、メリットとデメリットの両方が存在する。まず、システムは、並列マイグレーションでの、マイグレーション以前のオーバーヘッドとマイグレーション以降のオーバーヘッドとのトータルの量を減らすことができる。その理由は、VMマイグレーションにおける「リソース予約」ステージおよび「引き渡しと起動」ステージで要する時間が、割り当てられたネットワーク帯域幅にほとんど依存しないからである。すべてのマイグレーションについてこれら2つのステージを並列に実行することによって、システムは、トータルのマイグレーション時間を節約することができる。
【0044】
いくつかのマイグレーションを同時に予定することは、ネットワークリンクの帯域幅の利用を改善することもできる。VMメモリページは、マイグレーションにおいてTCPソケットで送信されるので、TCP輻輳制御におけるadditive increase and multiplicative decreaseメカニズムが、ネットワーク帯域幅を十分に活用しない可能性がある。大きいTCPバッファを割り当てるようないくつかのTCP輻輳の調整は、帯域幅利用を改善するかもしれないが、専用のTCPフローは、その実装オーバーヘッドのため、利用可能な帯域幅の全てを依然として使うことができない。1つのリンクに複数のマイグレーションフローを割り当てることによって、システムは、ネットワーク帯域幅の使用を多重化してマイグレーション効率を改善することができる。移行しない複数のVMによって使われ始められるバックグラウンドネットワークのトラフィックは、企業ネットワーク動作において一般的であるマイグレーションフローよりも、非常に短い期間となる。その結果、これらのバックグラウンドトラフィックフローは、長いマイグレーションフローをほとんど妨害しなくできる、ということが想定される。
【0045】
一方、並列マイグレーションでのネットワークリンクの共有のために、マイグレーションごとの割り当てられたネットワーク帯域幅は、連続的な場合に比べて減らされる。そのような帯域幅の減少は、マイグレーションの間に送信される必要があるメモリページをより多くするであろうし、その結果、VMマイグレーション時間の増加を引き起こす。
【0046】
表1:2つのVMマイグレーションが連続的、並列的に実行されたときの2つのVMマイグレーションのトータル時間。
【0048】
ネットワークリンク共有のメリットとデメリットとの間のバランスを見つけるために、システムは、まず、種々のリンク共有方針の下でのVMマイグレーションのパフォーマンスを予測する必要がある。しかしながら、VMマイグレーションの複雑さのため、その期間は、リンクでの利用可能な帯域幅とVMメモリおよびダーティ率のようないくつかの要素に依存する。表1は、これを表すための2つの例を表し、システムは、2つのマイグレーションが、連続順と、同時と、で実行されたときの2つのマイグレーションの時間を比較する。第1の例では、システムは、1Gbpsの帯域幅のリンクにおいて、1GBのメモリを有する複数のVMを移行する。それは、複数のVMが1秒間に2kのメモリダーティページを有するとき、並列マイグレーションを完了するためには、ほんの20秒しかかからないが、一方、連続マイグレーションは22秒を要することを示す。しかしながら、VMメモリのダーティ率が1秒間に15kのページに増加したとき、並列マイグレーションは連続マイグレーションよりも遅くなる。第2の例では、システムは、種々のリンク状況で、1GBのメモリを有し1秒のダーティ率が10kメモリページの2つのVMのマイグレーション時間を比較する。それは、2つのマイグレーションが1Gbpsの利用可能な帯域幅を有するリンクで実行されたとき並列マイグレーションは連続の場合よりも早くなるが、リンク帯域幅が300Mbpsに低下したとき連続マイグレーションがとても速くなることを示す。
【0049】
上記情報は、パフォーマンスを正確に予測することが難しいVMマイグレーションの複雑な動作を表している。1つのVMの状況においてさえ、マイグレーション時間は、式(1)に示されたように、リンク条件とVM特性とに対して非線形に機能する。いくつかの追加の要素が複数の同時マイグレーションに含まれるとき、VMマイグレーションのパフォーマンスを予測するための数学的なモデルを開発することは困難にさえなる。代案として、ソフトウェアシミュレーションが、様々なリンク共有方針の下でのVMマイグレーションのパフォーマンスを特定するために使用可能である。我々のシミュレーションは、Xenにて実行されるVMマイグレーションのソースコードに従い、
図4に示したステージに対応する。s個の同時発生の複数のマイグレーションの下でのVMごとのマイグレーション時間T
mig-iを予測することに重点が置かれ、ここで、それらの全体のマイグレーション時間をT
(pal)とする。
【0050】
VMマイグレーション時間T
mig-iは、マイグレーション以前のオーバーヘッドと、「繰り返される事前コピー」と「停止とコピー」との段階で要する時間T
0と、マイグレーション以降のオーバーヘッドと、の3つの部分で構成されている。マイグレーション以前のオーバーヘッドおよびマイグレーション以降のオーバーヘッドのパラメータは、通常、割り当てられたリソースに関してはあまり変化しないので、複数の同時マイグレーションでは、システムは、マイグレーション以前のオーバーヘッドおよびマイグレーション以降オーバーヘッドの値を、1つのVMマイグレーションでのマイグレーション以前のオーバーヘッドおよびマイグレーション以降オーバーヘッドと同じ値として使う。しかしながら、時間T
0は、複数のマイグレーション間で共有している帯域幅のために、非常に変化するであろう。s個のマイグレーションが、利用可能な帯域幅Bを有するネットワークリンクで同時に実行されたときの場合では、各マイグレーションは、B/sの帯域幅にのみ割り当てられる。帯域幅の利用でのTCPプロトコルのオーバーヘッドを考慮して、システムは、さらに、マイグレーションごとに、割り当てられた帯域幅を、
【0052】
として示し、ここで、Δは、TCP輻輳制御のオーバーヘッドの起因する帯域幅の減少の度合いを表す。複数のマイグレーションの間の帯域幅使用の多重化のために、Δの値は、s、すなわち、同時発生のマイグレーションの数の増加に応じて減少する。システムは、以下の式を使ってΔ値を決定する。
Δ=0.25*exp[-0.5*(s-1)] (5)
システムは、我々の実験の結果に最も適合するΔを見つけるので、(5)の指数関数を使ってΔを表す。(5)には2つの定数要素、0.25と0.5がある。最初の定数値0.25は、「additive increase and multiplicative decrease」のTCPの動作によって決定され、その理由は、1つだけのマイグレーションが1つのネットワークで発生したとき、すなわちs=1、帯域幅の使用は、全部の帯域幅の0.75(そして、0.25=1-0.75)であるからである。2番目の定数値0.5は、実験結果に基づいた関数(5)の校正に由来する。式(4)と(5)から、1つのマイグレーションがその1つのリンクで実行されたとき、
【0054】
は0.75Bあたりのみになり、一方、各マイグレーションで実際に使用された帯域幅は、同時発生のマイグレーションの数sの増加につれて、B/sに近づくために指数的に増加する。実際の帯域幅
【0056】
が与えられると、システムは、マイグレーションごとに時間T
0をシミュレーションすることができ、そして、そのトータルのマイグレーション時間をT
mig-iとする。
【0057】
さまざまなVM特性およびリンクの利用可能な帯域幅が与えられると、システムは、シミュレーションツールを使うことによって、さまざまなリンク共有方針の下での、全体のVMマイグレーション時間を求める。シミュレーション結果から、システムは、最適のリンク共有が、主に、リンク利用可能な帯域幅と移行中の複数のVMのメモリダーティ率という2つの要素に依存することを見つける。この理由は、これらの2つのメトリックが、マイグレーション中に転送されることが必要なオリジナルのVMメモリに加えて、追加コンテンツのサイズを決定するからである。多くのシミュレーションのシナリオを要約した後、特定のリンク帯域幅とVMメモリダーティ率が与えられると、システムは、最短のトータルのマイグレーション時間を引き起こす最適な同時発生のマイグレーションの数sを得ることができる。
【0058】
システムは、移行中の複数の全てのVMが1GBのメモリを有し同じメモリダーティ率を共有していると想定する。最適なマイグレーション数sは、リンク帯域幅の増加に応じて増加するが、VMメモリのダーティ率の増加に応じて減少する。広いリンク帯域幅と小さいメモリダーティ率を有する領域では、システムは、最もよいパフォーマンスを実現するために、3つの同時発生のマイグレーションを行うことができる。これは、そのような十分な帯域幅と低いメモリダーティ率との条件では、リンク帯域幅の共有のメリットは、増加したメモリダーティ率のデメリットをしのぐからである。一方、リンク帯域幅が小さく複数のVMが大きいメモリダーティ率を有するとき、連続的なマイグレーションが最も良くなる。これら2つのメトリックのたった1つに基づいてs値を推定することは困難である。システムがリンク帯域幅とVMメモリダーティ率との両方の値を持つときのみ、システムは、最適な同時発生マイグレーション数を決定することができる。
【0059】
次に、全体的なリソース割り当てを説明する。上記説明では、帯域幅が、複数のマイグレーションのための1つのネットワークリンクにおいて共有されている。しかしながら、全体のネットワークは、特定のトポロジデザインによって構成された多くの数の通信リンクで構成されている。一方では、各マイグレーションは、そのマイグレーションパス、すなわち、ソースから目的地のマシンまで、のうちの複数のネットワークリンクのセット、を、通常カバーする。各リンクの帯域幅共有方針に基づいて、このセクションは、最小のトータルのマイグレーション時間を達成するために、複数のマイグレーションに対して全体的なネットワークリソースの最適な割り当てを見つけることを試みる。
図1は、ネットワークにおけるそのような複数のマイグレーションを表す。上記例のように、重複したリンクを有する2つだけのマイグレーションを処理することは比較的容易であるが、それらのマイグレーションパスに沿って重複する様々なリンクを有する多くのマイグレーションの最もよい構成を見つけることは、組合せ最適化問題になる。1つの実施形態では、システムは、ビンパッキングアルゴリズムを使ってその問題を処理する。システムは、ネットワーク内の全てのリンクをビンとして扱い、そして、多次元ベクトルCを使ってその容量を表す。すなわち、システムは、ネットワーク内の各リンクに索引を付け、そして、それらのリンク内の利用可能な帯域幅を
C=[c
1,c
2,・・・c
r]
T (6)
として測定する。ここで、rはビンの中のリンクの数と等しい。実際には、rの値は、ネットワーク構成と同様に、ネットワーク内の物理リンクの数に依存する。例えば、ネットワークが、ネットワーク構成において典型的な全二重モードで動作されるとき、値rは、トラフィック方向の区別のためにネットワークリンクのサイズの2倍に等しい。ネットワークが、等価コストマルチパス(ECMP)負荷共有によって構成されている場合、システムは、負荷のバランスを取るために使用されるそれらの複数のリンクを1つの論理リンクに結合する必要があり、そして、ベクトル(6)内に論理リンクを唯一含む。
【0060】
ビンパッキングアルゴリズムでのアイテムは、各マイグレーションタスクに関連する。複数のネットワークリンクの複数のインデックスが与えられると、システムは、r次元のバイナリーベクトルP
(i)=[1,0,0,・・・,1]
Tを使ってマイグレーションM
iのパスを表し、そして、i番目のエントリ内の値「1」はパス内のi番目のリンクの包括を表し、「0」は包括を表さない。マイグレーションM
iのエンドツーエンドの帯域幅要求は、ベクトル
D
(i)=P
(i)×d
(i)=[1,0,0,・・・,1]
T×d
(i) (7)
として定義され、d
(i)は、M
iに対して割り当てられた、予想された帯域幅であり、式9で決定されるであろう。
【0061】
ここで、ビンの容量とすべてのアイテムのリソース要求が与えられると、ビンパッキングアルゴリズムは、それらのアイテムを最小数のビンの中に詰め込むことを行うことになる。そうすることによって、システムは、全てのマイグレーションの最早の完了を実現することができ、その理由は、ビンパッキングによって生成されたビンの数が、それらのマイグレーションのトータルの期間を表すからである。
【0062】
ビンパッキング機構に続いて処理される必要があるいくつかの問題がある。1)式(7)内の予期された帯域幅割り当てd
(i)をどのように決定するか、すなわち、マイグレーションタスクごとに要求D
(i)をどのように決定するか。2)マイグレーションスケジューリングのために使用されるビンパッキングアルゴリズムの詳細は何か。3)同じ期間が全てのマイグレーションのために使われると、複数のマイグレーションタスクが異なる期間を持つ状況をどのように処理するか。システムは、マイグレーション要求を推定することによってこれらの問題を処理する。
【0063】
各マイグレーションM
iに割り当てられる予期された帯域幅d
(i)は、複数のマイグレーションの最短の完了を実現するために重要である。d
(i)が小さいと、システムは、各ビンに、より多くのマイグレーションを詰め込むことができ、そして、トータルのマイグレーション期間が減少可能になる。しかしながら、d
(i)が非常に小さいと、各ビンの中に多くの同時発生のマイグレーションが存在することになり、ネットワークリソースの競い合いとなり、そのため、それらの同時発生タスクのためのマイグレーション時間、すなわち、各期間の長さが長くなっていくであろう。最適なリンク共有方針は、各ネットワークリンクにおいて、同時発生する複数のマイグレーションの数についてのガイドラインを提供するので、システムは、M
iのマイグレーションパスに沿ったすべてのリンクにおいて、そのような方針に基づいてd
(i)の値を決定する。
【0064】
システムは、M
iのパス内の複数のリンクを、
【0066】
として示し、その各々は利用可能な帯域幅c
j,j=1,・・・,kを有する。以下では、システムは、まず、
【0068】
におけるM
iの帯域幅要求を推定し、それから、それらのローカルの推定から全体の要求d
(i)を得る。
【0070】
の利用可能な容量c
jと、メモリページダーティ率R
iを有する移行中VMと、が与えられると、システムは、シミュレーション結果から、そのリンクにおける最適な帯域幅共有方針
【0072】
を特定することができ、その最適な帯域幅共有方針は、最短のトータルマイグレーション時間を達成するためにそのリンクで同時に移行できるそのような複数のVMの最適な数を表す。それに基づいて、システムは、
【0076】
として決定する。
すなわち、M
iのローカル帯域幅要求
【0078】
は、最適なマイグレーション時間を達成するために、そのリンクに
【0080】
個のそのような同時発生の複数のマイグレーションを与えるために決定される。リンクの利用可能な容量が並列マイグレーションをサポートするために十分に大きくないと、すなわち、
【0082】
であると、マイグレーションM
iが、そのリンクにおいて利用可能な帯域幅の全てを消費することができる。もしそうでなければ、M
iは、他のマイグレーションタスクとそのリンクを共有しなければならないので、帯域幅容量の一部を得るのみとなる。移行中の全ての複数のVMはメモリページダーティ率のような同じ特性を持っていると仮定しているため、式(8)は、
【0084】
の近似値を提供する、ということを示す。システムは、移行中の複数のVMの特徴を差異化してより正確な
【0086】
を得ることができるが、それは、問題の複雑さを非常に増し、それゆえに、ビンパッキングアルゴリズム用の組合せ探索空間を増大する。そのため、システムは、実行が容易で良い精度も維持する、式(8)を使ったローカルのマイグレーション要求の推定を行う。
【0087】
システムが、M
iのパスに沿ったすべてのリンク
【0091】
を見つけると、M
iの全体の帯域幅要求は、全てのローカルの推定の中の最大の要求
【0093】
として決定される。
ここで、全体の要求d
(i)は、複数のマイグレーションの早期の完了を確実にするためにローカル要求
【0095】
の全てを満たすべきである、ということが直観的に理解できる。稀ではあるが、要求d
(i)はM
iのパスにおけるいくつかのリンクの利用可能な帯域幅を超えるかもしれない可能性がある、ということを示す。この場合、d
(i)は、それらのリンクの最小の帯域幅容量として決定される。次に、システムは、ビンパッキング解決策を決定する。
【0096】
システムは、複数のマイグレーションタスクを、最も少ない数のタイムスロットに中に詰めることを望み、ここで、各タイムスロット内に割り当てられた複数のマイグレーションの総要求は、ネットワークの容量を超えるべきではない。そのようなビンパッキング問題はNP困難であり、そして、その近い最適の解決策を特定するための多くの方法が存在している。この文書では、システムは、first-fit-decreasing(FFD)方法を使って、複数のマイグレーションをスケジュールする。FFD方法は、帯域幅要求の多い順に、複数のマイグレーションタスクをソートし、そして、各タスクを、それを収容できる最も近い将来の期間に配置することを試みる。より具体的には、FFDベースのマイグレーションスケジューリングは、以下のステップで示されることができる。
【0097】
1.式(7)で示された、マイグレーションM
iごとのリソース要求ベクトルD
(i)を、スカラーη
(i)に変換する、D
(i)→η
(i)、ここで、η
(i)はD
(i)内の全てのエレメントの合計と等しい。
【0098】
2.それらの変換されたη
(i)の値に基づいて、複数のリソース要求をソートする。
【0099】
3.高いη
(i)から低いη
(i)へ複数のマイグレーションタスクをスキャンする。選択されたマイグレーションタスクごとに、システムは、選択されたマイグレーションタスクを扱うための使用されていない容量を依然として有している最も近い将来の時間間隔Tに、選択されたマイグレーションタスクを配置することを試みる。
【0100】
4.すべてのマイグレーションジョブが割り当てられるまで、ステップ3)を繰り返す。
【0101】
ベクトルDを使って異なるマイグレーションの間の帯域幅要求を比較してソートすることが簡単ではないので、ステップ1では、システムは、要求ベクトルDをスカラηに変換する。ここで、システムは、D内の全てのエレメントの合計を、変換されたスカラηとして使う。より多くの帯域幅を必要とし多くのリンクをカバーもする複数のマイグレーションがスケジューリングにおいてより高い優先権を得るべきであるということが直感される。上記ステップの全てを実行した後、割り当てられたビンの数T
bが、トータルの複数のマイグレーションタスクの期間と等しくなる。
【0102】
実際には、複数のマイグレーションタスクは、VMメモリサイズ、メモリページダーティ率等におけるそれらの変動のために、異なる時間期間を有している。複数のマイグレーションタスクを同期させるための各タイムスロットの間での明らかな境界線はない。そのような一般的な状況では、システムは、依然としてFFDベースの方法を使って複数のマイグレーションをスケジュールする。しかしながら、各マイグレーションのスタートは、時間よりもむしろイベント信号によって誘発される。すなわち、1つのマイグレーションが完了したとき、それは、マイグレーションスケジューラに信号を送信する。スケジューラは、そのイベントを受け付けると、複数のネットワークリンクにおいて現在利用可能な帯域幅
【0104】
を計算する。ここで、Cは式(6)で表されたオリジナルのリンク容量であり、複数のD
(k)は継続中の複数のマイグレーションの帯域幅要求である。システムは、C
(new)を現在のビンのサイズとして見なし、C
(new)の容量を満たすことができる多くのマイグレーションタスクを割り当てることの試みを用いて、待ちリストに配列されたマイグレーションタスクをスキャンする。すべての複数のVMがそれらの目標のマシンに移行したとき、全体の処理が停止する。
【0105】
図5は、我々のマイグレーションスケジューラの全体の機能を示す。システムは、ホストされる複数のVMのいずれかが移行を望むたびにスケジューラにリクエストを送信するために、各マシンに仮想管理ドメイン、すなわちXenでのドメイン0を設定する。スケジューラは、リクエストを受け付けると、他の仮想マシンからのリクエストに基づいてそのアクションを行う時を決定する。同時発生のマイグレーションのリクエストがないと、マイグレーションは直ちに開始できる。その反対の場合、スケジューラは、上述したビンパッキングアルゴリズムに基づいてマイグレーションの計画を作成する。すなわち、スケジューラは、まず、システムの利用可能な容量を満たすためのマイグレーションの数をスケジュールする。1つのマイグレーションが完了した後、スケジューラは、全てのマイグレーションが完了するまで、待ちリスト内の他のタスクを開始する。システムは、スケジューラの助けを得て、複数のマイグレーションの最速の完了を達成することができる。
【0106】
スケジューラがマイグレーションの決定をするためには、各VMのメモリページダーティ率、および、ネットワーク内の各リンクの利用可能な帯域幅という、2つの種類の計測が集められる必要がある。VMメモリダーティ率は、VMのメモリページごとにダーティ(‘1’)か否(‘0’)かの情報を含む、Xen内に提供されているビットマップデータ構造をチェックすることを、Xenハイパーバイザに指示することによって得られる。データ収集の間、システムは、50msごとにダーティなビットマップを読み、そして、8秒ごとにビットマップをクリーンにする。そのような「ピークアンドクリーン」ステップを3回実行した後、システムは、平均VMダーティ率を計算し、それをマイグレーションスケジューラに送る。
【0107】
ネットワークリンクの利用は、複数のSNMPトラフィックカウンタを通じて複数のネットワークスイッチ内の各ポートのトラフィックを監視することによって獲得される。システムは、トラフィック値と複数のネットワークリンクのオリジナルの容量とに基づいて、各リンクにおいて利用可能な帯域幅を計算することができ、そして、それをマイグレーションスケジューラに送る。複数のVMマイグレーションの進展を保証するために、システムは、リンクごとに、利用可能な帯域幅の低い境界、すなわち、100Mbpsを設定する。計算された利用可能な帯域幅が、その低い境界よりも低いと、システムは、その低い境界の帯域幅を使ってそのリンクの利用可能な帯域幅を表す。そうすることによって、複数のマイグレーションタスクは常に開始されるが、複数のマイグレーションタスクは帯域幅リソースにおいてバックグラウンドトラフィックと競合するかもしれない。
【0108】
VMメモリとネットワーク情報を集めるための時間間隔は、複数の同時発生のマイグレーションの頻度と同様にVMの負荷の変化に応じて変動する。通常、データ収集のオーバーヘッドを減らすために、それは10分以内に設定されることができる。負荷が比較的安定し同時発生のマイグレーションがほとんど発生しないと、そのサンプリング期間は、数時間にまで延長することができる。データを収集する期間を決定することは、システムオペレータ次第である。スケジューラでは、マイグレーション計画を作成することに、最近に観測された測定が使われる。
【0109】
システムが、非常に多くのマシンを含む場合、システムは、複数のマイグレーションスケジューラを持つことができ、その各々は、複数のVMのサブセットからの複数のマイグレーションに対して責任を持つ。現在のVMマイグレーションは同じローカルエリアネットワーク(LAN)内にのみ限定されているので、ラージスケールのシステムにおいて、LANセグメントごとに、少なくとも1つのマイグレーションスケジューラを有することは当然のことである。
【0110】
システムは、ハードウェア、ファームウェア、または、ソフトウェア、もしくは、その3つの組合せで実現されてもよい。本発明は、プロセッサ、データ記憶システム、揮発性と不揮発性のメモリおよび/またはストレージエレメント、少なくとも1つの入力装置、および、少なくとも1つの出力装置、を有するプログラム可能なコンピュータで実行されるコンピュータプログラムで実現されることが望ましい。
【0111】
例の目的で、システムを実現するためにコンピュータのブロック図が
図6において次に示されている。コンピュータは、好ましくは、プロセッサ、ランダムアクセスメモリ(RAM)、プログラムメモリ(好ましくは、フラッシュROMのような、書き込み可能なリードオンリーメモリ(ROM))、および、CPUバスに接続された入力/出力(I/O)コントローラを含む。コンピュータは、ハードディスクとCPUバスに接続されたハードドライブコントローラを適宜含んでもよい。ハードディスクは、本発明とデータのようなアプリケーションプログラムを記憶するために使われてもよい。あるいは、アプリケーションプログラムは、RAMまたはROMに記憶されてもよい。I/Oコントローラは、I/Oバスを通じてI/Oインタフェースと接続される。I/Oインタフェースは、シリアルリンク、ローカルエリアネットワーク、無線リンク、および、パラレルリンクのような、通信リンク上で、アナログまたはデジタル形式のデータを送受信する。適宜、表示部、キーボードおよびポインティングデバイス(マウス)が、I/Oバスに接続されてもよい。あるいは、別々の接続部(別々のバス)が、I/Oインタフェース、表示部、キーボード、および、ポインティング装置のために使われてもよい。プログラム可能なプロセッシングシステムは、予めプログラムされていてもよいし、他のソース(例えば、フロッピーディスク、CD-ROM、または、他のコンピュータ)からプログラムをダウンロードすることによってプログラム(および、再プログラム)されてもよい。
【0112】
各コンピュータプログラムは、マシンが読み取り可能な記録媒体、または、一般的または特定目的にプログラム可能なコンピュータによって読むことが可能な装置(例えば、プログラムメモリ、または、磁気ディスク)に実質的に記憶され、上述した処理を実行するためにその記録媒体または装置がコンピュータによって読まれたときにコンピュータを構成しコンピュータの動作を制御する。本発明のシステムは、コンピュータプログラムで構成され、コンピュータ読み取り可能な記録媒体において具体的に表現されると考えられることも可能であり、そのように構成された記録媒体は、コンピュータに、上述した機能を実行させるための特定および予め定義された手法を動作させる。
【0113】
システムは、特許法に従い、かつ、新規の原理を利用するために当業者に必要とされる情報を提供し、かつ、要求されるような具体的な構成要素を構成し使用するするために、かなり詳細に記載されている。しかしながら、本発明は、具体的に異なる機器や装置によっても実現可能であり、機器の詳細と動作処理との両方での種々の変形が本発明のスコープから逸脱することなく実現可能であることが理解されるべきである。