(57)【特許請求の範囲】
【請求項１】
プロセッサが１以上の第１の仮想マシンを実行する周期に対する１周期あたりの前記１以上の第１の仮想マシンの実行時間の割合を求め、前記プロセッサが第１のトラフィックを処理した際に特定されて所定の記憶部に記憶されたスループットおよび第１のプロセッサ利用率と、前記第１の仮想マシン以外の第２の仮想マシンが処理する第２のトラフィックの量とから、前記第２の仮想マシンが前記第２のトラフィックを前記プロセッサで処理するために必要とする第２のプロセッサ利用率を計算し、前記第１の仮想マシンの前記第１のプロセッサ利用率および前記第２の仮想マシンに対する前記第２のプロセッサ利用率の合計を求め、前記割合と前記合計とから前記第２の仮想マシンを前記プロセッサを備える装置へ移動したとしてもプロセッサリソースが足りるか否かを判断するように構成されたスケジューラを備えることを特徴とする仮想ＯＳ制御装置。
【請求項２】
前記スループットと前記第１のプロセッサ利用率とを前記プロセッサを備える第１の装置から受信し、前記第２のトラフィックの量を第２の装置から受信し、受信した前記スループットおよび前記第１のプロセッサ利用率と前記第２のトラフィックの量とを前記スケジューラへ入力し、該スケジューラから前記第２のプロセッサ利用率を取得し、取得した前記第２のプロセッサ利用率を含むメッセージを前記１の装置へ送信するように構成されたコントローラをさらに備えることを特徴とする請求項１に記載の仮想ＯＳ制御装置。
【請求項３】
前記プロセッサを備える第１の装置および前記第２の仮想マシンを実行する第２の装置とネットワークを介して相互に接続された請求項１に記載の仮想ＯＳ制御装置であって、
前記合計を求めるように構成されたスケジューラと、
前記合計があらかじめ決められた値を超えない場合に、前記第２の装置から前記第１の装置へ前記第２の仮想マシンを移動するように前記第１および前記第２の装置へ指示するよう構成されたコントローラと、
をさらに備えることを特徴とする仮想ＯＳ制御装置。
【請求項４】
前記第２のプロセッサ利用率は、前記第２の仮想マシンを実行する装置において所定のネットワークを介したデータの送受信を実行するネットワーク処理部における処理のプロセッサ利用率であることを特徴とする請求項１に記載の仮想ＯＳ制御装置。
【請求項５】
前記第２のプロセッサ利用率は、前記第２の仮想マシンの仮想デバイスにおける処理のプロセッサ利用率であることを特徴とする請求項１に記載の仮想ＯＳ制御装置。
【請求項６】
請求項１に記載の仮想ＯＳ制御装置と、
前記仮想ＯＳ制御装置とネットワークを介して相互に接続された第１および第２の装置と、
を備え、
前記仮想ＯＳ制御装置は、前記スループットと前記第１のプロセッサ利用率とを前記プロセッサを備える前記第１の装置から受信し、前記第２のトラフィックの量を前記第２の装置から受信し、受信した前記スループットおよび前記第１のプロセッサ利用率と前記第２のトラフィックの量とを前記スケジューラへ入力し、該スケジューラから前記第２のプロセッサ利用率を取得し、取得した前記第２のプロセッサ利用率を含むメッセージを前記第１の装置へ送信するように構成されたコントローラをさらに備えることを特徴とするシステム。
【請求項７】
プロセッシングリソースをスケジューリングするコンピュータが実行する方法であって、
プロセッサが１以上の第１の仮想マシンを実行する周期に対する１周期あたりの前記１以上の第１の仮想マシンの実行時間の割合を求め、
前記プロセッサが第１のトラフィックを処理した際に特定されて所定の記憶部に記憶されたスループットおよび第１のプロセッサ利用率と、前記第１の仮想マシン以外の第２の仮想マシンが処理する第２のトラフィックの量とから、前記第２の仮想マシンが前記第２のトラフィックを前記プロセッサで処理するために必要とする第２のプロセッサ利用率を計算し、
前記第１の仮想マシンの前記第１のプロセッサ利用率および前記第２の仮想マシンに対する前記第２のプロセッサ利用率の合計を求め、
前記割合と前記合計とから前記第２の仮想マシンを前記プロセッサを備える装置へ移動したとしてもプロセッサリソースが足りるか否かを判断する
ことを含むことを特徴とする仮想ＯＳ制御方法。
【請求項８】
プロセッシングリソースをスケジューリングするコンピュータを機能させるためのプログラムであって、
プロセッサが１以上の第１の仮想マシンを実行する周期に対する１周期あたりの前記１以上の第１の仮想マシンの実行時間の割合を求める処理と、
前記プロセッサが第１のトラフィックを処理した際に特定されて所定の記憶部に記憶されたスループットおよび第１のプロセッサ利用率と、前記第１の仮想マシン以外の第２の仮想マシンが処理する第２のトラフィックの量とから、前記第２の仮想マシンが前記第２のトラフィックを前記プロセッサで処理するために必要とする第２のプロセッサ利用率を計算する処理と、
前記第１の仮想マシンの前記第１のプロセッサ利用率および前記第２の仮想マシンに対する前記第２のプロセッサ利用率の合計を求める処理と、
前記割合と前記合計とから前記第２の仮想マシンを前記プロセッサを備える装置へ移動したとしてもプロセッサリソースが足りるか否かを判断する処理と、
を前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、仮想ＯＳ制御装置、システム、方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、１つのノード上で複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を実行可能とする仮想化技術が知られている。また、仮想ＯＳの負荷を分散させる技術も存在する。
【０００３】
しかしながら、従来技術は、システムにおける仮想マシンの配置をそれぞれの負荷のみを基にして決定していた。そのため、あるノードにおいて実行されている仮想マシンを他のノードへ移動する場合、たとえば移動先のノードにおけるネットワーク処理にプロセッサリソースを消費するため、全てのタスクに対して十分なプロセッサリソースを確保できるとは限らなかった。特に、移動対象となるタスクや移動先のノードにおいて実行されているタスクにリアルタイム性が求められている場合では、プロセッサリソースの不足によってタスク自体が機能しないという不具合が生じる場合があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２７６３２０号公報
【特許文献２】特許第４７４８２８６号公報
【非特許文献】
【０００５】
【非特許文献１】Jaewoo Lee, Sisu Xi, Sanjian Chen, Linh T.X. Phan, Christopher Gill, Insup Lee, Chenyang Lu, and Oleg Sokolsky, “Realizing Compositional Scheduling through Virtualization”, IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), April, 2012
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以下の実施形態では、タスクの移動後に移動先のノードが全てのタスクの要件をみたすことができるか否かをタスクの移動前に判定することが可能な仮想ＯＳ制御装置、システム、方法およびプログラムを提供する。
【課題を解決するための手段】
【０００７】
実施の形態による仮想ＯＳ制御装置は、プロセッサが１以上の第１の仮想マシンを実行する周期に対する１周期あたりの前記１以上の第１の仮想マシンの実行時間の割合を求め、前記プロセッサが第１のトラフィックを処理した際に特定されて所定の記憶部に記憶されたスループットおよび第１のプロセッサ利用率と、前記第１の仮想マシン以外の第２の仮想マシンが処理する第２のトラフィックの量とから、前記第２の仮想マシンが前記第２のトラフィックを前記プロセッサで処理するために必要とする第２のプロセッサ利用率を計算し、前記第１の仮想マシンの前記第１のプロセッサ利用率および前記第２の仮想マシンに対する前記第２のプロセッサ利用率の合計を求め、前記割合と前記合計とから前記第２の仮想マシンを前記プロセッサを備える装置へ移動したとしてもプロセッサリソースが足りるか否かを判断するように構成されたスケジューラを備えることを特徴とする。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る情報処理システムの概略構成例を示すブロック図。
【図２】図２は、周期タスクの要件の定義をより詳細に説明するための図。
【図３】図３に、実施形態に係る記憶部が記憶するシステムパラメータの一例を示す図。
【図４】図４は、実施形態に係る記憶部が記憶するタスクの要件およびトラフィック量の例を示す図。
【図５】図５は、実施形態に係る情報処理システムの動作を示すシーケンス図。
【図６】図６は、図５のステップＳ１６におけるスケジューラの動作を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下に、実施形態に係る仮想ＯＳ制御装置、システム、方法およびプログラムについて説明する。図１は、実施形態に係る情報処理システムの概略構成例を示す。
【００１０】
図１に示すように、実施形態に係る情報処理システム１００は、１以上のノード１３０および１６０と、ネットワーク１１５と、管理サーバ１２０、クライアント１１０とを備える。
【００１１】
管理サーバ１２０は、通信部１２４と、コントローラ１２１と、スケジューラ１２２と、記憶部１２３とを含む。通信部１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）処理部、ＴＣＰ／ＩＰスタック、ＨＴＴＰサーバなどを有する。通信部１２４の各部は、ソフトウエアまたはハードウエアで構成され得る。コントローラ１２１は、ノード１３０および１６０の各ハイパーバイザ（Ｈｙｐｅｒｖｉｓｏｒ）１３２および１６２と通信し、仮想マシン１４０、１５０および１７０を制御する。例えば、コントローラ１２１は、ノード１３０において新たな仮想マシン１４０および１５０を作成するようにハイパーバイザ１３２に指示する。
【００１２】
また、コントローラ１２１は、あるノード１３０で実行されている仮想マシン１４０および１５０のうち１以上を別のノード１６０へ移動するように、ハイパーバイザ１３２へ指示し得る。同様に、コントローラ１２１は、ノード１６０で実行されているタスク１７２および１７３のうち１以上を別のノード１３０へ移動するようにも、ハイパーバイザ１６２へ指示し得る。
【００１３】
スケジューラ１２２は、各ノード１３０および１６０で実行されている仮想マシン１４０、１５０および１７０と、仮想デバイス１４４、１５４および１７４と、ネットワーク処理部１３３とにそれぞれ割り当てるリソースを求める。タスクの要件およびリソースの定義は後述する。
【００１４】
また、スケジューラ１２２は、１以上のタスクの要件をコントローラ１２１から取得し、取得したタスク要件に基づいて、それぞれの仮想マシン１４０、１５０および１７０に割り当てるリソースを求める。また、スケジューラ１２２は、求めたリソースをコントローラ１２１に出力する。
【００１５】
ここで、実施形態では、タスク１４２、１４３、１５２、１５２、１７２および１７３がそれぞれ周期タスクであるとする。周期タスクとは、一定間隔ごとに一定量以内の処理を実行することが要求されるタスクである。
【００１６】
図２を用いて、周期タスクの要件の定義をより詳細に説明する。図２に示すＴＳＫは、周期タスクの例を示す。斜線部は、プロセッサが周期タスクＴＳＫを実行する期間を示す。また、ＤＬは周期タスクＴＳＫに対するデッドラインを示す。ＤＬの間隔は一定である。周期タスクＴＳＫの要件は、ＤＬの周期ｐと、周期タスクＴＳＫの処理に要する最大処理時間ｅとの組（ｐ，ｅ）で定義される。周期ｐと最大処理時間ｅとの単位は、例えば周期タスクＴＳＫを止めずに実行し続けることが可能な最短の時間で決定される。
【００１７】
周期タスクＴＳＫが正常動作を続けるためには、プロセッサが、必ず周期ｐ毎に最大処理時間ｅ以上、周期タスクＴＳＫを実行する必要がある。例えば、周期ｐと最大処理時間ｅとの単位が１ｍｓ（ミリ秒）であって、ある周期タスクＴＳＫの要件が（１，２００）である場合、プロセッサは、周期タスクＴＳＫを正常に動作させ続けるために、２００ｍｓごとに１ｍｓは必ず周期タスクＴＳＫを実行する必要がある。その際、プロセッサは、実行時間ｅ１０１およびｅ１０２で示すように、周期ｐの間に２回以上に分けて周期タスクＴＳＫを実行してもよい。但し、その場合でも、実行時間ｅ１０１およびｅ１０２の合計は、最大処理時間ｅ以上である必要がある。
【００１８】
実施形態に係る情報処理システム１００において、ノード１３０のプロセッサ１３１は、実行タスクを切り替えることで１以上のタスクを並行に実行する。但し、これに限らず、複数のタスクを同時に実行可能とするために、ノード１３０が複数のプロセッサ１３１を備えてもよい。
【００１９】
ＯＳ１４１は、必要に応じて仮想マシン１４０内のタスク１４２および１４３を切り替えるようにハイパーバイザ１３２またはプロセッサ１３１に指示する。また、同様に、ＯＳ１５１は、仮想マシン１５０内のタスク１５２および１５３を切り替えるようにハイパーバイザ１３２またはプロセッサ１３１に指示する。ＯＳ１４１が切り替えを指示するタスクは、仮想マシン１４０内で実行されるタスク１４２および１４３に限られる。同様に、ＯＳ１５１が切り替えを指示するタスクは、仮想マシン１５０内で実行されるタスク１５２および１５３に限られる。
【００２０】
また、ハイパーバイザ１３２は、必要に応じて実行する仮想マシンを切り替えるように、プロセッサ１３１に指示する。例えば、ハイパーバイザ１３２は、実行する仮想マシンを仮想マシン１５０から仮想マシン１４０に切り替える。選択された仮想マシン１４０のＯＳ１４１は、実行するタスクをタスク１４２および１４３のうちのいずれかに切り替える。ノード１６０および仮想マシン１５０、１７０も同様に、仮想ＯＳおよびタスクを切り替える。以上により、階層的にスケジューリングが実行される。
【００２１】
例えばプロセッサ１３１が仮想マシン１４０を実行する場合、仮想マシン１４０に割り当てられるリソースは、プロセッサ１３１が仮想マシン１４０を実行する周期Πと、１周期あたりの実行時間Θとの組（Π，Θ）で定義される。つまり、リソース（Π，Θ）が与えられた仮想マシンは、周期Π毎に合計Θ時間実行される。周期Πおよび時間Θの単位は、例えば仮想マシンに割り当てることができる最短の時間で定義される。
【００２２】
また、図１に示す管理サーバ１２０の記憶部１２３は、各ノード１３０および１６０のシステムパラメータを記憶する。図３に、記憶部１２３が記憶するシステムパラメータの一例を示す。図３に示すように、システムパラメータは、ノードＩＤ、プロセッサのパフォーマンス値、スループット、およびプロセッサ利用率を含む。ノードＩＤは、ノード１３０および１６０を一意に識別するための識別子である。プロセッサ１３１および１６０のパフォーマンス値は、それぞれの処理速度であってよい。例えば、プロセッサ１３１のパフォーマンス値は、プロセッサ１３１がある一定量の処理を実行したときの時間と、基準となるプロセッサが同じ量の処理を実行したときの時間との比率で表される。例えば、基準となるプロセッサがある一定量の処理を実行したときの時間がｄ１であり、図１に示すプロセッサ１３１が同じ処理を実行したときの時間がｄ２であるとき、プロセッサ１３１のパフォーマンス値はｄ１／ｄ２となる。プロセッサ１６０のパフォーマンス値の定義も同様である。
【００２３】
スループットは、１秒当たりに各ノードが処理可能なフレーム数または通信データ量である。プロセッサ利用率は、ネットワーク処理部および仮想デバイスのそれぞれが図３に示すスループットを得るために必要なプロセッサの利用率である。図３の例において、システムパラメータは、ネットワーク処理部１３３、ネットワーク処理部１６３、仮想デバイス１４４、および１７４に対するプロセッサ利用率を含む。仮想デバイス１５４は、仮想デバイス１４４と同等の構成である。そこで、仮想デバイス１５４のプロセッサ利用率は、仮想デバイス１４４のプロセッサ利用率と同じであるため、図３に示すシステムパラメータ仮想デバイス１５４のプロセッサ利用率を含まない。但し、本形態の実施にあたっては、システムパラメータは全ての仮想デバイスのプロセッサ利用率を含んでもよい。
【００２４】
また、記憶部１２３は、プロセッサＩＤ、仮想マシンのＩＤ、およびタスクのＩＤとともに、各タスクの要件および仮想マシンが送受信するトラフィック量を記憶する。図４に、記憶部１２３が記憶するタスクの要件およびトラフィック量の例を示す。図４に示すように、トラフィック量は、各仮想マシンが１秒あたりに送受信するフレーム数を表す。本実施形態の例において、記憶部１２３は、仮想マシン１４０、１５０、および１７０が送受信するトラフィック量を記憶する。なお、図４に示す周期ｐおよび実行時間ｅの値はともに自然数であるが、これに限られるものではなく、正の数であればよい。また、周期ｐおよび実行時間ｅの値は、どのような形式で記されてもよい。
【００２５】
図１に示すノード１３０および１６０は、物理メモリ（図示せず）およびプロセッサ１３１または１６１を備えた計算機である。図１に示す例では、ノード１３０は、ソフトウエアまたはハードウエアで構成されたハイパーバイザ１３２と、仮想マシン１４０および１５０とを備える。また、ノード１６０は、同じくソフトウエアまたはハードウエアで構成されたハイパーバイザ１６２と、仮想マシン１７０とを備える。
【００２６】
ノード１３０のハイパーバイザ１３２は、ノード１３０上で１以上のＯＳ１４１および１５１を実行可能とするために、仮想マシン１４０および１５０を含む１以上の仮想マシンを実行する。また、ハイパーバイザ１３２は、ネットワーク処理部１３３を備える。同様に、ノード１６０のハイパーバイザ１６２は、ネットワーク処理部１６３を備えるとともに、ノード１６０上で１以上のＯＳ１７１を実行可能とするために、仮想マシン１７０を含む１以上の仮想マシンを実行する。
【００２７】
各仮想マシン１４０は、ＯＳ１４１、タスク１４２、およびタスク１４３を実行する。同様に、仮想マシン１５０は、ＯＳ１５１、タスク１５２、および１５３を実行する。仮想マシン１７０は、タスク１７１、１７２および１７３を含む１以上のタスクを実行する。ＯＳ１４１、１５１および１７１、ならびに、タスク１４２、１４３、１５２、１５３、１７２および１７３は、例えばソフトウエアで構成される。
【００２８】
また、各仮想マシン１４０は仮想デバイス１４４を備える。各仮想デバイス１４４は、ネットワーク処理部１３３とＯＳ１４１との間でフレームを受け渡す。同様に、仮想マシン１５０は仮想デバイス１５４を備え、仮想マシン１７０は仮想デバイス１７４を備える。
【００２９】
つぎに、図５に示すシーケンス図を用いて、実施形態に係る情報処理システム１００の動作を説明する。図５に示すように、まず、ステップＳ１１において、管理サーバ１２０が、ノード１３０からシステムパラメータを取得する。
【００３０】
具体的には、管理サーバ１２０のコントローラ１２１は、メッセージ２００１を通信部１２４へ渡す。メッセージ２００１には、ノード１３０のシステムパラメータを要求する記述が含まれている。管理サーバ１２０の通信部１２４は、メッセージ２００１にＥｔｈｅｒｎｅｔ（登録商標）、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などといったプロトコル処理を施し、図１に示すネットワーク１１５を介してノード１３０へメッセージを送信する。以後、管理サーバ１２０のコントローラ１２１がノード１３０および１６０へメッセージを送信するステップでは、同様に、通信部１２４がメッセージにＥｔｈｅｒｎｅｔ（登録商標）、ＴＣＰ、ＩＰ、ＨＴＴＰなどといったプロトコル処理を施すものとする。また、プロトコル処理後のメッセージは、ネットワーク１１５を介して送信されるものとする。
【００３１】
メッセージ２００１を受信したノード１３０は、メッセージ２００２をネットワーク１１５を介して管理サーバ１２０へ送信する。メッセージ２００２には、ノード１３０のシステムパラメータが含まれる。管理サーバ１２０の通信部１２４は、メッセージ２００２にＥｔｈｅｒｎｅｔ（登録商標）、ＴＣＰ、ＩＰ、ＨＴＴＰなどといったプロトコル処理を施し、処理後のメッセージをコントローラ１２１へ渡す。以後、管理サーバ１２０のコントローラ１２１がメッセージを受信するステップでは、同様に、通信部１２４がメッセージにＥｔｈｅｒｎｅｔ（登録商標）、ＴＣＰ、ＩＰ、ＨＴＴＰなどといったプロトコル処理を施すものとする。メッセージ２００２を受信したコントローラ１２１は、メッセージ２００２に含まれるシステムパラメータを記憶部１２３に記憶する。
【００３２】
次に、ステップＳ１２において、管理サーバ１２０は、システムパラメータを要求する記述を含むメッセージ２００３と、ノード１６０のシステムパラメータを含むメッセージ２００４とを用いて、ノード１６０からシステムパラメータを取得し、記憶部１２３に記憶する。このステップＳ１２の処理は、ステップＳ１１の処理と同様であってよい。
【００３３】
次に、ステップＳ１３において、管理サーバ１２０は、ノード１３０からタスク１４２、１４３、１５２および１５３の要件と、仮想マシン１４０および１５０のトラフィック量とを取得する。具体的には、管理サーバ１２０のコントローラ１２１は、メッセージ２００５をノード１３０へ送信する。メッセージ２００５には、ノード１３０が実行している１以上のタスク１４２、１４３、１５２および１５３の要件を要求する記述と、仮想マシン１４０および１５０のトラフィック量を要求する記述とが含まれる。ノード１３０は、メッセージ２００５を受信すると、メッセージ２００６を管理サーバ１２０へ送信する。このメッセージ２００６には、ノード１３０で動作する１以上のタスク１４２、１４３、１５２および１５３の要件と、仮想マシン１４０および１５０のトラフィック量とが含まれる。管理サーバ１２０がメッセージ２００６を受信すると、管理サーバ１２０のコントローラ１２１は、メッセージ２００６に記されたタスクの要件およびトラフィック量を記憶部１２３に記憶する。
【００３４】
次に、ステップＳ１４において、管理サーバ１２０は、タスクの要件およびトラフィック量を要求する記述を含むメッセージ２００７を送信し、ノード１６０が実行するタスク１７２および１７３の要件および仮想マシン１７０のトラフィック量を含むメッセージ２００８を、ノード１６０からを受信する。このステップＳ１４の処理は、ステップＳ１３の処理と同様であってよい。
【００３５】
次に、ステップＳ１５において、クライアント１１０は、メッセージ２００９を管理サーバ１２０へ送信する。メッセージ２００９には、仮想マシン１７０の仮想マシンＩＤ、ノード１６０のノードＩＤ、ノード１３０のノードＩＤ、および仮想マシンの移動を指示するコードが含まれる。
【００３６】
管理サーバ１２０がメッセージ２００９を受信すると、管理サーバ１２０のコントローラ１２１は、仮想マシン１７０の仮想マシンＩＤ、ノード１６０のノードＩＤ、ノード１３０のノードＩＤ、記憶部１２３に記憶されたシステムパラメータおよびタスクの要件をスケジューラ１２２へ渡す。
【００３７】
次に、ステップＳ１６において、管理サーバ１２０のスケジューラ１２２は、仮想マシン１４０、１５０および１７０と、ネットワーク処理部１３３と、仮想デバイス１４４、１５４および１７４とに対する最適なリソースを計算し、リソースが足りるか否かを判断する。このステップＳ１６におけるスケジューラ１２２の動作の詳細は、後述において詳細に説明する。
【００３８】
ステップＳ１６の判定において、スケジューラ１２２がリソースは十分であると判断した場合、管理サーバ１２０のコントローラ１２１は、ステップＳ１７において、ノード１３０へ仮想マシン１７０の移動を指示する。具体的には、管理サーバ１２０のコントローラ１２１は、メッセージ２０１０をノード１３０へ送信する。このメッセージ２０１０には、仮想マシン１７０のノードＩＤが含まれる。ノード１３０は、メッセージ２０１０を受信すると、メッセージ２０１１を管理サーバ１２０へ送信する。このメッセージ２０１１には、仮想マシン１７０の移動を了承したか否かを示すコードが含まれる。
【００３９】
次に、ステップＳ１８において、管理サーバ１２０のコントローラ１２１は、ノード１６０へ仮想マシン１７０の移動を指示する。具体的には、管理サーバ１２０のコントローラ１２１は、メッセージ２０１２をノード１６０へ送信する。このメッセージ２０１２には、仮想マシン１７０のノードＩＤが含まれる。ノード１６０は、メッセージ２０１２を受信すると、メッセージ２０１３を管理サーバ１２０へ送信する。このメッセージ２０１３には、仮想マシン１７０の移動を了承したか否かを示すコードが含まれる。
【００４０】
次に、ステップＳ１９において、ノード１６０は、ノード１３０へ仮想マシン１７０のイメージ２０１４を送信する。仮想マシン１７０のイメージ２０１４は、仮想マシンの実行メモリイメージを含んでもよい。ノード１３０は、イメージ２０１４を受信すると、仮想マシン１７０の実行メモリイメージをメモリ（図示せず）に読み込み、実行を開始する。つづいて、ノード１３０は、仮想マシン１７０の移動を完了したことを示すコードを含むメッセージ２０１５を管理サーバ１２０に送信する。管理サーバ１２０のコントローラ１２１は、メッセージ２０１５を受信すると、メッセージ２０１６をクライアント１１０に送信する。このメッセージ２０１６には、仮想マシン１７０の移動が完了したことを示すコードが含まれる。
【００４１】
以上のようにして、ノード１６０において実行されていた仮想マシン１７０のノード１３０への移動が完了する。
【００４２】
次に、図６に示すフローチャートを用いて、図５のステップＳ１６におけるスケジューラ１２２の動作を説明する。ノード１３０のプロセッサ１３１のパフォーマンス値は、ノード１６０のプロセッサ１６１のパフォーマンス値は異なる。そのため、仮想マシン１７０にノード１６０で割り当てられていたリソースは、ノード１３０において最適でない場合がある。
【００４３】
そこで、図６に示すように、スケジューラ１２２は、仮想マシン１４０、１５０および１７０に割り当てる最適なリソースを計算する（ステップＳ２１）。
【００４４】
最適なリソースの計算方法は、ハイパーバイザ１３２が仮想マシン１４０、１５０および１７０をスケジューリングする方法と、仮想ＯＳ１４１、１５１および１７１のスケジューリング方法とに依存する。ハイパーバイザ１３２および仮想ＯＳ１４１、１５１および１７１がそれぞれレートモノトニックスケジューリング（Ｒａｔｅ  Ｍｏｎｏｔｏｎｉｃ  Ｓｃｈｅｄｕｌｉｎｇ：ＲＭＳ）に従ってスケジューリングを実行する場合、スケジューラ１２２は、例えば非特許文献１が開示する方法を用いてそれぞれの仮想マシン１４０、１５０および１７０に最適なリソースを計算してもよい。
【００４５】
次に、スケジューラ１２２は、ステップＳ２２およびＳ２３において、それぞれ仮想マシン１４０、１５０および１７０が送受信するトラフィックの処理に割り当てるリソースを計算する。
【００４６】
仮想マシン１４０が送受信するトラフィックの処理は、ネットワーク処理部１３３における処理と仮想デバイス１４４における処理とに分けられる。同様に、ネットワーク処理部１３３と仮想デバイス１５４は、仮想マシン１５０が送受信するトラフィックを処理する。さらに、ネットワーク処理部１３３と仮想デバイス１７４は、仮想マシン１７４がノード１３０において送受信するトラフィックを処理する。スケジューラ１２２は、それぞれの処理に対してリソースを計算する。
【００４７】
ネットワーク処理部１３３と仮想デバイス１４４、１５４および１７４とに割り当てられるリソースの定義は、仮想マシン１４０、１５０および１７０に割り当てられるリソースと異なり、プロセッサの利用率で表される。スケジューラ１２２は、記憶部１２３に記憶されたシステムパラメータ、およびそれぞれの仮想マシン１４０、１５０および１７０が送受信するトラフィック量を用いて、ネットワーク処理部１３３に割り当てるリソースを計算する（ステップＳ２２）。
【００４８】
なお、ノード１３０は、複数のプロセッサを用いて、ネットワーク処理部１３３の処理を並列に実行してもよい。例えば、フレームの宛先アドレスまたは送信元アドレスに基づいてそれぞれのプロセッサが処理するフレームを決めるように、ノード１３０が構成されてもよい。その際、ネットワーク処理部１３３に割り当てるリソースは、プロセッサごとに異なっていてもよい。なお、ノード１６０も同様に、複数のプロセッサを用いてネットワーク処理部１６３の処理を実行してもよい。
【００４９】
スケジューラ１２２は、以下の式（１）を用いて、各プロセッサＣがネットワーク処理部１１５を実行するために使用するリソースΓｎｗ（Ｃ）を求める。
【数１】
0005646560.tif 000002
式（１）において、仮想マシン１７０の移動前にノード１３０で動作するｎ台の仮想マシン（仮想マシン１４０、１５０等）をＶＭ（１），ＶＭ（２），．．．，ＶＭ（ｎ）とする。また、移動する仮想マシン１７０をＶＭ（ｎ＋１）とする。Ｔｖｍ（ｉ）は、仮想マシンＶＭ（ｉ）のトラフィック量である。Ｔｈは、システムパラメータの一部である、ノード１３０におけるスループットである。例えば、図３に示すトラフィック量の場合、Ｔｈは６７８３６５ｆｐｓである。Ｕｎｗは、システムパラメータの一部である、ネットワーク処理部のプロセッサ利用率である。例えば、図３に示すシステムパラメータの場合、Ｕｎｗは０．３８８８である。Ｓｖｍ（Ｃ）は、プロセッサＣが処理するフレームの送信元または送信先の仮想マシンの集合である。Ｓｖｍ（Ｃ）は、集合｛ＶＭ（１），ＶＭ（２），．．．，ＶＭ（ｎ），ＶＭ（ｎ＋１）｝と等しくてもよいし、異なっていてもよい。
【００５０】
その後、スケジューラ１２２は、記憶部１２３に記憶されたシステムパラメータ、およびそれぞれ仮想マシン１４０、１５０および１７０が送受信するトラフィック量を用いて、仮想デバイス１４４、１５４および１７４に割り当てるリソースを計算する（ステップＳ２３）。
【００５１】
なお、仮想デバイスは仮想マシン１４０、１５０および１７０にそれぞれ少なくとも１つ備えられる。そこで、図１に示すノード１３０のように、ノードが複数のプロセッサ１３１を備える場合、２以上のプロセッサが仮想デバイス１４４および１５４のそれぞれを並列に実行してもよい。例えば、仮想マシン１７０の移動後、仮想デバイス１４４、１５４および１７４の合計の処理負荷が、１つのプロセッサ１３１の能力を超える場合、それぞれの仮想デバイス１４４、１５４および１７４に１つずつのプロセッサ１３１を割り当ててもよい。
【００５２】
スケジューラ１２２は、以下の式（２）を用いて、あるプロセッサＣが実行する１以上の仮想デバイスに割り当てるリソース量の総量Γｖｄ（Ｃ）を計算する。
【数２】
0005646560.tif 000003
【００５３】
式（２）において、Ｓｖｄ（Ｃ）は、プロセッサＣが実行する仮想デバイスが属す仮想マシンの集合を示す。Ｕｖｄは、システムパラメータにおける仮想デバイスのプロセッサ利用率とする。例えば、ノード１３０へ仮想マシン１７０を移動する場合で、かつシステムパラメータが図３に示すデータの場合、Ｕｖｄは０．８３８９である。
【００５４】
次に、スケジューラ１２２は、リソースが足りるか否かを判断する（ステップＳ２４）。フレームの処理遅延の変動を極力抑えるために、ノード１３０は、仮想マシン１４０、１５０および１７０、ネットワーク処理部１３３、それぞれの仮想デバイス１４４、１５４および１７４の処理が異なるプロセッサで実行されるように構成されてもよいし、同じプロセッサで実行されるよう構成されてもよい。
【００５５】
ここで、ステップＳ２１で計算された、あるプロセッサＣが実行する全ての仮想マシンに必要なリソースΓをΓ（Ｃ）＝（Π（Ｃ），Θ（Ｃ））とし、その占有率をΨ（Ｃ）＝Π（Ｃ）／Θ（Ｃ）とする。すると、スケジューラ１２２は、Ψ（Ｃ）＋Γｖｍ（Ｃ）＋Γｖｄ（Ｃ）が１を超えるプロセッサＣが存在する場合、ステップＳ２４の結果として偽を出力する（ステップＳ２４；ＦＡＬＳＥ）。Ψ（Ｃ）＋Γｖｍ（Ｃ）＋Γｖｄ（Ｃ）が１を超えるプロセッサＣが存在しない場合、スケジューラ１２２は、ステップＳ２４の結果として真を出力する（ステップＳ２４；ＴＲＵＥ）。なお、プロセッサＣが実行する全ての仮想マシンに必要なリソースΓ（Ｃ）は、仮想マシンに最適なリソースの占有率の総和に等しいとは限らない。
【００５６】
ハイパーバイザ１３２と、仮想ＯＳ１４１および１５１と、仮想マシン１７０内の仮想ＯＳ１７１とがともにＲＭＳに従いスケジューリングを実行する場合、スケジューラ１２２は、例えば非特許文献１に従い、Γ（Ｃ）を計算してもよい。
【００５７】
次に、スケジューラ１２２は、ステップＳ２４の結果が真の場合、各処理に割り当てられたリソースをコントローラ１２１に返す（ステップＳ２５）。一方、ステップＳ２４の結果が偽の場合、スケジューラ１２２は、コントローラ１２１にエラーを返す（ステップＳ２６）。
【００５８】
以上のようにして、図５におけるステップＳ１６の処理によって、仮想マシン１４０、１５０および１７０と、ネットワーク処理部１３３と、仮想デバイス１４４、１５４および１７４とに対する最適なリソースが計算され、リソースが足りるか否かが判断される。
【００５９】
異なるノードのネットワーク処理部および仮想デバイスに必要なリソースは、ネットワーク処理部および仮想デバイスの構成方法と、それぞれのノードが備えるプロセッサのパフォーマンスにより異なる。そこで、実施形態のように、図６のステップ２１に加えて、ステップＳ２２およびＳ２３の一方または両方を実行することで、例え構成が異なるノード間で仮想マシンを移動する場合であっても、仮想マシンの移動前に、移動先ノードにおいて必要となるリソースをより正確に見積ることが可能となる。これにより、ユーザは仮想マシンの移動が可能であるか否かを事前に知ることができ、その結果、移動先であるノード１３０におけるリソース不足の発生を未然に防ぐことができる。
【００６０】
また、実施形態では、管理サーバ１２０は、ステップＳ１５〜Ｓ１９の一連のステップと、ステップＳ１１、Ｓ１２、Ｓ１３およびＳ１４とを異なるタイミングで実行してもよい。例えば、管理サーバ１２０は、メッセージ２００９の受信を契機に、ステップＳ１１〜ステップＳ１４のいずれかまたは全てを順不同で実行してもよい。
【００６１】
また、実施形態では、管理サーバ１２０は、ステップＳ１１〜Ｓ１４のいずれかまたは全てを実施しなくてもよい。例えば、システムパラメータおよびタスクの要件があらかじめ管理サーバ１２０の記憶部１２３に記憶されている場合、ステップＳ１１〜Ｓ１４を省略できる。その場合、管理サーバ１２０の処理を短縮できる。例えば、管理サーバ１２０のコントローラ１２１は、ある仮想マシンを移動するときまたは生成するときに、システムパラメータまたはタスクの要件を取得し、記憶部１２３に記憶してもよい。
【００６２】
また、実施形態では、管理サーバ１２０およびノード１３０は、ステップＳ１１およびＳ１３を統合してもよい。例えば、管理サーバ１２０があるメッセージをノード１３０へ送信し、ノード１３０が管理サーバ１２０へシステムパラメータおよびタスクの要件を含むメッセージを送信してもよい。同様に、管理サーバ１２０およびノード１６０は、ステップＳ１２とステップＳ１４を統合してもよい。
【００６３】
さらに、管理サーバ１２０は、ステップＳ１６をステップＳ１５よりも前に実行してもよい。例えば、管理サーバ１２０は、記憶部１２３に記憶されたシステムパラメータおよびタスクの要件の一部または全てを用いて、それぞれの仮想マシンを移動した場合に必要となるリソースをあらかじめ計算して記憶部１２３に記憶しておき、メッセージ２００９を受信したときに記憶しておいたリソースをステップＳ１６の実行結果の代わりとして用いてもよい。これにより、クライアント１１０に対する、メッセージ２００９を受信してからメッセージ２０１６を送信するまでの時間を短縮することができる。
【００６４】
実施形態において、プロセッサ１３１および１６１はそれぞれ１つのコアを備え、ノード１３０および１６０はそれぞれ１以上のプロセッサを備える。ただし、本形態の実施にあたってはこれらに限定されず、プロセッサ１３１および１６１がそれぞれ複数のコアを備えてもよい。これにより、各プロセッサ１３１および１６１において、複数の処理を同時に実行することが可能となる。
【００６５】
プロセッサ１３１がそれぞれ複数のコアを備える場合、スケジューラ１２２は、プロセッサ１３１のリソースを計算するのではなく、コアごとにリソースの過不足を判断してもよい。
【００６６】
また、実施形態において、仮想デバイス１４４、１５４または１７４がネットワーク処理部１３３を経由せずに直接ネットワークインタフェース（図示せず）からフレームを取得するようにノード１３０が構成されている場合、スケジューラ１２２は、ステップＳ２２におけるネットワーク処理部１３３に必要なリソースの計算を省略して‘０’としてもよい。
【００６７】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１００…情報処理システム、１１０…クライアント、１１５…ネットワーク、１２０…管理サーバ、１２１…コントローラ、１２２…スケジューラ、１２３…記憶部、１２４…通信部、１３０，１６０…ノード、１３１，１６１…プロセッサ、１３２，１６２…ハイパーバイザ、１３３，１６３…ネットワーク処理部、１４０，１５０，１７０…仮想マシン、１４１，１５１，１７１…ＯＳ、１４２，１４３，１５２，１５３，１７２，１７３…タスク、１４４，１５４，１７４…仮想デバイス、ＴＳＫ…周期タスク、ＤＬ…デッドライン、ｅ１０１，ｅ１０２…実行時間、２００１〜２０１３，２０１５，２０１６…メッセージ、２０１４…イメージ
【図１】
0005646560.tif 000004
【図２】
0005646560.tif 000005
【図３】
0005646560.tif 000006
【図４】
0005646560.tif 000007
【図５】
0005646560.tif 000008
【図６】
0005646560.tif 000009