(57)【要約】【課題】効率的に仮想マシンに割り当てるリソースを求めること。【解決手段】実施形態による装置は、第１の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第１の端末装置における第１のプロセッサのパフォーマンス値と、第２の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第２の端末装置における第２のプロセッサのパフォーマンス値とを用いて、前記第２のプロセッサのリソースが前記第２の端末装置における前記１以上の仮想マシンに前記第１の端末装置における少なくとも１つの仮想マシンを加えた集合に足りると判断した場合、該少なくとも１つの仮想マシンを前記第２の端末装置へ移動させるように前記第１および第２の端末装置へ指示するように構成されたコントローラを備える。【選択図】図１
2014038458.tif 000002
【特許請求の範囲】
【請求項１】
第１の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第１の端末装置における第１のプロセッサのパフォーマンス値と、第２の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第２の端末装置における第２のプロセッサのパフォーマンス値とを用いて、前記第２のプロセッサのリソースが前記第２の端末装置における前記１以上の仮想マシンに前記第１の端末装置における少なくとも１つの仮想マシンを加えた集合に足りると判断した場合、該少なくとも１つの仮想マシンを前記第２の端末装置へ移動させるように前記第１および第２の端末装置へ指示するように構成されたコントローラを備えることを特徴とするスケジューリング装置。
【請求項２】
前記スケジューリング装置は、前記第２のプロセッサに関してリソース需要量に対するリソース供給量を比較する２以上のチェックポイントを求め、前記２以上のチェックポイントにおける第１のチェックポイントと１以上のタスクの要件を含む第１の集合とに対する第１のリソース需要量および第１のリソース供給量を求め、前記第１のリソース需要量が前記第１のリソース供給量以下の場合、前記第１の集合にさらに別のタスクの要件を加えた第２の集合と前記第１のチェックポイントとに対する第２のリソース需要量および第２のリソース供給量を求め、前記第１または第２のリソース需要量が前記第１または第２のリソース供給量よりも大きい場合、前記第１または第２の集合と前記第１のチェックポイントよりも大きい第２のチェックポイントとに対する第３のリソース需要量および第３のリソース供給量を求め、前記第１または第２の集合に対してリソース需要量がリソース供給量よりも少なくなるチェックポイントが少なくとも１つ存在する場合、リソースが前記第１または第２の集合に含まれる前記１以上のタスクを含む仮想マシンの集合に足りると判断することを特徴とする請求項１に記載のスケジューリング装置。
【請求項３】
前記スケジューリング装置は、仮想マシンを実行する第１の周期および１周期あたりの第１の実行時間が前記仮想マシンの実行に足りる条件を満たすか否かを判断し、前記第１の周期および前記第１の実行時間が前記条件を満たす場合、前記第１の周期に１単位加えた第２の周期および前記第１の実行時間が前記条件を満たすか否かを判断し、前記第１の周期および前記第１の実行時間が前記条件を満たさない場合、前記第１の周期および前記第１の実行時間に１単位加えた第２の実行時間が前記条件を満たすか否かを判断し、前記条件を満たす周期および実行時間の組のうち、前記周期に対する前記実行時間の割合が最も少ない前記周期および前記実行時間を求めることを特徴とする請求項１に記載のスケジューリング装置。
【請求項４】
請求項１〜３のいずれか一つに記載のスケジューリング装置と、
前記スケジューリング装置とネットワークを介して接続された１以上の端末装置と、
を備え、
前記スケジューリング装置は、前記１以上のタスクの要件およびプロセッサのパフォーマンス値を前記ネットワークに接続された第１の端末装置および第２の端末装置から受信し、
前記スケジューラは、前記１以上のタスクの要件と前記パフォーマンス値とを用いて前記１以上のタスクを実行する１以上の仮想マシンの要件を求め、該仮想マシンの要件を用いて前記第２の端末装置のプロセッサのリソースが前記仮想マシンの集合に足りるか否かを判断し、
前記コントローラは、前記リソースが前記仮想マシンの集合に足りると判断した場合、前記第１の端末装置で実行されている前記仮想マシンの集合のうち少なくとも１つの第１の仮想マシンを前記第２の端末装置へ移動させるように前記第１および前記第２の端末装置へ指示し、
前記第１の端末装置は、前記第２の端末装置へ前記第１の仮想マシンを送信し、
前記第２の端末装置は、前記第１の仮想マシンを実行する
ことを特徴とするシステム。
【請求項５】
第１の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第１の端末装置における第１のプロセッサのパフォーマンス値と、第２の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第２の端末装置における第２のプロセッサのパフォーマンス値とを用いて、前記第２のプロセッサのリソースが前記第２の端末装置における前記１以上の仮想マシンに前記第１の端末装置における少なくとも１つの仮想マシンを加えた集合に足りると判断し、
前記第２のプロセッサのリソースが前記仮想マシンの集合に足りると判断した場合、前記第１の端末装置における前記少なくとも１つの仮想マシンを前記第２の端末装置へ移動させるように前記第１および第２の端末装置へ指示する
ことを含む方法。
【請求項６】
前記第２のプロセッサに関してリソース需要量に対するリソース供給量を比較する２以上のチェックポイントを求め、
前記２以上のチェックポイントにおける第１のチェックポイントと１以上のタスクの要件を含む第１の集合とに対する第１のリソース需要量および第１のリソース供給量を求め、
前記第１のリソース需要量が前記第１のリソース供給量以下の場合、前記第１の集合にさらに別のタスクの要件を加えた第２の集合と前記第１のチェックポイントとに対する第２のリソース需要量および第２のリソース供給量を求め、
前記第１のリソース需要量が前記第１のリソース供給量よりも大きい場合、前記第１または第２の集合と前記第１のチェックポイントよりも大きい第２のチェックポイントとに対する第３のリソース需要量および第３のリソース供給量を求め、
前記第１または第２の集合に対してリソース需要量がリソース供給量よりも少なくなるチェックポイントが少なくとも１つ存在する場合、リソースが前記第１または第２の集合に含まれる１以上のタスクの集合に足りると判断する
ことをさらに含む請求項５に記載の方法。
【請求項７】
仮想マシンを実行する第１の周期および１周期あたりの第１の実行時間が前記仮想マシンの実行に足りる条件を満たすか否かを判断し、
前記第１の周期および前記第１の実行時間が前記条件を満たす場合、前記第１の周期に１単位加えた第２の周期および前記第１の実行時間が前記条件を満たすか否かを判断し、
前記第１の周期および前記第１の実行時間が前記条件を満たさない場合、前記第１の周期および前記第１の実行時間に１単位加えた第２の実行時間が前記条件を満たすか否かを判断し、
前記条件を満たす周期および実行時間の組のうち、前記周期に対する前記実行時間の割合が最も少ない前記周期および前記実行時間を求める
ことをさらに含む請求項５に記載の方法。
【請求項８】
プロセッシングリソースをスケジューリングするコンピュータを機能させるためのプログラムであって、
第１の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第１の端末装置における第１のプロセッサのパフォーマンス値と、第２の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第２の端末装置における第２のプロセッサのパフォーマンス値とを用いて、前記第２のプロセッサのリソースが前記第２の端末装置における前記１以上の仮想マシンに前記第１の端末装置における少なくとも１つの仮想マシンを加えた集合に足りると判断する処理と、
前記判断する処理において前記第２のプロセッサのリソースが前記仮想マシンの集合に足りると判断した場合、前記第１の端末装置における前記少なくとも１つの仮想マシンを前記第２の端末装置へ移動させるように前記第１および第２の端末装置へ指示する処理と
を前記コンピュータに実行させるためのプログラム。
【請求項９】
前記第１のプロセッサに関してリソース需要量に対するリソース供給量を比較する２以上のチェックポイントを求める処理と、
前記２以上のチェックポイントにおける第１のチェックポイントと１以上のタスクの要件を含む第１の集合とに対する第１のリソース需要量および第１のリソース供給量を求める処理と、
前記第１のリソース需要量が前記第１のリソース供給量以下の場合、前記第１の集合にさらに別のタスクの要件を加えた第２の集合と前記第１のチェックポイントとに対する第２のリソース需要量および第２のリソース供給量を求める処理と、
前記第１のリソース需要量が前記第１のリソース供給量よりも大きい場合、前記第１または第２の集合と前記第１のチェックポイントよりも大きい第２のチェックポイントとに対する第３のリソース需要量および第３のリソース供給量を求める処理と、
前記第１または第２の集合に対してリソース需要量がリソース供給量よりも少なくなるチェックポイントが少なくとも１つ存在する場合、リソースが前記第１または前記第２の集合に含まれる１以上のタスクの集合に足りると判断する処理と
を前記コンピュータにさらに実行させるための請求項８に記載のプログラム。
【請求項１０】
仮想マシンを実行する第１の周期および１周期あたりの第１の実行時間が前記仮想マシンの実行に足りる条件を満たすか否かを判断する処理と、
前記第１の周期および前記第１の実行時間が前記条件を満たす場合、前記第１の周期に１単位加えた第２の周期および前記第１の実行時間が前記条件を満たすか否かを判断する処理と、
前記第１の周期および前記第１の実行時間が前記条件を満たさない場合、前記第１の周期および前記第１の実行時間に１単位加えた第２の実行時間が前記条件を満たすか否かを判断する処理と、
前記条件を満たす周期および実行時間の組のうち、前記周期に対する前記実行時間の割合が最も少ない前記周期および前記実行時間を求める処理と、
を前記コンピュータにさらに実行させるための請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スケジューリング装置、システム、方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、１つの装置上で複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を実行可能とする仮想化技術が知られている。また、仮想マシン内で実行されるタスクに課せられたデッドラインの要件を満たすようにプロセッシングリソースをスケジューリングするスケジューリングアルゴリズムが知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】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
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のスケジューリングアルゴリズムは、タスクおよび仮想マシンに割り当てるリソースを求める処理に長時間を要していた。そこで、以下の実施形態では、効率的にリソースを求めることが可能なスケジューリング装置、システム、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によるスケジューリング装置は、第１の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第１の端末装置における第１のプロセッサのパフォーマンス値と、第２の端末装置における１以上の仮想マシンのそれぞれが含む１以上のタスクの要件と、前記第２の端末装置における第２のプロセッサのパフォーマンス値とを用いて、前記第２のプロセッサのリソースが前記第２の端末装置における前記１以上の仮想マシンに前記第１の端末装置における少なくとも１つの仮想マシンを加えた集合に足りると判断した場合、該少なくとも１つの仮想マシンを前記第２の端末装置へ移動させるように前記第１および第２の端末装置へ指示するように構成されたコントローラを備えることを特徴とする。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係る情報処理システムの概略構成例を示すブロック図。
【図２】図２は、周期タスクの要件の定義を説明するための図。
【図３】図３は、第１の実施形態における仮想マシンの切替えとタスクの切替えの例を説明するための図。
【図４】図４は、第１の実施形態に係る情報処理システムの動作を示すシーケンス図。
【図５】図５は、第１の実施形態において移動先のノードから管理サーバへ送信されるメッセージに含まれる情報の例を示す図。
【図６】図６は、第１の実施形態において移動元のノードから管理サーバへ送信されるメッセージに含まれる情報の例を示す図。
【図７】図７は、第１の実施形態に係るｉｓ＿ｓｃｈｅｄｕｌａｂｌｅのアルゴリズムを示す疑似コード例を示す図。
【図８】図８は、図７に示すｉｓ＿ｓｃｈｅｄｕｌａｂｌｅのアルゴリズムがｒｂｆとｓｂｆとを比較検証する際の手順の例を示す図。
【図９】図９は、第１の実施形態に係るｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅのアルゴリズムを示す疑似コード例を示す図。
【図１０】図１０は、図９に示すｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅが検証するリソースΓの順番の例を示す図。
【図１１】図１１は、第２の実施形態に係る情報処理システムの概略構成例を示すブロック図。
【図１２】図１２は、第２の実施形態に係る情報処理システムの動作を示すシーケンス図。
【図１３】図１３は、第３の実施形態に係る情報処理システムの概略構成例を示すブロック図。
【発明を実施するための形態】
【０００７】
（第１の実施形態）
まず、第１の実施形態にかかるリアルタイムスケジューリング装置、システムおよびプログラムについて、図面を用いて詳細に説明する。第１の実施形態では、全てのタスクのデッドラインの要件を満たしながらプロセッサが全てのタスクを実行可能か否かが判断される。また、第１の実施形態では、１つの仮想マシン内で実行される１以上のタスクの要件が入力されると、仮想マシンに割当てるべき最適なリソースが求められる。以下の説明におけるリソースとは、たとえばプロセッサリソースやメモリ容量やネットワークの帯域などであってよい。また、タスクの要件およびリソースの定義については後述する。
【０００８】
図１に、第１の実施形態に係る情報処理システムの概略構成例を示す。図１に示すように、第１の実施形態に係る情報処理システム１００は、ネットワーク１１５に接続された管理サーバ１２０と、１つ以上のノード１３０および１６０と、クライアント１１０とを備える。各ノード１３０および１６０は、それぞれネットワーク１１５上の端末装置であってよい。
【０００９】
管理サーバ１２０は、通信部１２４と、コントローラ１２１と、スケジューラ１２２と、記憶部１２３とを含む。通信部１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）処理部、ＴＣＰ／ＩＰスタック、ＨＴＴＰサーバなどを有する。通信部１２４の各部は、ソフトウェアまたはハードウエアで構成され得る。コントローラ１２１は、ノード１３０および１６０の各ハイパーバイザ１３２および１６２と通信し、仮想マシン１４０、１５０および１７０を制御する。例えば、コントローラ１２１は、ノード１３０において新たな仮想マシン１４０または１５０を作成するようにハイパーバイザ１３２に指示する。
【００１０】
また、コントローラ１２１は、あるノード１３０で実行されている仮想マシン１４０を別のノード１６０へ移動するように、ハイパーバイザ１３２へ指示し得る。同様に、コントローラ１２１は、ノード１６０で実行されている仮想マシン１７０を別のノード１３０へ移動するようにも、ハイパーバイザ１６２へ指示し得る。
【００１１】
スケジューラ１２２は、１以上のタスクの要件をコントローラ１２１から取得し、取得したタスク要件に基づいて、それぞれの仮想マシン１４０、１５０および１７０に割り当てるリソースを求める。また、スケジューラ１２２は、求めたリソースをコントローラ１２１に出力する。
【００１２】
各ノード１３０および１６０は、プロセッサ１３１または１６１と、不図示の物理メモリおよびネットワークインタフェースとを備えた計算機であり、ソフトウェアまたはハードウエアで構成されたハイパーバイザ１３２または１６２をそれぞれ備える。
【００１３】
ハイパーバイザ１３２は、ノード１３０上で１以上のＯＳを実行可能とするために、１以上の仮想マシン１４０および１５０を提供する。例えば、仮想マシン１４０は、ソフトウェアで構成されたＯＳ１４１と、それぞれソフトウェアで構成された１以上のタスク１４２および１４３とを実行する。また、例えば仮想１５０は、ソフトウェアで構成されたＯＳ１５１と、それぞれソフトウェアで構成された１以上のタスク１５２および１５３とを実行する。同様に、ハイパーバイザ１６２は、ノード１６０上で１以上のＯＳ１７１を実行可能とするために、１以上の仮想マシン１７０を提供する。仮想マシン１７０は、ソフトウェアで構成されたＯＳ１７１と、それぞれソフトウェアで構成された１以上のタスク１７２および１７３とを実行する。
【００１４】
ここで、第１の実施形態では、タスク１４２、１４３、１５２、１５３、１７２および１７３がそれぞれ周期タスクであるとする。周期タスクは、一定間隔ごとに一定量以内の処理を実行することを要求するタスクである。
【００１５】
図２を用いて、周期タスクの要件の定義をより詳細に説明する。図２に示すＴＳＫは、周期タスクの例を示す。斜線部は、プロセッサが周期タスクＴＳＫを実行する期間を示す。また、ＤＬは周期タスクＴＳＫに対するデッドラインを示す。デッドラインＤＬの間隔は一定である。周期タスクＴＳＫの要件は、デッドラインＤＬの周期ｐと、周期タスクＴＳＫの処理に要する最大処理時間ｅとの組（ｐ，ｅ）で定義される。周期ｐと最大処理時間ｅとの単位は、例えば周期タスクＴＳＫを止めずに実行し続けることが可能な最短の時間で決定される。
【００１６】
周期タスクＴＳＫが正常動作を続けるためには、プロセッサが、必ず周期ｐ毎に最大処理時間ｅ以上、周期タスクＴＳＫを実行する必要がある。例えば、周期ｐと最大処理時間ｅとの単位が１ｍｓ（ミリ秒）であって、ある周期タスクＴＳＫの要件が（１，２００）である場合、プロセッサは、周期タスクＴＳＫを正常に動作させ続けるために、２００ｍｓごとに１ｍｓは必ず周期タスクＴＳＫを実行する必要がある。その際、プロセッサは、実行時間ｅ１０１およびｅ１０２で示すように、周期ｐの間に２回以上に分けて周期タスクＴＳＫを実行してもよい。但し、その場合でも、実行時間ｅ１０１およびｅ１０２の合計は、最大処理時間ｅ以上である必要がある。
【００１７】
第１の実施形態に係る情報処理システム１００において、ノード１３０のプロセッサ１３１は、実行タスクを切り替えることで１以上のタスクを並行に実行する。但し、これに限らず、複数のタスクを同時に実行可能とするために、ノード１３０が複数のプロセッサ１３１を備えてもよい。
【００１８】
ＯＳ１４１は、必要に応じて仮想マシン１４０および１５０内のタスク１４２、１４３、１５２および１５３を切り替えるようにハイパーバイザ１３２またはプロセッサ１３１に指示する。その際、ＯＳ１４１が切り替えを指示するタスクは、仮想マシン１４０および１５０のうち一方で実行されているタスク１４２および１４３または１５２および１５３に限られる。
【００１９】
また、ハイパーバイザ１３２は、必要に応じて実行する仮想マシンまたはタスクを切り替えるように、プロセッサ１３１に指示する。たとえば、ハイパーバイザ１３２は、実行する仮想マシンを仮想マシン１４０および１５０のうち仮想マシン１４０に切り替える。選択された仮想マシン１４０のＯＳ１４１は、実行するタスクをタスク１４２および１４３のうちのいずれかに切り替える。ノード１６０および仮想マシン１５０、１７０も同様に仮想ＯＳおよびタスクを切り替える。以上により、階層的にスケジューリングが実行される。
【００２０】
図３を用いて、仮想マシンの切替えとタスクの切替えの例を説明する。図３において、期間Ｅ１４０およびＥ１５０は、それぞれ図１における仮想マシン１４０および１５０の実行時間を示す。また、期間ｅ１４２、ｅ１４３、ｅ１５２、ｅ１５３は、それぞれ図１におけるタスク１４２、１４３、１５２および１５３の実行時間を示す。
【００２１】
図３に示すように、仮想マシン１４０が実行される期間Ｅ１４０では、タスク１４２または１４３が実行される。一方、仮想マシン１５０が実行される期間Ｅ１５０では、タスク１５２または１５３が実行される。
【００２２】
図１に示すスケジューラ１２２は、プロセッサ１３１がノード１３０におけるタスク１４２および１５２を含む全ての周期タスクの要件を満たしつつ、これらを実行可能であるかを判断する。また、スケジューラ１２２は、仮想マシン１４０および１５０に割り当てるべき最適なリソースを計算する。
【００２３】
仮想マシンに割り当てるリソースは、プロセッサが仮想マシンを実行する周期Πと、１周期あたりの実行時間Θとの組（Π，Θ）で定義される。つまり、リソース（Π，Θ）が与えられた仮想マシンは、周期Π毎に合計Θ時間実行される。周期Πおよび時間Θの単位は、例えば仮想マシンに割り当てることができる最短の時間で定義される。
【００２４】
例えば、あるリソースΓが（１０，３００）であって、周期Πと時間Θとの単位が１ｍｓの場合、そのリソースΓは、３００ｍｓごとに１０ｍｓ間、プロセッサが仮想マシンを実行できることを示す。
【００２５】
ここで、あるリソース（Π，Θ）についてのプロセッサの占有率をΘ/Πとして定義する。占有率Θ／Πが最少でかつプロセッサ１３１がタスク１４２および１４３の要件を満たせるとき、仮想マシン１４０に割り当てるリソースは最適になる。
【００２６】
図１に示すクライアント１１０は、ユーザの指示に従って仮想マシン１４０、１５０および１７０の実行状況を管理サーバ１２０から取得する。また、クライアント１１０は、仮想マシンの作成、起動、停止、削除等を要求するメッセージを管理サーバ１２０へ送信する。さらに、クライアント１１０は、仮想マシンを実行するノードの変更を要求するメッセージを管理サーバ１２０へ送信する。
【００２７】
次に、図４に示すシーケンス図を用いて、第１の実施形態に係る情報処理システムの動作を説明する。様々なシナリオにおいて、図１に示すスケジューラ１２２が求めるリソースの計算結果を活用可能である。図４は、ノード１６０のプロセッサ１６１で実行されている仮想マシン１７０をノード１３０のプロセッサ１３１へ移動する場合のシーケンスを示す。
【００２８】
図４に示すシーケンスでは、スケジューラ１２２は、仮想マシン１７０をプロセッサ１３１へ移動したとしても、プロセッサ１３１のリソースが足りるか否かを判断する。より具体的には、スケジューラ１２２は、プロセッサ１３１が現在実行しているタスク１４２、１４３、１５２および１５３の要件に加え、仮想マシン１７０内の全てのタスク１７２および１７３の要件を満たせられるか否かを判断する。リソースが足りると判断した場合、スケジューラ１２２は、仮想マシン１７０に割り当てるリソースをコントローラ１２１に出力する。
【００２９】
図４に示すように、まず、ステップＳ１０１において、クライアント１１０は、仮想マシン１７０の移動を要求するメッセージ１００１をネットワーク１１５を介して管理サーバ１２０に送信する。管理サーバ１２０の通信部１２４は、メッセージ１００１にＥｔｈｅｒｎｅｔ（登録商標）、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などといったプロトコル処理を施し、コントローラ１２１へメッセージ１００１を渡す。このメッセージ１００１には、移動元プロセッサ１６１のＩＤ、移動先プロセッサ１３１のＩＤ、移動対象の仮想マシン１７０のＩＤが含まれている。これらのＩＤは、数字、文字列またはその組み合わせで表わされてもよい。メッセージ１００１を受け取ったコントローラ１２１は、メッセージ１００１に含まれる各ＩＤを読み取る。
【００３０】
つぎに、ステップＳ１０２において、コントローラ１２１は、移動先であるノード１３０のプロセッサ１３１が実行する全てのタスク１４２、１４３、１５２および１５３の要件と、プロセッサ１３１のパフォーマンス値を取得する。具体的には、コントローラ１２１が、すべてのタスクの要件とパフォーマンス値とを要求するメッセージ１００２をネットワーク１１５を介してノード１３０へ送信する。これに対し、ノード１３０のハイパーバイザ１３２が、プロセッサ１３１に実行される全てのタスク１４２、１４３、１５２および１５３の要件と、プロセッサ１３１のパフォーマンス値とを含むメッセージ１００３を管理サーバ１２０へ送信する。
【００３１】
ここで、図５に、移動先のノード１３０から管理サーバ１２０へ送信されるメッセージ１００３に含まれる情報の例を示す。なお、図５に示す例では、タスク要件に含まれる値を自然数としているが、正の数であれば自然数でなくてもよく、どのような形式で表されてもよい。また、プロセッサ１３１のパフォーマンス値は、プロセッサ１３１が一定量の処理を実行する際の所要時間に対する、基準となるプロセッサで同じ量の処理を実行する際の所要時間の比率で表される。例えば、基準となるプロセッサが一定量の処理を実行する際の所要時間をｄ１とし、プロセッサ１３１で同じ処理を実行する際の所要時間をｄ２としたとき、プロセッサ１３１のパフォーマンス値はｄ１／ｄ２で求められる。
【００３２】
図４に戻り説明する。管理サーバ１２０がメッセージ１００３を受信すると、管理サーバ１２０の通信部１２４は、メッセージ１００３にＥｔｈｅｒｎｅｔ（登録商標）、ＴＣＰ、ＩＰ、ＨＴＴＰといったプロトコル処理を施し、コントローラ１２１へメッセージ１００３を渡す。コントローラ１２１は、メッセージ１００３に含まれている、プロセッサ１３１が実行している全てのタスク１４２、１４３、１５２および１５３の要件を記憶部１２３に保存する。
【００３３】
つぎに、ステップＳ１０３において、管理サーバ１２０は、移動元であるノード１６０から、仮想マシン１７０内で動作する全てのタスク１７２および１７３の要件と、ノード１６０のプロセッサ１６１のパフォーマンス値とを取得する。具体的には、管理サーバ１２０のコントローラ１２１は、メッセージ１００４をネットワーク１１５を介してノード１６０へ送信する。メッセージ１００４には、移動する仮想マシン１７０のＩＤが含まれる。これに対し、ノード１６０は、仮想マシン１７０内で動作する全てのタスク１７２および１７３の要件、およびプロセッサ１６１のパフォーマンス値を含むメッセージ１００５をネットワーク１１５を介して管理サーバ１２０へ送信する。
【００３４】
ここで、図６に、移動元のノード１６０から管理サーバ１２０へ送信されるメッセージ１００５に含まれる情報の例を示す。なお、図６に示す例では、タスク要件に含まれる値は自然数としているが、正の数であればよく、どのような形式で表されてもよい。
【００３５】
図４に戻り説明する。管理サーバ１２０がメッセージ１００５を受信すると、管理サーバ１２０のコントローラ１２１は、メッセージ１００５に記されたタスクの要件を記憶部１２３に保存する。
【００３６】
つぎに、ステップＳ１０４において、管理サーバ１２０のスケジューラ１２２は、それぞれ仮想マシン１４０、１５０および１７０に対する最適なリソースを計算する。そして、ステップＳ１０５において、スケジューラ１２２が、仮想マシン１４０、１５０および１７０をプロセッサ１３１で実行しても全てのタスク１４２、１４３、１５２、１５３、１７２および１７３の要件を満たせられるか否かを判断する。ステップＳ１０４およびＳ１０５の処理の詳細は後述において説明する。
【００３７】
ステップＳ１０５の判断の結果、スケジューラ１２２が全てのタスクの要件を満たせられると判断した場合、管理サーバ１２０のコントローラ１２１は、ノード１３０へ仮想マシン１７０の移動を指示する（ステップＳ１０６）。具体的には、管理サーバ１２０のコントローラ１２１は、メッセージ１００６を生成する。メッセージ１００６には、移動対象である仮想マシン１７０のＩＤが含まれている。管理サーバ１２０の通信部１２４は、メッセージ１００６にプロトコル処理を施し、メッセージ１００６をノード１３０へ送信する。これに対し、ノード１３０は、メッセージ１００６を受信すると、メッセージ１００７を管理サーバ１２０へ送信する。メッセージ１００７には、仮想マシン１７０の移動を了承したか否かを示すコードが含まれている。ただし、ステップＳ１０５の判断の結果、スケジューラ１２２が仮想マシン１７０の移動後に全てのタスクの要件を満たすことができないと判断した場合、クライアント１１０から指示された仮想マシン１７０の移動は無効とされ、クライアント１１０へ移動不可であることが通知される。クライアント１１０は、仮想マシン１７０の移動ができないことを表示してもよい。
【００３８】
次に、ステップＳ１０７において、管理サーバ１２０のコントローラ１２１は、ノード１６０へ仮想マシン１７０の移動を指示する。具体的には、まず、コントローラ１２１はメッセージ１００８を送信する。メッセージ１００８には、移動対象の仮想マシン１７０のＩＤが含まれている。ノード１６０は、メッセージ１００８を受信すると、メッセージ１００９を管理サーバ１２０へ送信する。メッセージ１００９には、ノード１６０が仮想マシン１７０の移動を了承したか否かを示すコードが含まれている。
【００３９】
つぎに、ステップＳ１０８において、ノード１６０からノード１３０へ仮想マシン１７０のイメージ１０１０を送信し、仮想マシン１７０の移動完了を管理サーバ１２０へ通知する。このイメージ１０１０は、仮想マシン１７０の実行メモリイメージを含む。具体的には、ノード１３０は、実行メモリイメージ１０１０を受信すると、この実行メモリイメージ１０１０をメモリ（図示せず）に読み込み、仮想マシン１７０の実行を開始する。つづいて、ノード１３０は、仮想マシン１７０の移動完了を示すコードを含むメッセージ１０１１を管理サーバ１２０に送信する。管理サーバ１２０のコントローラ１２１は、メッセージ１０１１を受信すると、メッセージ１０１２をクライアント１１０に送信する。メッセージ１０１２には、仮想マシン１７０の移動完了を示すコードが含まれている。
【００４０】
以上により、ノード１６０で実行されていた仮想マシン１７０のノード１３０への移動が完了する。
【００４１】
図４のステップＳ１０４における処理を、より詳細に説明する。ステップＳ１０４では、管理サーバ１２０のスケジューラ１２２が、それぞれ仮想マシン１４０、１５０および１７０に対する最適なリソースを計算し、コントローラ１２１へその結果を返す。第１の実施形態にあたっては、スケジューラ１２２は、特定の仮想マシン、タスク、およびプロセッサに限らずに、最適なリソースを計算してもよい。そこで、以下では、ステップＳ１０４でスケジューラ１２２が実施する処理を一般化して説明する。
【００４２】
ステップＳ１０４で実施される一般化されたアルゴリズムをｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅと記す。ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅの実行には、別のアルゴリズムｉｓ＿ｓｃｈｅｄｕｌａｂｌｅが利用される。そこで、まず、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅのアルゴリズムを説明する。
【００４３】
ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅは、仮想マシンＶ、プロセッサＣ、およびリソースΓが与えられたときに、プロセッサＣがリソースΓに従い仮想マシンＶ内の全てのタスクをデッドラインを超えずに実行可能か否かを判断する。ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの入力は、ワークロードＷ、リソースΓ、プロセッサＣのパフォーマンス値Φ（Ｃ）および移動元のプロセッサＣ’のパフォーマンス値Φ（Ｃ’）である。
【００４４】
ワークロードＷは、対象の仮想マシンＶ内の全タスクの要件で構成された集合であり、以下の式（１）で表すことができる。以下の式（１）において、ｐ（ｉ）およびｅ（ｉ）は、それぞれ周期タスクｉの周期と１周期あたりの実行時間である。ｐ（ｉ）≦ｐ（ｉ＋１）であるとする。
Ｗ＝｛（ｐ（１），ｅ（１）），（ｐ（２），ｅ（２）），．．．，（ｐ（ｎ），ｅ（ｎ））｝      …（１）
【００４５】
ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの出力は、真偽値である。ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの出力が真であることは、プロセッサＣがワークロードＷで表わされる仮想マシンＶ内の全てのタスクをデッドラインを超えずに実行するためにリソースΓを仮想マシンＶに割当てることが必要十分であることを示す。一方、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの出力が偽であることは、プロセッサＣがワークロードＷを実行するためにはリソースΓが不十分であることを示す。
【００４６】
図７は、第１の実施形態に係るｉｓ＿ｓｃｈｅｄｕｌａｂｌｅのアルゴリズムを示す疑似コード例を示す図である。図７において、１行目から６行目の処理は、ワークロードＷとパフォーマンス値Φ（Ｃ）とを用いて、新たなワークロードＷ’を求める。ｅ（ｉ）は、プロセッサＣ’でタスクを実行した場合の１周期あたりの時間である。
【００４７】
そこで、図７における３行目の処理によって、ｅ（ｉ）からプロセッサＣでタスクを実行した場合の１周期あたりの時間ｅ’（ｉ）に変換する。その結果、ワークロードＷ’は、以下の式（２）で表される。
Ｗ’＝｛（ｐ（１），ｅ’（１）），（ｐ（２），ｅ’（２）），．．．，（ｐ（ｎ），ｅ’（ｎ））｝      …（２）
【００４８】
図７における７行目から１３行目の処理は、チェックポイントの集合Ｕを求める。チェックポイントは、ｉが１〜ｎの全てのｐ（ｉ）に対して、ｐ（ｎ）を超えないｐ（ｉ）の倍数である。例えば、ｎ＝２，ｐ（１）＝２、およびｐ（２）＝５の場合、集合ＵはＵ＝｛２，４，５｝となる。
【００４９】
図７における１４行目の処理は、集合Ｕが含むチェックポイントを小さい値の順に整列する。１６行目から２６行目の処理は、ワークロードＷ’および集合Ｕを用いて、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの結果を求める。１８行目の処理は、ｒｂｆとｓｂｆと呼ばれる関数の結果を比較する。
【００５０】
第１の実施形態では、ｒｂｆとｓｂｆの結果の比較回数を少なくすることで、効率的に１以上の仮想マシンの実行可能性が判断される。
【００５１】
たとえば、非特許文献１では、ｒｂｆが以下の式（３）で定義される。その際、ｒｂｆの入力は、ｎ個のタスクの要件からなるワークロードＷである。
【数１】
2014038458.tif 000003
【００５２】
式（３）におけるワークロードＷは、以下の式（４）で表される。なお、自然数ｉ≦ｎ、自然数ｔ≦ｐ（ｎ）である。また、ワークロードＷは、ｐ（ｉ）≦ｐ（ｉ＋１）となるよう整列されているとする。
Ｗ＝｛（ｅ（０），ｐ（１），．．．，ｅ（ｎ），ｐ（ｎ）｝      …（４）
【００５３】
上述の式（３）で定義されるｒｂｆの出力は、第１の実施形態におけるリソース需要量に相当する。
【００５４】
また、非特許文献１によれば、ｓｂｆは、以下の式（５）に示す数式で定義される。その際、ｓｂｆの入力は、リソースΓ、および自然数ｔである。ｓｂｆの出力は、第１の実施形態におけるリソース供給量に相当する。
【数２】
2014038458.tif 000004
【００５５】
非特許文献１によれば、あるワークロードＷおよびリソースΓが与えられたとき、以下の式（６）に示す条件が満たされるならば、リソースΓはワークロードＷ内の全ての要件を満たしタスクを実行可能である。そこで、１≦ｉ≦ｎ，０＜ｔ≦ｐ（ｎ）を満たす全ての自然数ｉおよびｔについて、式（６）に示す条件を満たすか否かを調べることで、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの結果を求められる。
【数３】
2014038458.tif 000005
【００５６】
これに対し、第１の実施形態では、ｒｂｆとｓｂｆとの比較回数を低減するために、図７における１６行目から２６行目の処理は、集合Ｕに含まれるチェックポイントを式（６）における変数ｔにあてはめる。具体的には、図７における１８行目の処理において、ｒｂｆおよびｓｂｆにｕ（ｋ）を与える。ｕ（ｋ）は、チェックポイントの集合Ｕのｋ番目の値である。
【００５７】
図７に示すｉｓ＿ｓｃｈｅｄｕｌａｂｌｅは、さらにｒｂｆとｓｂｆの比較回数を低減する。具体的には、図７に示す１８行目において、あるｉ，ｔ＝ｕ（ｋ）が式（６）に示す条件を満たさない場合、そのｉに対する検証を止めて、ｉ＋１の検証に移る。
【００５８】
図８は、図７に示すｉｓ＿ｓｃｈｅｄｕｌａｂｌｅのアルゴリズムがｒｂｆとｓｂｆとを比較検証する際の手順の例を示す。図８に示す例において、ワークロードＷ’はＷ’＝｛（２７，２），（４８，１），（７１，２），（７９，５）｝であり、リソースΓはΓ＝（１２，３）である。また、ワークロードＷ’の要素数ｎは４であり、最も長い周期ｐ（ｎ）は７９である。ワークロードＷ’から集合Ｕを求めると、集合ＵはＵ＝｛２７，４８，５８，７１，７９｝となる。
【００５９】
図８に示すように、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅでは、まず、ｒｂｆ（Ｗ’，１，ｕ（１））とｓｂｆ（Γ，ｕ（１））が比較される。その際、集合Ｕは、ｕ（１）＝２７である。ｒｂｆ（Ｗ’，１，ｕ（１））≦ｓｂｆ（Γ，ｕ（１））であるため、次にｒｂｆ（Ｗ’，２，ｕ（１））とｓｂｆ（Γ，ｕ（１））とが比較される。つまり、図８において上方向にある次のｒｂｆの値が検証される。
【００６０】
ｒｂｆ（Ｗ’，２，ｕ（１））に対しても、ｒｂｆ（Ｗ’，２，ｕ（１））≦ｓｂｆ（Γ，ｕ（１））が成り立つため、同様に、上方向にある次のｒｂｆの値ｒｂｆ（Ｗ’，３，ｕ（１））が検証される。
【００６１】
次に、ｒｂｆ（Ｗ’，３，ｕ（１））＞ｓｂｆ（Γ，ｕ（１））である。そこで、次は、ｒｂｆ（Ｗ’，３，ｕ（２））とｓｂｆ（Γ，ｕ（２））とが比較される。
【００６２】
以上に示す通り、ｒｂｆ（Ｗ’，ｉ，ｕ（ｋ））≦ｓｂｆ（Γ，ｕ（ｋ））の場合、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅは、ｒｂｆ（Ｗ’，ｉ＋１，ｕ（ｋ））とｓｂｆ（Γ，ｕ（ｋ））との比較に移り、そうでない場合は、ｒｂｆ（Ｗ’，ｉ，ｕ（ｋ＋１））とｓｂｆ（Γ，ｕ（ｋ＋１））との比較に移る。
【００６３】
ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅは、ｉがｎに到達するまで、ｒｂｆとｓｂｆとを比較する。もし、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅが１≦ｉ≦ｎを満たす全てのｉについてｒｂｆとｓｂｆを比較していく途中でｕ（ｋ）がｐ（ｎ）に達した場合は、図７における２２行目に示すように、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの結果は偽となる。一方、ｕ（ｋ）＝ｐ（ｎ）になる前に１≦ｉ≦ｎを満たす全てのｉについてｒｂｆとｓｂｆを比較し終えた場合、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの結果は真となる。以上がｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの動作である。
【００６４】
次に、ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅのアルゴリズムを説明する。ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅの入力は、ワークロードＷおよびプロセッサＣのパフォーマンス値Φ（Ｃ）である。ワークロードＷは、タスクの要件の集合である。以下では、ワークロードＷがＷ＝｛（ｐ（１），ｅ（１）），（ｐ（２），ｅ（２）），．．．，（ｐ（ｎ），ｅ（ｎ））｝，ｐ（ｉ）≦ｐ（ｉ＋１）であるとする。
【００６５】
ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅの出力は、ワークロードＷに最適なリソースΓ＿ｏｐｔである。そこで、ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅは、全てのリソースの候補Γ＝（Π，θ）について、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅを適用すると真を返すリソースΓのうちθ／Πが最も小さくなるΓを見つけてもよい。
【００６６】
例えば、ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅは、Π≦ｐ（ｎ）およびθ≦Πであり、時間θと周期Πとが自然数である全てのΓ＝（Π，Θ）について、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅを適用する。または、ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅは、より効率的な図９に示すアルゴリズムで構成されてもよい。
【００６７】
図９は、第１の実施形態に係るｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅのアルゴリズムを示す疑似コード例を示す図である。図９における３行目から１７行目の処理は、リソースΓの周期Πを１からｐ（ｎ）まで変化させながら、リソースΓとパフォーマンス値Φ（Ｃ）のプロセッサＣでワークロードＷを実行可能か否かを調べる。具体的には、９行目の処理は、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅ（Ｗ，Γ，Φ（Ｃ））を実行する。４行目の処理は、それぞれの周期Πに対して、リソースΓのプロセッサ割当て時間ΘをΘ＿ｆｉｒｓｔからΠまでのみ変化させる。Θ＿ｆｉｒｓｔは、それぞれの周期Πに対して初めに調査すべきリソースΓの割当て時間である。ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅは、リソースΓの調査結果に応じて、Θ＿ｆｉｒｓｔを変化させる。
【００６８】
６行目から１２行目の処理では、ある周期Πに対する時間Θを調べた結果、Θよりも大きい割当て時間を調査する必要がないことが分かった場合、次はリソースΓ＝（Π＋１，Θ）から調査し始める。
【００６９】
７行目および１１行目の処理では、時間Θよりも小さい値に対してｉｓ＿ｓｃｈｅｄｕｌａｂｌｅが実行されないように、時間Θの値をΘ＿ｆｉｒｓｔに一時的に保存する。
【００７０】
６行目における関数Ｂは、与えられたリソースΓ＝（Π，Θ）の占有率Θ/Πを返す。６行目から８行目の処理では、それまでに見つかった最適なリソースΓ＿ｏｐｔよりも、調査対象であるリソースΓの占有率が高い場合、リソースΓよりも占有率が高いことが明らかなリソースΓ＝（Π，Θ＋α），α＞０の調査を省略する。
【００７１】
９行目に示す条件が真であることは、プロセッサＣは、ワークロードＷをリソースΓで実行可能であり、かつそれまで見つかった最適なリソースΓ＿ｏｐｔよりも、リソースΓがより占有率が小さいことを示す。そこで、１０行目の処理は、最適なリソースΓ＿ｏｐｔを更新する。
【００７２】
また、１１行目および１２行目の処理は、これ以上占有率の高いリソースの調査を省略するため、Θ＿ｆｉｒｓｔを更新してから周期Π＋１に対する調査を実行する。
【００７３】
１３行目の条件が真であることは、占有率が１００％のリソースΓを用いてプロセッサＣがワークロードＷ内のいずれかのタスクの要件を満たせられないことを示す。そこで、１４行目のコードはエラーを出力し、処理を終了する。１８行目は、最後に残った最適なリソースΓ＿ｏｐｔを出力する。
【００７４】
図１０に、ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅが検証するリソースΓの順番の例を示す。図１０に示す例では、リソースΓ＝（１，１）から調査を始める。あるリソースΓ＝（Π，Θ）を検証した結果、リソースΓを用いてプロセッサＣがワークロードＷ内のすべてのタスクの要件を満たせられる場合、次にリソースΓ＝（Π＋１，Θ）が検証される。一方、リソースΓを用いてプロセッサＣがワークロードＷ内のいずれかのタスクの要件を満たせられない場合、次に、リソースΓ＝（Π，Θ＋１）が検証される。ただし、リソースΓの占有率がそれまでの最適なリソースΓ＿ｏｐｔより高い場合は、リソースΓを検証せず次に（Π＋１，Θ）が検証される。
【００７５】
以上のように、図４のステップＳ１０４におけるスケジューラ１２２の動作は、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅおよびｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅで構成される。
【００７６】
次に、図４のステップＳ１０５における処理を説明する。スケジューラ１２２は、ステップＳ１０５において、与えられた１以上の仮想マシンを与えられたプロセッサで実行しても、全てのタスクがデッドラインを超えないか否かを判断する。ステップＳ１０５において、スケジューラ１２２への入力は、１以上の仮想マシンに対する最適なリソースの集合Ｒ＝｛Γ（１），Γ（２），．．．，Γ（ｍ）｝，Γ（ｉ）＝（Π（ｉ），Θ（ｉ））、およびプロセッサＣのパフォーマンス値Φ（Ｃ）である。ｍは仮想マシンの数を表す。
【００７７】
スケジューラ１２２は、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅ（Ｒ，（１，１），Φ（Ｃ））を実行し、その結果が真の場合、与えられた１以上の仮想マシンをプロセッサＣで実行しても、全てのタスクがデッドラインを超えないと判断する。一方、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅ（Ｒ，（１，１），Φ（Ｃ））の結果が偽の場合、スケジューラ１２２は、いずれかのタスクがデッドラインを超えてしまうことがあると判断する。
【００７８】
以上のように、管理サーバ１２０は、ｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅおよびｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの一方または両方を備えることで、短時間で仮想マシンに対する最適なリソースを計算できる。また、管理サーバ１２０は、１以上の仮想マシンを実行するために特定のプロセッサのリソースが足りるか否かを短時間で計算してユーザに知らせることができる。
【００７９】
なお、第１の実施形態では、メッセージ１００３およびメッセージ１００５にプロセッサのパフォーマンスを含める代わりに、ある一定量の処理を実行したときの時間を含めてもよい。この場合、コントローラ１２１は、プロセッサのパフォーマンス値を求め、スケジューラ１２２に渡す。
【００８０】
また、第１の実施形態では、ステップＳ１０４およびＳ１０５のいずれかまたは両方は、ステップＳ１０６以前に管理サーバ１２０のスケジューラ１２２によって実施されればよい。例えば、管理サーバ１２０がクライアント１１０から仮想マシンの移動、作成などの指示を受信する前に、ステップＳ１０２およびＳ１０３のいずれかまたは両方を実施し、そしてステップＳ１０４とＳ１０５を実施してもよい。これにより、処理の短縮が可能となる。
【００８１】
また、第１の実施形態では、ステップＳ１０２およびＳ１０３の少なくとも一方が実施されなくてもよい。例えば、各ノードのプロセッサのパフォーマンス値と、各ノードで動作させる仮想マシン内のタスクの要件とが管理サーバ１２０の記憶部１２３にあらかじめ保存されている場合には、ステップＳ１０２およびＳ１０３を省略することができる。これにより、処理時間の短縮が可能となる。
【００８２】
さらに、スケジューラ１２２は、式（３）に示すｒｂｆの計算式の代わりに、別の計算式を用いてもよい。式（３）に示すｒｂｆは、仮想マシン内のタスクがＲａｔｅｍｏｎｏｔｏｎｉｃと呼ばれるスケジューリングポリシでスケジューリングされ、かつ各仮想マシンもＲａｔｅｍｏｎｏｔｏｎｉｃでスケジューリングされることを想定している。
【００８３】
そこで、たとえば仮想マシン１４０内の１以上のタスク１４２および１４３にそれぞれ優先度が与えられた場合、スケジューラ１２２は、ステップＳ１０４においてｉｓ＿ｓｃｈｅｄｕｌａｂｌｅを実行するとき、以下の式（７）に示すｒｂｆを用いてもよい。その際、仮想マシン１４０内でｉ番目に優先度が高いタスクの要件が（ｐ’（ｉ），ｅ’（ｉ））とされる。
【数４】
2014038458.tif 000006
【００８４】
同様に、それぞれの仮想マシンに優先度が与えられた場合、スケジューラ１２２は、ステップＳ１０５においてｉｓ＿ｓｃｈｅｄｕｌａｂｌｅを実行するとき、式（７）に示すｒｂｆを用いてもよい。
【００８５】
ステップＳ１０４において、式（７）に示すｒｂｆを用いることで、仮想マシン内のＯＳの実装者が、タスクの実行周期に関係なく優先順位を指定することが可能になる。同様に、ステップＳ１０５において、式（７）に示すｒｂｆを用いることで、ハイパーバイザの実装者は、仮想マシンに対して割当てるリソースの周期に関係なく、それぞれの仮想マシンに優先順位を割当てることが可能となる。
【００８６】
スケジューラ１２２がステップＳ１０４においてｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅを用いてある仮想マシンＶに対して求めたリソースをΓ＝（Π，Θ）とする。このとき、ハイパーバイザ１３２は、周期Π毎に与えられる仮想マシンＶの実行時間がΘ以上であれば、どのようなスケジューリングポリシで仮想マシンＶにリソースΓを割当ててもよい。例えば、ラウンドロビンまたは動的に優先度が変動するスケジューリングポリシを用いて仮想マシンＶにリソースΓが割り当てられてもよい。
【００８７】
また、第１の実施形態では、プロセッサのリソースではなく、ネットワークリソースのスケジューリングがｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅとｉｓ＿ｓｃｈｅｄｕｌａｂｌｅの一方または両方を用いて実施されてもよい。例えば、限られた数のネットワークインタフェースを備える１台のノードにおいて、１以上のタスクを含む１以上の仮想マシンが動作する場合、ネットワークインタフェースを複数のタスクまたは複数の仮想マシンで共有する必要がある。その際、タスクまたは仮想マシンに対して、データ送信のタイミングの要件が与えられた場合に、上述した構成を用いることで、それらすべての要件を満たすことができるか否かを判断してもよい。
【００８８】
この場合、タスクの要件はプロセッサを使用する期間に対する要件ではなく、ネットワークインタフェースを利用する期間に対する要件となる。例えば、タスクの要件（ｐ，ｅ）は、周期ｐごとに、タスクがネットワークインタフェースからデータを送信する期間が合計ｅであることを示す。
【００８９】
プロセッサの使用期間およびネットワークインタフェースの使用期間の他にも、スケジューラ１２２は、ノード内のバスの使用期間、またはディスクＩ／Ｏの使用期間をｉｓ＿ｓｃｈｅｄｕｌａｂｌｅまたはｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅを用いて検証し、ノードのリソースが与えられた１以上の仮想マシンに足りるか否かを判断してもよい。これにより、さらに誤診断の可能性を小さくできる。
【００９０】
第１の実施形態では、図４に示すシーケンスの他にも、仮想マシンを新規作成する前にノードにおけるリソースの過不足を検証し、クライアントに結果を送信してもよい。
【００９１】
また、第１の実施形態では、クライアントから１以上のタスクの要件、１以上の仮想マシンの構成、リソースの量、仮想マシンとノードとの割当てを受け取り、リソースの過不足を判断し、その結果をクライアントに送信してもよい。つまり、第１の実施形態にかかる情報処理システム、方法およびプログラムは、必ずしも仮想マシンの操作をノードに指示するものでなくてもよい。これにより、例えばユーザが１以上の仮想ＯＳの配置を計画するシステムを提供できる。
【００９２】
以上のような構成によれば、ｒｂｆとｓｂｆとの比較回数を低減することが可能となるため、最適なリソース割当てを求める際の処理量を低減することができる。
【００９３】
（第２の実施形態）
つぎに、第２の実施形態に係るリアルタイムスケジューリング装置、システムおよびプログラムについて説明する。第２の実施形態では、指定されたリソースで全てのタスクのデッドラインの要件を満たしながらノードが全てのタスクを実行可能か否かを判断する。
【００９４】
図１１に、第２の実施形態に係る情報処理システムの概略構成例を示す。図１１に示すように、第２の実施形態にかかる情報処理システム２００は、図１におけるコントローラ１２１、スケジューラ１２２および記憶部１２３を備えた仮想マシン２２０が、ノード１３０に組み込まれた構成を備える。その結果、管理サーバ１２０が省略され得る。仮想マシン２２０には、ＯＳ２２４も含まれる。その他の構成は、図１に示す情報処理システム１００と同様であってよい。
【００９５】
このような構成の情報処理システム２００は、ユーザが工場などの現場でノード１３０に繋がれた入力装置２３１および出力装置２３２で直接仮想マシン１４０および１５０を操作する場合特に有効と考えられる。
【００９６】
図１１に示すスケジューラ１２２および記憶部１２３の動作は、図１に示すスケジューラ１２２および記憶部１２３の動作と同様であってよい。また、図１１に示すハイパーバイザ１３２、プロセッサ１３１、仮想マシン１４０および１５０、タスク１４２、１４３、１５２および１５３、ＯＳ１４１および１５１、ノード１３０および１６０の動作は、図１に示すそれぞれのオブジェクトの動作と同様であってよい。
【００９７】
図１１に示す仮想マシン２２０では、ＯＳ２２４が実行される。コントローラ１２１およびスケジューラ１２２は１つのタスクまたは異なるタスクに含まれるソフトウェアとして構成される。
【００９８】
コントローラ１２１は、処理の結果をＯＳ２２４を介して出力装置２３２へ出力してもよい。また、コントローラ１２１への入力は、入力装置２３１からＯＳ２２４を介して渡されてもよい。
【００９９】
つぎに、図１２に示すシーケンスを用いて、第２の実施形態に係る情報処理システムの動作を説明する。図１２に示すように、まず、ステップＳ２０１において、ノード１３０のコントローラ１２１が入力装置２３１から仮想マシンの移動の指示を受け取ると、コントローラ１２１は、ノード１３０で実行されているタスク１４２、１４３、１５２および１５３の要件を取得する。その後のステップＳ１０３、Ｓ１０４、Ｓ１０５およびＳ１０７の動作は、図４におけるステップＳ１０３、Ｓ１０４、Ｓ１０５およびＳ１０７の動作と同様であってよいため、説明を省略する。
【０１００】
次に、ステップＳ２０２において、ノード１３０のコントローラ１２１は、ノード１６０から仮想マシン１７０のイメージ１０１０を受信する。このイメージ１０１０は、仮想マシン１７０の実行メモリイメージを含む。具体的には、ノード１３０のコントローラ１２１は、イメージ１０１０を受信すると、仮想マシン１７０の実行メモリイメージをメモリ（図示せず）に読み込み、仮想マシン１７０の実行を開始する。つづいて、ノード１３０のコントローラ１２１は、仮想マシン１７０の移動完了を示すメッセージを出力装置２３２に出力する。
【０１０１】
以上のように、第１の実施形態において管理サーバ１２０が備えていたタスクのスケジューリングを実行する機能をノード１３０側に実装した場合でも、第１の実施形態と同様の効果を得ることができる。
【０１０２】
（第３の実施形態）
つぎに、第３の実施形態に係るリアルタイムスケジューリング装置、システムおよびプログラムについて説明する。第３の実施形態では、グループ化された１以上の別の装置からデータを周期的に取得するとともに、各グループに必要なリソースを求める。その結果、リソースが足りない場合、そのことをクライアント１１０に通知する。また、第３の実施形態では、データを取得する周期を再設定する。
【０１０３】
図１３に、第３の実施形態に係る情報処理システムの概略構成例を示す。図１３に示すように、第３の実施形態に係る情報処理システム３００は、集約装置３０１、端末装置３１０〜３８０、クライアント１１０、ネットワーク１１５、１１５Ａおよび１１５Ｂで構成される。
【０１０４】
各端末装置３１０〜３８０は、例えば時系列データを集約装置３０１へ送信する。時系列データは、例えば温度、湿度、気圧、気体または液体の濃度、期待または液体の流量、使用電力量、発電量、人、車などの交通量であってよい。
【０１０５】
図１３に示す例では、端末装置３１０〜３８０が２つのグループに分けられている。ネットワーク１１５Ａに繋がる端末装置３１０〜３４０をグループＡとし、ネットワーク１１５Ｂに繋がる端末装置３５０〜３８０をグループＢとする。
【０１０６】
集約装置３０１は、たとえば第１の実施形態における管理サーバ１２０に相当する。集約装置３０１は、端末装置３１０〜３８０から周期的にデータを取得する。また、集約装置３０１は、グループＡおよびグループＢに対して必要なリソースを求める。集約装置３０１は、例えば各グループＡおよびＢに対するリソースが足りない場合、クライアント１１０にエラーメッセージを送信してもよい。
【０１０７】
集約装置３０１が端末装置３１０〜３８０のうちの２以上からデータを受信するとき、集約装置３０１が繋がるネットワーク１１５付近でデータが混雑する場合がある。その場合、集約装置３０１は、ある端末装置から決められた周期でデータを取得できない可能性がある。そこで、集約装置３０１は、各端末装置３１０〜３８０の要件から、各グループＡおよびＢに必要なリソースを計算する。
【０１０８】
第３の実施形態において、リソースは例えばネットワーク１１５を使用する周期Πと使用期間の総計Θの組（Π，Θ）である。また、各端末装置３１０〜３８０の要件は、データ取得の周期ｐと１周期あたりにかかる時間ｅの組（ｐ，ｅ）である。
【０１０９】
図１３に示す集約装置３０１は、通信部１２４、コントローラ３２１、記憶部３２３およびスケジューラ１２２で構成される。通信部１２４およびスケジューラ１２２は、それぞれ図１に示す管理サーバ１２０の通信部１２４およびスケジューラ１２２と同等であってよい。
【０１１０】
記憶部３２３は、各端末装置３１０〜３８０の要件を記憶する。コントローラ３２１は、あらかじめ決められた周期で各端末装置３１０〜３８０からデータを取得する。また、コントローラ３２１は、それぞれの端末装置３１０〜３８０に対してデータの取得にかかる時間ｅを計測し、あらかじめ決められた各端末装置３１０〜３８０に対する周期とともに記憶部３２３に記憶する。
【０１１１】
コントローラ３２１による時間ｅの計測方法は、どのような方法でもよい。例えば、コントローラ３２１は、定期的に受信するデータと同じサイズのメッセージを送信してから、各端末装置３１０〜３８０からデータを受信するまでのラウンドトリップタイムをＴとし、Ｔ／２を時間ｅとしてもよい。
【０１１２】
コントローラ３２１は、グループＡに属す各端末装置３１０〜３４０の要件の集合Ｗをｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅに適用し、リソースΓ（Ａ）を得る。その際、プロセッサのパフォーマンス値は１とする。同様に、コントローラ３２１はグループＢに属す各装置の要件の集合をｏｐｔｉｍａｌ＿ｒｅｓｏｕｒｃｅに適用し、リソースΓ（Ｂ）を得る。
【０１１３】
コントローラ３２１は、例えば、リソースΓ（Ａ）とリソースΓ（Ｂ）とが不均衡である場合、端末装置３１０〜３８０のうちいずれかの装置に対するデータの取得周期を再設定する。または、コントローラ３２１は、リソースΓ（Ａ）とリソースΓ（Ｂ）との集合をリソースΓとし、これをｉｓ＿ｓｃｈｅｄｕｌａｂｌｅに適用することで、リソースの占有率が１を超えないか否かを判断する。その際、ｉｓ＿ｓｃｈｅｄｕｌａｂｌｅに適用するパフォーマンス値は１とする。リソースΓの占有率が１を超える場合、コントローラ３２１は、クライアント１１０にエラーメッセージを送信してもよい。または、コントローラ３２１は、データの取得周期を再設定してもよい。
【０１１４】
以上のように、上述した第１および第２の実施形態にかかる構成は、ネットワークリソースをスケジューリングする情報処理システム３００にも適用可能である。
【０１１５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１６】
１００，２００，３００…情報処理システム、１１０…クライアント、１１５，１１５Ａ，１１５Ｂ…ネットワーク、１２０…管理サーバ、１２１，３２１…コントローラ、１２２…スケジューラ、１２３，３２３…記憶部、１２４…通信部、１３０，１６０…ノード、１４０，１５０，１７０，２２０…仮想マシン、１３１，１６１…プロセッサ、１３２，１６２…ハイパーバイザ、１４１，１５１，１７１，２２４…ＯＳ、１４２，１４３，１５２，１５３，１７２，１７３…タスク、２３１…入力装置、２３２…出力装置、３０１…集約装置、３１０〜３８０…端末装置、Ｅ１４０，Ｅ１５０，ｅ１４２，ｅ１４３，ｅ１５２，ｅ１５３…期間、ｅ１０１，ｅ１０２…実行時間、ＴＳＫ…周期タスク、ＤＬ…デッドライン、１００１〜１００９，１０１１，１０１２…メッセージ、１０１０…イメージ
【図１】
2014038458.tif 000007
【図２】
2014038458.tif 000008
【図３】
2014038458.tif 000009
【図４】
2014038458.tif 000010
【図５】
2014038458.tif 000011
【図６】
2014038458.tif 000012
【図７】
2014038458.tif 000013
【図８】
2014038458.tif 000014
【図９】
2014038458.tif 000015
【図１０】
2014038458.tif 000016
【図１１】
2014038458.tif 000017
【図１２】
2014038458.tif 000018
【図１３】
2014038458.tif 000019