(57)【要約】【課題】  動的にリクエストの状況が変化する場合であっても、ワークフローを構成するリクエストにおけるＴＡＴをより短くすることが可能なようにスケジューリングするスケジューラ装置等を提供する。【解決手段】  スケジューラ装置１は、リクエストマップを記憶するリクエスト管理部３と、ジョブを対象に、リクエストを解析することによって、要件情報と段情報とを求める解析部２と、ＷＦジョブと種類の異なる他のジョブの場合に、要件情報に基づき第１のマッピング処理を実行するマップ演算部４と、ＷＦジョブの場合には、要件情報と段情報とに基づき第２のマッピング処理を実行し、マップ演算部４を用いてリクエストマップに基づくバックフィル処理を実行するＷＦ段管理部５とを備える。【選択図】      図１
2015185003.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを構成するリクエストが必要とするノード数と実行時間とを含むリクエスト情報を記憶するリクエスト管理手段と、
前記ジョブを対象に、前記リクエストを解析することによって、前記ノード数と前記実行時間とを含む要件情報を求めると共に、前記ジョブがＷＦジョブか否かを判別し、前記ＷＦジョブであると判別した場合には、前記リクエストにおける依存性を解析することによりＷＦの段と、その段の順序関係に関する情報とを含む段情報を求める解析手段と、
前記ジョブが前記ＷＦジョブと種類の異なる他のジョブの場合に、前記要件情報に基づき第１のマッピング処理を実行するマップ演算手段と、
前記ジョブが前記ＷＦジョブの場合には、前記要件情報と前記段情報とに基づき第２のマッピング処理を実行し、前記マップ演算手段を用いて前記リクエスト情報に基づくバックフィル処理を実行するＷＦ段管理手段と、
を備えることを特徴とするスケジューラ装置。
【請求項２】
前記ＷＦ段管理手段は、前記第２のマッピング処理として、
前記段毎に、既にマッピングされているリクエストのうち、最後に終了するリクエストの終了予想時刻以降となるように前記リクエストをマッピングすると共に、そのマッピング結果を前記リクエスト管理手段に対して前記リクエスト情報に記憶するよう制御し、前記段毎に、その段に含まれるリクエストのうち、最初に開始されるリクエストの第１の開始時刻を記憶する
ことを特徴とする請求項１に記載のスケジューラ装置。
【請求項３】
前記ＷＦ段管理手段は、前記バックフィル処理として、
前記要件情報、前記段情報及び前記第１の開始時刻に基づき前記マップ演算処理手段に対して前記バックフィル処理を実行するよう制御し
前記マップ演算手段は、
前記制御に応じて、前記要件情報、前記段情報及び前記第１の開始時刻に基づき前記リクエスト情報を参照すると共に、前記リクエスト情報の中から要件を満たす空き空間を検索し、前記要件を満たす空き空間がある場合には、前記段毎に、前記リクエストをマッピングし、そのマッピング結果に基づき前記リクエスト管理手段に対して前記リクエスト情報に記憶するよう制御すると共に前記第１の開始時刻を更新する
ことを特徴とする請求項１または請求項２に記載のスケジューラ装置。
【請求項４】
前記段情報は、
１つ以上の前記リクエストにおける依存性により区分けされたＷＦの前記段と、それぞれの段に含まれるリクエストを識別可能なリクエストＩＤと、段毎の前記第１の開始時刻までに終了する必要のあるリクエストのリクエストＩＤと、前記段に含まれるリクエストのうち、同時に実行が必要となるリクエストのリクエストＩＤとを含む
ことを特徴とする請求項１乃至請求項３の何れかに記載のスケジューラ装置。
【請求項５】
１つ以上の前記リクエストのうち、特定のリクエストの終了またはキャンセルの発生を検出するのに応じて、前記ＷＦ段管理手段及びリクエスト管理手段に対して通知する監視手段を、さらに備え、
前記リクエスト管理手段は、
前記通知を受信するのに応じて、前記特定のリクエストを前記リクエスト情報から削除することにより該リクエスト情報を更新し、
前記ＷＦ段管理手段は、
前記通知を受信するのに応じて、前記要件情報、前記段情報及び前記第１の開始時刻に基づき前記マップ演算処理手段に対して前記バックフィル処理を実行するよう制御する
ことを特徴とする請求項１乃至請求項４の何れかに記載のスケジューラ装置。
【請求項６】
前記マップ演算手段は、前記第１のマッピング処理として、
前記要件情報に基づいて、前記リクエスト情報を参照すると共に、前記リクエスト情報の中から要件を満たす空き空間を検索し、前記要件を満たす空き空間に前記リクエストをマッピングすると共に、そのマッピング結果に基づき前記リクエスト管理手段に対して前記リクエスト情報に記憶するよう制御する
ことを特徴とする請求項１に記載のスケジューラ装置。
【請求項７】
請求項１乃至請求項６の何れかに記載されたスケジューラ装置と、前記スケジューラ装置と通信ネットワークを介して通信可能に接続する前記ジョブを入力可能なクライアント装置と、前記ジョブを実行可能な計算装置とを備え、
前記リクエスト管理手段は、
前記リクエストに設定された開始時刻が現在の時刻に達した場合に、該リクエストに基づき処理を実行するよう前記計算装置を制御する
ことを特徴とする演算処理システム。
【請求項８】
情報処理装置によって、
ジョブを構成するリクエストが必要とするノード数と実行時間とを含むリクエスト情報を記憶し、
前記ジョブを対象に、前記リクエストを解析することによって、前記ノード数と前記実行時間とを含む要件情報を求めると共に、前記ジョブがＷＦジョブか否かを判別し、前記ＷＦジョブであると判別した場合には、前記リクエストにおける依存性を解析することによりＷＦの段と、その段の順序関係に関する情報とを含む段情報を求め、
前記ジョブが前記ＷＦジョブと種類の異なる他のジョブの場合に、前記要件情報に基づき第１のマッピング処理を実行し、
前記ジョブが前記ＷＦジョブの場合には、前記要件情報と前記段情報とに基づき第２のマッピング処理を実行し、前記リクエスト情報に基づくバックフィル処理を実行する、
ことを特徴とするスケジューリング方法。
【請求項９】
ジョブを構成するリクエストが必要とするノード数と実行時間とを含むリクエスト情報を記憶する機能と、
前記ジョブを対象に、前記リクエストを解析することによって、前記ノード数と前記実行時間とを含む要件情報を求めると共に、前記ジョブがＷＦジョブか否かを判別し、前記ＷＦジョブであると判別した場合には、前記リクエストにおける依存性を解析することによりＷＦの段と、その段の順序関係に関する情報とを含む段情報を求める機能と、
前記ジョブが前記ＷＦジョブと種類の異なる他のジョブの場合に、前記要件情報に基づき第１のマッピング処理を実行する機能と、
前記ジョブが前記ＷＦジョブの場合には、前記要件情報と前記段情報とに基づき第２のマッピング処理を実行し、前記リクエスト情報に基づくバックフィル処理を実行する機能と、
をコンピュータに実現させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理において複数のジョブをスケジューリングする技術分野に関する。
【背景技術】
【０００２】
大規模な計算センターでは、高性能なベクトル型のスーパーコンピュータや汎用のプロセッサを備えたスカラクラスタを多数備え、これらシステムが連携して一つの大きな演算処理を行うことが知られている。このシステムでは、例えば、演算処理を効率よく行うことを目的として、しばしばワークフローが用いられる。尚、以下の説明において、本願では、ワークフローを「ＷＦ（Ｗｏｒｋｆｌｏｗ）」と略記する。
【０００３】
ここで、本願出願に先立って存在する代表的な関連技術としては、例えば、特許文献１がある。
【０００４】
特許文献１は、ジョブ管理装置、ジョブ管理方法及びプログラムに関する技術を開示する。特許文献１に開示されたジョブ管理装置は、投入されたジョブの実行に必要となる計算資源（リソース）要件を満たす仮想ノードを当該ジョブに割り当てる。また、当該ジョブ管理装置は、仮想ノードが要求するリソースを有する物理ノードを選択すると共に、その選択した物理ノードを当該ジョブに割り当てる。当該ジョブ管理装置は、物理ノードを選択するに際して、物理ノードのリソースだけでなく、ノード間の構成要件を示す情報に基づき当該物理ノードを選択する。これにより、特許文献１は、クラスタシステムにおいて実行するジョブに割り当てるノード構成の柔軟性とシステムの性能とを向上させることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２１０８３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ＷＦを用いたスケジューリングを可能とするシステムでは、ＷＦの進行に沿い、前工程におけるリクエストの終了を待って逐次的にリクエストをアサインすることが知られている。ところが、通常のジョブ（通常ジョブ）とＷＦのジョブ（ＷＦジョブ）とが混在する環境において当該システムは、ＷＦジョブを構成するリクエスト（ＷＦリクエスト）と異なる他の通常ジョブを構成するリクエスト（通常リクエスト）が存在することによって、例えば、ＷＦリクエスト間において通常リクエストの割り込みや同時に実行が必要となるリクエストの同期待ちなどが発生する。そのため、当該システムでは、ＷＦジョブ全体として最短のＴｕｒｎ＿Ａｒｏｕｎｄ＿Ｔｉｍｅ（以降、本願では、「ＴＡＴ」と略記する）を保障できないという問題がある。
【０００７】
この問題を解決するための技術として、ＲＣＰＳＰ（Ｒｅｓｏｕｒｃｅ＿Ｃｏｎｓｔｒａｉｎｅｄ＿Ｐｒｏｊｅｃｔ＿Ｓｃｈｅｄｕｌｉｎｇ＿Ｐｒｏｂｌｅｍ）を適用する方法が考えられる。当該方法は、時間の制約を持つＷＦリクエストとしてＷＦジョブを適用することによって、ＷＦリクエストの順序関係を維持しつつＷＦジョブ、或いは通常リクエストを含むリクエスト全体の最短のＴＡＴを保証するスケジューリングが期待できる。
【０００８】
しかしながら、一部のリクエストがキャンセルされる、或いは、緊急を要するリクエストの割り込みなどによりリクエストの状況が変化した場合に、係るシステムでは、最短のＴＡＴを保障することができない。その理由は、リクエストの状況が変化した場合に、当該方法は、ＷＦリクエストだけでなく、通常リクエストを含む全てのリクエストについて改めてマップの演算（以降、本願では、「再マップ演算」と称する）を行う必要があるからである。
【０００９】
この再マップ演算には、時間的な制約条件を満たす全ての組み合わせを導出すると共に、導出した組み合わせの中からＴＡＴが最短となる組み合わせにおいてスケジューリングする方法やこれに遺伝的アルゴリズムによる最適化を用いる方法などが考えられる。しかしながら、様々な最適化手法を用いたとしても同様に、大規模な演算処理を実行する環境において、係るシステムでは、再マップ演算に莫大な時間を要するだけでなく、再マップ演算自体がジョブの進行に間に合わなくなるという問題がある。即ち、当該システムは、動的にリクエストの状況が変化する大規模な計算機環境において、ＷＦジョブのＴＡＴを最短にするようなスケジューリングを行うことができない。
【００１０】
このように、プロジェクト管理ツールにおいて用いられるようなワークフローと違い、大規模な計算環境での利用を背景としたワークフローのインテリジェントなスケジューラは数多く存在しない。特に、ＷＦジョブ毎のＴＡＴを短縮すると共に、動的に変化するリクエストの状況に対応しながらバックフィルを行うようなスケジューラは存在しない。
【００１１】
特許文献１に開示されたジョブ管理装置は、バックフィルの特徴であるスケジューラマップを用いたバックフィルスケジューリングを行うという点が類似している。しかしながら、特許文献１には、ワークフローの構造を意識したスケジューリングについて、考慮されておらず何ら述べられていない。
【００１２】
本発明は、動的にリクエストの状況が変化する場合であっても、ワークフローを構成するリクエストにおけるＴＡＴをより短くすることが可能なようにスケジューリングするスケジューラ装置等を提供することを主たる目的とする。
【課題を解決するための手段】
【００１３】
上記の課題を達成すべく、本発明の一態様に係るスケジューラ装置は、以下の構成を備えることを特徴とする。
【００１４】
即ち、本発明の一態様に係るスケジューラ装置は、
ジョブを構成するリクエストが必要とするノード数と実行時間とを含むリクエスト情報を記憶するリクエスト管理手段と、
前記ジョブを対象に、前記リクエストを解析することによって、前記ノード数と前記実行時間とを含む要件情報を求めると共に、前記ジョブがＷＦジョブか否かを判別し、前記ＷＦジョブであると判別した場合には、前記リクエストにおける依存性を解析することによりＷＦの段と、その段の順序関係に関する情報とを含む段情報を求める解析手段と、
前記ジョブが前記ＷＦジョブと種類の異なる他のジョブの場合に、前記要件情報に基づき第１のマッピング処理を実行するマップ演算手段と、
前記ジョブが前記ＷＦジョブの場合には、前記要件情報と前記段情報とに基づき第２のマッピング処理を実行し、前記マップ演算手段を用いて前記リクエスト情報に基づくバックフィル処理を実行するＷＦ段管理手段と、
を備える。
【００１５】
或いは、同目的は、上記に示すスケジューラ装置を含む演算処理システムによっても達成される。
【００１６】
また、同目的を達成すべく、本発明の一態様に係るスケジューリング方法は、以下の構成を備える。
【００１７】
即ち、本発明の一態様に係るスケジューリング方法は、
情報処理装置によって、
ジョブを構成するリクエストが必要とするノード数と実行時間とを含むリクエスト情報を記憶し、
前記ジョブを対象に、前記リクエストを解析することによって、前記ノード数と前記実行時間とを含む要件情報を求めると共に、前記ジョブがＷＦジョブか否かを判別し、前記ＷＦジョブであると判別した場合には、前記リクエストにおける依存性を解析することによりＷＦの段と、その段の順序関係に関する情報とを含む段情報を求め、
前記ジョブが前記ＷＦジョブと種類の異なる他のジョブの場合に、前記要件情報に基づき第１のマッピング処理を実行し、
前記ジョブが前記ＷＦジョブの場合には、前記要件情報と前記段情報とに基づき第２のマッピング処理を実行し、前記リクエスト情報に基づくバックフィル処理を実行する。
【００１８】
尚、同目的は、上記の各構成を有するスケジューラ装置及びスケジューリング方法を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１９】
本発明によれば、動的にリクエストの状況が変化する場合であっても、ワークフローを構成するリクエストにおけるＴＡＴをより短くすることが可能なようにスケジューリングするスケジューラ装置等を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態におけるスケジューラ装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるスケジューラ装置が行うリクエストのスケジューリングする動作を示すフローチャートである。
【図３】本発明の第１の実施形態におけるスケジューラ装置が行うバックフィル処理の動作を示すフローチャートである。
【図４】本発明の第１の実施形態におけるスケジューラ装置が行う通常リクエストをスケジューリングした態様を概念的に例示する図である。
【図５】本発明の第１の実施形態におけるワークフローの構成を具体的に例示する図である。
【図６】本発明の第１の実施形態におけるＷＦ段管理部が行うＷＦリクエストをスケジューリングした態様を概念的に例示する図である。
【図７】本発明の第１の実施形態におけるＷＦ段管理部が行う第１の段のバックフィル処理によりスケジューリングする態様を概念的に例示する図である。
【図８】本発明の第１の実施形態における第２の段以降の段に含まれるリクエストを、マップ範囲外にスケジューリングした態様を概念的に例示する図である。
【図９】本発明の第１の実施形態におけるＷＦ段管理部が行う第２の段のバックフィル処理によりスケジューリングする態様を概念的に例示する図である。
【図１０】本発明の第１の実施形態における第３の段以降の段に含まれるリクエストを、マップ範囲外にスケジューリングした態様を概念的に例示する図である。
【図１１】本発明の第１の実施形態におけるＷＦ段管理部が行うバックフィル処理によりスケジューリングした態様を概念的に例示する図である。
【図１２】本発明の第２の実施形態におけるスケジューラ装置を含む演算処理システムの構成を示すブロック図である。
【図１３】本発明の第２の実施形態におけるスケジューラ装置が行うリクエストの終了またはキャンセルが発生した際の動作を示すフローチャートである。
【図１４】第２の実施形態におけるＷＦ段管理部がマップ演算部を用いてバックフィル処理によりスケジューリングする態様を概念的に例示する図である。
【図１５】本発明に係る各実施形態を実現可能な情報処理装置のハードウェア構成を例示的に説明するブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００２２】
＜第１の実施形態＞
図１は、本発明の第１の実施形態におけるスケジューラ装置１の構成を示すブロック図である。
【００２３】
図１において、スケジューラ装置１は、解析部２、リクエスト管理部３、マップ演算部４及びＷＦ段管理部５を備える。
【００２４】
解析部２は、例えば、不図示の外部装置（例えば、図１２に示すクライアント装置２１）から入力されたジョブ毎に、ＷＦを用いるＷＦジョブを構成するＷＦリクエスト、またはＷＦジョブと種類の異なる他の通常ジョブを構成する通常リクエストを解析する機能を有する。
【００２５】
また、解析部２は、ＷＦリクエストが入力された場合には、ＷＦジョブを構成する１つ以上のＷＦリクエストにおける依存性を解析する機能を有する。
【００２６】
尚、以下の説明では、説明の便宜上、ＷＦリクエストと通常リクエストとを総称して、単に「リクエスト」と称する。また、リクエストを解析することにより求めた（取得した）要件を示す情報を「要件情報」と称する（以下、各実施形態においても同様）。
【００２７】
より具体的に、解析部２は、通常ジョブを構成する１つ以上の通常リクエスト、またはＷＦジョブを構成する１つ以上のＷＦリクエストを解析することによって、当該リクエストが必要とするノード数や実行時間などの要件を示す要件情報を取得する。そして、解析部２は、取得した要件情報を、マップ演算部４またはＷＦ段管理部５に対して与える。
【００２８】
ここで、要件情報は、例えば、リクエストが必要とするノード数及び実行時間を含む情報である。また、入力されたジョブが予約ジョブの場合には、要件情報は、さらに、ジョブを開始する時刻として現在の時刻より先（つまり、未来）の時刻（予約時刻）を含むこととする。
【００２９】
次に、解析部２は、入力されたジョブがＷＦジョブか否かを、ＷＦリクエストに含まれるＷＦジョブを識別可能な識別子に基づき判別する。解析部２は、判別した結果、入力されたジョブがＷＦジョブであると判別した場合には、ＷＦジョブを構成する１つ以上のＷＦリクエストにおける依存性を解析する。
【００３０】
より具体的に、解析部２は、ＷＦリクエストに含まれるＷＦジョブを識別可能な識別子の有無を判別することによって、ＷＦジョブか否かを判別する。解析部２は、判別した結果、ＷＦジョブであると判別した場合には、クリティカルパスを構成する１つ以上のＷＦリクエストのうち、各ＷＦリクエストの依存性を解析する。また、解析部２は、解析した結果、依存性の数（段）と、その段の順序関係に関する情報とを含む情報（段情報）とを求める（取得する）。即ち、解析部２は、１つ以上のＷＦリクエストにおける依存性により区分けされた段と、段の順序関係に関する情報とを含む段情報を取得する。尚、解析部２が行う依存性の解析については、本実施形態において詳細に後述する。
【００３１】
また、以下の説明では、説明の便宜上、解析部２が求めた依存性の数を、ＷＦの「段」と称する。そして、以下の説明では、説明の便宜上、段と、その段の順序関係に関する情報とを含む情報を、「段情報」と称する（以下、各実施形態においても同様）。
【００３２】
ここで、段情報は、以下の情報を含む。即ち、
・段毎に、その段に含まれるＷＦリクエストを識別可能なリクエスト識別子（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ：以降、「ＩＤ」と称する）、
・段に含まれる複数のＷＦリクエストのうち、同時に実行する必要のあるＷＦリクエストのリクエストＩＤ及び
・各段に含まれるＷＦリクエストの処理が開始される時刻（第１の開始時刻）までに処理が終了していなければならないＷＦリクエストのリクエストＩＤを示す情報である。即ち、段毎の第１の開始時刻までに終了する必要のあるＷＦリクエストのリクエストＩＤを示す情報である。
【００３３】
次に、リクエスト管理部３は、入力された１つ以上のリクエストの状態を示すリクエスト状態（以下、本願では、「リクエストマップ」または「リクエスト情報」とも称する）を記憶する。より具体的に、リクエスト管理部３は、リクエストが必要とするノード数や実行時間についての情報を保持するリクエストマップ（状態）を記憶する。さらに、リクエスト管理部３は、マップ演算部４からの要求に応じてリクエストマップを更新する機能を有する。
【００３４】
また、リクエスト管理部３は、各リクエストに設定された開始時刻に現在の時刻が達した場合に、例えば、自装置と異なる他の装置（例えば、図１２に示す計算装置２２）においてジョブを実行するよう制御する機能を有する。
【００３５】
次に、マップ演算部４は、通常リクエストが入力された場合に、解析部２から得られた要件情報に基づいて、第１のマッピング処理を実行する。
【００３６】
より具体的に、マップ演算部４は、要件情報に基づいて、リクエスト管理部３に記憶された現在のリクエストマップを参照する。マップ演算部４は、リクエストマップの中から要件情報を満たす空き空間を検索する。マップ演算部４は、リクエストマップを検索した結果、要件を満たす空き空間があった場合には、その空き空間に通常リクエストを実行するノードと開始時間との決定（以降、本願では、「マッピング」と称する）を行う機能を有する。
【００３７】
そして、マップ演算部４は、マッピングを行った結果に基づきリクエスト管理部３が記憶する現在のリクエストマップを更新するようリクエスト管理部３に対して要求する（を制御する）。
【００３８】
また、マップ演算部４は、例えば、上述した予約ジョブの要件が要件情報に含まれる場合には、リクエストマップの中から要件情報に含まれる現在の時刻より先に指定された予約時刻以降の空き空間を検索すると共に、要件情報を満たす空き空間にマッピングする。即ち、マップ演算部４は、予約機能を持つ。
【００３９】
マップ演算部４は、ＷＦ段管理部５からの要求に応じて、特定の段に含まれるＷＦリクエストの要件を満たす空き空間を検索すると共に、その要件を満たす空き空間に当該ＷＦリクエストをマッピングする機能を有する。
【００４０】
次に、ＷＦ段管理部５は、解析部２から得た要件情報と段情報とを記憶する。また、ＷＦ段管理部５は、解析部２から得た要件情報と段情報とに基づいて、１つ以上のＷＦリクエストの第２のマッピング処理を実行する。また、ＷＦ段管理部５は、マッピングを行った結果に基づきリクエスト管理部３が記憶するリクエストマップを更新するようリクエスト管理部３に対して要求する。そして、ＷＦ段管理部５は、マッピングを行った結果に基づいて、段毎に、その段に含まれるリクエストのうち、最初に開始されるリクエストの開始時刻を第１の開始時刻として記憶する。
【００４１】
より具体的に、ＷＦ段管理部５は、段毎に、要件情報と段情報とに基づいて、既にマッピングされているリクエストのうち、最後に終了するリクエストの終了予想時刻以降に１つ以上のＷＦリクエストの予約（つまり、マッピング）をする。また、ＷＦ段管理部５は、段毎に、その段に含まれるＷＦリクエストのうち、最初に実行されるＷＦリクエストに配置した時刻（つまり、開始時刻）を、第１の開始時刻として記憶する。即ち、ＷＦ段管理部５は、前の段に含まれるＷＦリクエストの終了予想時刻のうち、最も遅い時刻以降となるように、次の段の開始時刻（第１の開始時刻）に当該次の段に含まれるＷＦリクエストを配置する。
【００４２】
ここで、終了予想時刻は、段に含まれるＷＦリクエストの開始時刻に、そのＷＦリクエストの実行時間を加算することによって求めた時刻である。
【００４３】
次に、ＷＦ段管理部５は、先頭の段から順に、マップ演算部４を用いてリクエスト管理部３に記憶されたリクエストマップに基づきバックフィル処理を実行する。
【００４４】
より具体的に、ＷＦ段管理部５は、先頭の段から順に、マップ演算部４を用いてリクエスト管理部３に記憶されたリクエストマップを参照すると共に、リクエストマップの中から要件を満たす空き空間を検索する。そして、ＷＦ段管理部５は、当該要件を満たす空き空間があった場合には、バックフィル処理の対象であるＷＦリクエストを、その空き空間にマップ演算部４を用いて移動する。尚、バックフィル処理については、本実施形態において後述する。
【００４５】
次に、以下の説明において、より具体的に、本実施形態におけるスケジューラ装置１の動作について説明する。
【００４６】
図２は、本発明の第１の実施形態におけるスケジューラ装置１が行うリクエストのスケジューリングする動作を示すフローチャートである。係るフローチャートに沿ってスケジューラ装置１の動作手順を説明する。
【００４７】
ステップＳ１：
解析部２は、通常ジョブを構成する１つ以上の通常リクエスト、またはＷＦジョブを構成する１つ以上のＷＦリクエストが入力されるのに応じて、そのリクエストを解析することによって、当該リクエストが必要とするノード数や実行時間などの要件を示す要件情報を取得する。
【００４８】
より具体的に、解析部２は、ジョブスクリプトなどのジョブ要件を解析することにより、ＷＦリクエスト、または通常リクエストが必要とするノード数や実行時間などの要件を示す情報（要件情報）を取得する。
【００４９】
以下の説明では、リクエストは、例えば、ジョブの要件として必要なノード数と実行時間などが記述されたジョブスクリプトなどである。また、ＷＦリクエストには、さらに、ＷＦジョブであることを識別可能な識別子が記述されている。そして、例えば、当該要件には、予約時刻を記述することもできる。即ち、当該リクエストには、予約ジョブの要件を記述することが可能である。
【００５０】
ステップＳ２：
解析部２は、入力されたリクエストを解析した結果、ＷＦジョブか否かを判別する。
【００５１】
ステップＳ２において「ＹＥＳ」：
解析部２は、ＷＦジョブか否かを判別した結果、ＷＦジョブであると判別した場合に、処理をステップＳ６に進める。
【００５２】
ステップＳ２において「ＮＯ」：
解析部２は、ＷＦジョブか否かを判別した結果、ＷＦジョブでないと判別した場合に、処理をステップＳ３に進める。即ち、解析部２は、入力されたリクエストが通常ジョブであると判別した場合に、処理をステップＳ３に進める。
【００５３】
ステップＳ３：
解析部２は、取得した要件情報を、マップ演算部４に対して与える。
【００５４】
ステップＳ４：
マップ演算部４は、解析部２から得た要件情報に基づいて、マッピング処理を実行する。
【００５５】
より具体的に、マップ演算部４は、要件情報に基づいて、リクエスト管理部３に記憶された現在のリクエストマップを参照する。マップ演算部４は、リクエストマップの中から要件情報を満たす空き空間を検索する。マップ演算部４は、リクエストマップを検索した結果、要件を満たす空き空間があった場合には、その空き空間に通常リクエストをマッピングする。そして、マップ演算部４は、マッピングを行った結果に基づきリクエスト管理部３が記憶する現在のリクエストマップを更新するようリクエスト管理部３に対して要求する。
【００５６】
ステップＳ５：
リクエスト管理部３は、マップ演算部４からの要求に応じて、リクエストマップを更新する。
【００５７】
ステップＳ６：
解析部２は、ＷＦジョブを構成する１つ以上のＷＦリクエストにおける依存性を解析することによって、ＷＦの段と、その段の順序関係に関する情報とを含む段情報を取得する。
【００５８】
ステップＳ７：
解析部２は、取得した要件情報と段情報とを、ＷＦ段管理部５に対して与える。
【００５９】
ステップＳ８：
ＷＦ段管理部５は、解析部２から得た要件情報及び段情報を記憶する。また、ＷＦ段管理部５は、要件情報及び段情報に基づいて、第２のマッピング処理を実行する。ＷＦ段管理部５は、マッピングを行った結果に基づきリクエストマップを更新するようリクエスト管理部３に対して要求する。そして、ＷＦ段管理部５は、マッピングを行った結果に基づいて、段毎に、第１の開始時刻を記憶する。
【００６０】
ステップＳ９：
ＷＦ段管理部５は、先頭の段から順に、マップ演算部４を用いてリクエスト管理部３に記憶されたリクエストマップに基づきバックフィル処理を実行する。
【００６１】
次に、以下の説明において、より具体的に、本実施形態におけるスケジューラ装置１が行うバックフィル処理の動作について説明する。
【００６２】
図３は、本発明の第１の実施形態におけるスケジューラ装置１が行うバックフィル処理の動作を示すフローチャートである。係るフローチャートに沿ってスケジューラ装置１の動作手順を説明する。
【００６３】
ステップＳ２１：
ＷＦ段管理部５は、要件情報、段情報及び段毎の第１の開始時刻を、マップ演算部４に対して与える。
【００６４】
ステップＳ２２：
マップ演算部４は、ＷＦ段管理部５から得た要件情報、段情報及び段毎の第１の開始時刻に基づいて、リクエスト管理部３に記憶された現在のリクエストマップを参照する。マップ演算部４は、段毎に、リクエストマップの中から要件情報と段情報とを満たす空き空間を検索する。
【００６５】
より具体的に、マップ演算部４は、先頭の段から順に、段に含まれる１つ以上のＷＦリクエストや同時に実行が必要となるＷＦリクエスト、各段における第１の開始時刻までに終わっていなければならないＷＦリクエストなど段情報に含まれる要件と要件情報に含まれる要件とを満たす空き空間を、リクエストマップの中から検索する。
【００６６】
尚、説明の便宜上、図３には図示していないが、マップ演算部４は、バックフィル処理の対象である全ての段に対して処理が終了した際には、バックフィル処理を終了することする。
【００６７】
ステップＳ２３：
マップ演算部４は、要件を満たす空き空間を、リクエストマップの中から検索した結果、空き空間の有無を判別する。
【００６８】
ステップＳ２３において「ＹＥＳ」：
マップ演算部４は、要件を満たす空き空間を、リクエストマップの中から検索した結果、空き空間があると判別する場合に、処理をステップＳ２４に進める。
【００６９】
ステップＳ２３において「ＮＯ」：
マップ演算部４は、要件を満たす空き空間を、リクエストマップの中から検索した結果、空き空間がないと判別する場合に、処理をステップＳ２２に戻す。
【００７０】
ステップＳ２４：
マップ演算部４は、要件を満たす空き空間に、ＷＦリクエストをマッピングする。
【００７１】
ステップＳ２５：
マップ演算部４は、マッピングを行った結果に基づき現在のリクエストマップを更新するようリクエスト管理部３に対して要求する。また、マップ演算部４は、マッピングにより変更となったＷＦリクエストの開始時刻を、そのリクエストを含む段の第１の開始時刻として更新する。
【００７２】
次に、以下の説明では、より具体的に、スケジューラ装置１が通常リクエストをスケジューリングする処理について、図２及び図４を参照して説明する。
【００７３】
図４は、本発明の第１の実施形態におけるスケジューラ装置１が行う通常リクエストをスケジューリングした態様を概念的に例示する図である。
【００７４】
図４は、縦軸にノード数を表す。そして、図４は、横軸に経過時間を表す。また、図４には、リクエストを実行するのに必要となるノード数と実行時間とを矩形領域として示す。図４に示すマップ範囲とは、通常ジョブを構成するリクエストをマッピング可能な領域である。尚、以下の説明では、図６乃至図１１及び図１４も同様である。そのため、以下の説明において、重複する説明は省略する。
【００７５】
ここでは、説明の便宜上、一例として、通常リクエストとして「リクエストＲ１」、「リクエストＲ２」、「リクエストＲ３」及び「リクエストＲ４」が、例えば、外部装置から入力されたこととする。
【００７６】
尚、説明の便宜上、上述した構成を例に説明するが、本実施形態を例に説明する本発明は、前述した構成にはこれに限定されない（以下の実施形態においても同様）。
【００７７】
まず、解析部２は、通常リクエストが入力されるのに応じて、その通常リクエストを解析することによって、当該通常リクエストが必要とするノード数や実行時間などの要件を示す要件情報を取得する（ステップＳ１）。解析部２は、入力された通常リクエストを解析した結果、ＷＦリクエストでないと判別する（ステップＳ２において「ＮＯ」）。解析部２は、取得した要件情報を、マップ演算部４に対して与える（ステップＳ３）。
【００７８】
マップ演算部４は、解析部２から得た要件情報に基づいて、リクエスト管理部３に記憶された現在のリクエストマップを参照する。マップ演算部４は、リクエストマップの中から要件情報を満たす空き空間を検索する。例えば、予約ジョブである場合には、マップ演算部４は、開始時刻を示す予約時刻以降の空間を検索する。マップ演算部４は、リクエストマップを検索した結果、要件を満たす空き空間があった場合には、その空き空間に通常リクエストをマッピングする。そして、マップ演算部４は、マッピングを行った結果に基づき現在のリクエストマップを更新するようリクエスト管理部３に対して要求する（ステップＳ４）。リクエスト管理部３は、マップ演算部４からの要求に応じて、リクエストマップを更新する（ステップＳ５）。
【００７９】
このように、スケジューラ装置１は、「リクエストＲ１」乃至「リクエストＲ４」に対して、「リクエストＲ１」から順に、繰り返し処理を実行することにより、図４に示すマップを形成することができる。
【００８０】
次に、以下の説明では、より具体的に、スケジューラ装置１がＷＦリクエストをスケジューリングする処理について、図２乃至図１１を参照して説明する。
【００８１】
ここでは、説明の便宜上、一例として、通常リクエストとして「リクエストＲ１」、「リクエストＲ２」、「リクエストＲ３」及び「リクエストＲ４」が、例えば、外部装置から入力された状態を初期状態とすることとする。
【００８２】
また、以下の説明では、例えば、ＷＦジョブを構成する１つ以上のＷＦリクエストとして「リクエストＡ」、「リクエストＸ」、「リクエストＹ」、「リクエストＭ」、「リクエストＮ」及び「リクエストＢ」が外部装置から入力されることとする。
【００８３】
より具体的に、以下の説明では、ＷＦリクエストについて図５を参照して説明する。図５は、本発明の第１の実施形態におけるワークフローの構成を具体的に例示する図である。
【００８４】
図５において、「リクエストＸ」及び「リクエストＹ」は、「リクエストＡ」に示す処理が終了した際に、同時に実行することが指定されていることを示す。また、「リクエストＭ」及び「リクエストＮ」は、「リクエストＸ」に示す処理が終了した際に、順に実行することが指定されていることを示す。尚、「リクエストＭ」と「リクエストＮ」との順序に制約は無いこととする。そして、「リクエストＢ」は、「リクエストＭ」、「リクエストＮ」及び「リクエストＹ」が終了した際に、実行することが指定されていることを示す。
【００８５】
また、これらリクエストの実行時間は、それぞれ「リクエストＡ」に「ａ」、「リクエストＸ」に「ｘ」、「リクエストＹ」に「ｙ」、「リクエストＭ」に「ｍ」、「リクエストＮ」に「ｎ」及び「リクエストＢ」に「ｂ」が指定されていることとする。
【００８６】
尚、説明の便宜上、上述した構成を例に説明するが、本実施形態を例に説明する本発明は、前述した構成にはこれに限定されない（以下の実施形態においても同様）。
【００８７】
まず、解析部２は、ＷＦリクエストが入力されるのに応じて、そのＷＦリクエストを解析することによって、当該ＷＦリクエストが必要とするノード数や実行時間などの要件を示す要件情報を取得する（ステップＳ１）。解析部２は、入力されたＷＦリクエストを解析した結果、ＷＦリクエストであると判別する（ステップＳ２において「ＹＥＳ」）。解析部２は、ＷＦジョブを構成する１つ以上のＷＦリクエストにおける依存性を解析することによって、ＷＦの段を含む段情報を取得する（ステップＳ６）。
【００８８】
より具体的に、図５に示すように、初めに実行されるリクエストは、「リクエストＡ」だけである。そのため、第１の段は、「リクエストＡ」を含む。次に、第１の段に含まれるリクエストの終了に依存しているリクエストは、「リクエストＸ」及び「リクエストＹ」である。そのため、第２の段は、「リクエストＸ」及び「リクエストＹ」を含む。そして、第２の段に含まれるリクエストの終了に依存しているリクエストは、「リクエストＭ」、「リクエストＮ」及び「リクエストＢ」である。しかしながら、「リクエストＢ」は、「リクエストＭ」及び「リクエストＮ」の終了にも依存している。そのため、第３の段は、「リクエストＭ」及び「リクエストＮ」を含む。最後に、第３の段に含まれるリクエストの終了に依存しているリクエストは、「リクエストＢ」である。そのため、第４の段は、「リクエストＢ」を含む。
【００８９】
このように、解析部２は、ＷＦリクエストを解析することによって、リクエストの終了に依存する数を求める。また、解析部２は、段毎に、段に含まれる１つ以上のリクエストを識別可能なリクエストＩＤを取得する。
【００９０】
また、解析部２は、段に含まれるリクエストのうち、同時に実行が必要なリクエストのリクエストＩＤを取得する。より具体的に、解析部２は、同時に実行が必要なリクエストとして「リクエストＸ」及び「リクエストＹ」のＩＤを取得する。
【００９１】
さらに、解析部２は、各段に含まれるリクエストの処理が開始される（つまり、開始時刻）までに処理が終了していなければならないリクエストのリクエストＩＤを取得する。
【００９２】
より具体的に、第２の段に含まれる「リクエストＸ」及び「リクエストＹ」の処理が開始されるまでに処理が終了していなければならないリクエストは、「リクエストＡ」である。そのため、解析部２は、第２の段の開始までに終わっていなければならないリクエストとして「リクエストＡ」のＩＤを取得する。次に、第３の段に含まれる「リクエストＭ」及び「リクエストＮ」の処理が開始されるまでに処理が終了していなければならないリクエストは、「リクエストＸ」である。そのため、解析部２は、第３の段の開始までに終わっていなければならないリクエストとして「リクエストＸ」のＩＤを取得する。そして、第４の段に含まれる「リクエストＢ」の処理が開始されるまでに処理が終了していなければならないリクエストは、「リクエストＭ」、「リクエストＮ」及び「リクエストＹ」である。そのため、解析部２は、第４の段の開始までに終わっていなければならないリクエストとして「リクエストＭ」、「リクエストＮ」及び「リクエストＹ」のＩＤを取得する。
【００９３】
次に、解析部２は、取得した要件情報と段情報とを、ＷＦ段管理部５に対して与える（ステップＳ７）。
【００９４】
図６は、本発明の第１の実施形態におけるＷＦ段管理部５が行うＷＦリクエストをスケジューリングした態様を概念的に例示する図である。
【００９５】
図６に示すように、ＷＦ段管理部５は、段毎に、要件情報及び段情報に基づいて、既にマッピングされているリクエストのうち、最後に終了するリクエストの終了予想時刻以降に段順となるように予約する。即ち、ＷＦ段管理部５は、現在のマップ範囲外に、第１の段、第２の段、第ｎの段と段順となるようにマッピングする。また、ＷＦ段管理部５は、マッピングを行った結果に基づきリクエストマップを更新するようリクエスト管理部３に対して要求する。そして、ＷＦ段管理部５は、段毎に、第１の開始時刻を記憶する（ステップＳ８）。
【００９６】
次に、ＷＦ段管理部５は、段毎に、マップ演算部４を用いてリクエスト管理部３が記憶するリクエストマップを参照しつつ、バックフィル処理を実行する。
【００９７】
ＷＦ段管理部５は、要件情報、段情報及び段毎の第１の開始時刻を、マップ演算部４に対して与える（ステップＳ２１）。マップ演算部４は、ＷＦ段管理部５から得た要件情報、段情報及び段毎の第１の開始時刻に基づいて、リクエスト管理部３に記憶された現在のリクエストマップを参照する。マップ演算部４は、段毎に、リクエストマップの中から要件情報と段情報とを満たす空き空間を検索する（ステップＳ２２）。
【００９８】
以下の説明では、より具体的に、「リクエストＡ」に対するバックフィル処理について説明する。
【００９９】
図７は、本発明の第１の実施形態におけるＷＦ段管理部５が行う第１の段のバックフィル処理によりスケジューリングする態様を概念的に例示する図である。
【０１００】
マップ演算部４は、リクエストマップの中から第１の段に含まれる「リクエストＡ」の要件情報と段情報とを満たす空き空間を検索した結果、図７に示す最も早い時刻に要件を満たす空き空間が存在したため、図７に示す矢印方向に「リクエストＡ」を移動する。それに伴い、マップ演算部４は、配置した「リクエストＡ」の開始時刻を、第１の段における第１の開始時刻として記憶する。
【０１０１】
次に、マップ演算部４は、第２の段乃至第４の段に含まれるリクエストを、図８に示すようにマップ範囲外にマッピングする。
【０１０２】
図８は、本発明の第１の実施形態における第２の段以降の段に含まれるリクエストを、マップ範囲外にスケジューリングした態様を概念的に例示する図である。
【０１０３】
次に、以下の説明では、より具体的に、第２の段に含まれる「リクエストＸ」及び「リクエストＹ」に対するバックフィル処理について説明する。
【０１０４】
「リクエストＸ」及び「リクエストＹ」は、同時に実行する必要がある。また、第２の段の開始までに終わっていなければならないリクエストは、「リクエストＡ」である。そのため、マップ演算部４は、第１の段における第１の開始時刻と「リクエストＡ」の実行時間「ａ」とに基づいて、「リクエストＡ」の終了予想時刻を算出する。また、マップ演算部４は、算出した終了予想時刻以降に、「リクエストＸ」及び「リクエストＹ」の要件を満たす空き空間を検索する。
【０１０５】
尚、「リクエストＡ」の終了予測時刻は、第１の段における第１の開始時刻に「リクエストＡ」の実行時間「ａ」を加算することによって算出することができる。
【０１０６】
図９は、本発明の第１の実施形態におけるＷＦ段管理部５が行う第２の段のバックフィル処理によりスケジューリングする態様を概念的に例示する図である。
【０１０７】
マップ演算部４は、リクエストマップの中から「リクエストＸ」及び「リクエストＹ」の要件情報と段情報とを満たす空き空間を検索した結果、要件を満たす空き空間が「リクエストＲ２」の処理が終了する時刻（終了予測時刻）以降に存在したため、図９に示す矢印方向に「リクエストＸ」及び「リクエストＹ」を移動する。それに伴い、マップ演算部４は、配置した「リクエストＸ」及び「リクエストＹ」の開始時刻を、第２の段における第１の開始時刻として記憶する。
【０１０８】
次に、マップ演算部４は、第３の段及び第４の段に含まれるリクエストを、図１０に示すようにマップ範囲外にマッピングする。
【０１０９】
図１０は、本発明の第１の実施形態における第３の段以降の段に含まれるリクエストを、マップ範囲外にスケジューリングした態様を概念的に例示する図である。
【０１１０】
上述したように、ＷＦ段管理部５は、マップ演算部４を用いて第３の段に含まれる「リクエストＭ」及び「リクエストＮ」に対してもバックフィル処理を実行する。尚、第３の段に含まれる「リクエストＭ」及び「リクエストＮ」に対するバックフィル処理は、上述において説明した処理と同様である。そのため、重複する説明は省略する。また、ＷＦ段管理部５は、マップ演算部４を用いて第４の段に含まれる「リクエストＢ」に対してバックフィル処理を実行した結果、移動可能な空き空間がないため、「リクエストＢ」の移動を行わない。図１１は、本発明の第１の実施形態におけるＷＦ段管理部５が行うバックフィル処理によりスケジューリングした態様を概念的に例示する図である。
【０１１１】
このように本実施の形態に係るスケジューラ装置１によれば、動的にリクエストの状況が変化する場合であっても、ワークフローを構成するリクエストにおけるＴＡＴをより短くすることが可能なようにスケジューリングすることができる。その理由は、以下に述べる通りである。
【０１１２】
即ち、スケジューラ装置１は、クリティカルパスにおける段毎の順序関係や第１の開始時刻などの段情報を管理するＷＦ段管理部５を備えるからである。これにより、スケジューラ装置１は、ＷＦジョブ毎に、ＷＦの順序関係を維持しつつバックフィル処理を実行することができる。即ち、ＷＦ段管理部５は、複数のＷＦジョブのうち、他のＷＦジョブのバックフィル処理に影響を受けることなく、処理中のＷＦジョブのバックフィル処理だけを行えるからである。
【０１１３】
＜第２の実施形態＞
次に、上述した本発明の第１の実施形態に係るスケジューラ装置１を基本とする第２の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。その際、上述した各実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【０１１４】
本発明の第２の実施形態におけるスケジューラ装置１０について、図１１乃至図１４を参照して説明する。
【０１１５】
図１２は、本発明の第２の実施形態におけるスケジューラ装置１０を含む演算処理システム２０の構成を示すブロック図である。
【０１１６】
図１２において、演算処理システム２０は、スケジューラ装置１０、クライアント装置２１及び計算装置２２を有する。また、スケジューラ装置１０、クライアント装置２１及び計算装置２２は、通信ネットワーク１１０を介して通信可能に接続する。スケジューラ装置１０は、解析部２、リクエスト管理部１１、マップ演算部４、ＷＦ段管理部１２及び監視部１３を備える。
【０１１７】
尚、図１２において、第２の実施形態では、説明をよりわかりやすくすることを目的として、スケジューラ装置１０は、１つのクライアント装置２１及び計算装置２２と通信ネットワーク１１０を介して接続する構成を例に説明する。しかしながら、本発明に係る実施形態は、係る構成に限定されない。スケジューラ装置１０は、複数のクライアント装置２１及び計算装置２２と通信ネットワーク１１０を介して接続する構成を採用することができる。
【０１１８】
より具体的に、クライアント装置２１は、例えば、ワークステーションなどのサーバ装置を想定している。クライアント装置２１は、スケジューラ装置１０に対して通常ジョブを構成する１つ以上の通常リクエストまたはＷＦジョブを構成する１つ以上のＷＦリクエストを投入する。
【０１１９】
計算装置２２は、例えば、スーパーコンピュータやＨＰＣ（Ｈｉｇｈ＿Ｐｅｒｆｏｒｍａｎｃｅ＿Ｃｏｍｐｕｔｉｎｇ）サーバなどの計算に特化した装置を想定している。計算装置２２は、スケジューリングされた通常ジョブまたはＷＦジョブを実行する。
【０１２０】
監視部１３は、計算装置２２において実行される通常ジョブまたはＷＦジョブの状態を監視する。また、監視部１３は、通常ジョブまたはＷＦジョブを構成する特定のリクエストの終了やキャンセルを検出した際に、終了またはキャンセルに対応する通知を、リクエスト管理部１１及びＷＦ段管理部１２に対して発行する。
【０１２１】
これにより、リクエスト管理部１１は、監視部１３から終了またはキャンセルを示す通知を受信するのに応じて、管理するリクエストマップから終了またはキャンセルされた特定のリクエストを削除する。
【０１２２】
そして、ＷＦ段管理部１２は、監視部１３から終了またはキャンセルを示す通知を受信するのに応じて、バックフィル処理を実行する。即ち、ＷＦ段管理部１２は、ジョブが終了した際、またはキャンセルされた際に、再マップ演算処理を実行することができる。
【０１２３】
次に、以下の説明において、より具体的に、本実施形態におけるスケジューラ装置１０が行うリクエストがキャンセルされた際の処理について、図１１、図１３及び図１４を参照して説明する。
【０１２４】
図１３は、本発明の第２の実施形態におけるスケジューラ装置１０が行うリクエストの終了またはキャンセルが発生した際の動作を示すフローチャートである。係るフローチャートに沿ってスケジューラ装置１０の動作手順を説明する。
【０１２５】
以下の説明では、説明の便宜上、一例として、第１の実施形態において説明した図１１に示す状態から「リクエストＲ３」のキャンセルが発生したこととする。
【０１２６】
説明の便宜上、上述した構成を例に説明するが、本実施形態を例に説明する本発明は、前述した構成にはこれに限定されない（以下の実施形態においても同様）。
【０１２７】
ステップＳ３１：
監視部１３は、計算装置２２において実行される通常ジョブまたはＷＦジョブの状態を監視する。即ち、監視部１３は、計算装置２２において実行される通常ジョブまたはＷＦジョブを構成する特定のリクエストの終了、またはキャンセルが発生したか否かを判別する。
【０１２８】
ステップＳ３１において「ＹＥＳ」：
監視部１３は、判別した結果、特定のリクエストの終了、またはキャンセルが発生したと判別する場合に、終了またはキャンセルが発生したことを示す通知を、リクエスト管理部１１及びＷＦ段管理部１２に対して発行する。また、監視部１３は、処理をステップＳ３２に進める。
【０１２９】
ここでは、監視部１３は、クライアント装置２１から入力されたキャンセルの要求を検出すると共に、リクエスト管理部１１及びＷＦ段管理部１２に対して「リクエストＲ３」のキャンセルが発生したことを通知することとする。
【０１３０】
ステップＳ３１において「ＮＯ」：
監視部１３は、判別した結果、特定のリクエストの終了、またはキャンセルが発生していないと判別する場合に、処理をステップＳ３１に戻す。即ち、監視部１３は、監視を継続する。
【０１３１】
ステップＳ３２：
リクエスト管理部１１は、監視部１３から通知を受信する。リクエスト管理部１１は、受信した通知に基づき、削除すべき特定のリクエストをリクエストマップから削除する。即ち、リクエスト管理部１１は、特定のリクエストをリクエストマップから削除することによって、当該リクエストマップを更新する。
【０１３２】
ここでは、リクエスト管理部１１は、「リクエストＲ３」を、図１１において説明したリクエストマップから削除することとする。
【０１３３】
ステップＳ３３：
ＷＦ段管理部１２は、監視部１３から通知を受信する。ＷＦ段管理部１２は、監視部１３から通知を受信するのに応じて、マップ演算部４を用いてバックフィル処理を実行する。
【０１３４】
ここでは、ＷＦ段管理部１２は、図１１に示すように「リクエストＲ３」が占めていた空間に関連する段以降のバックフィル処理を実行することとする。
【０１３５】
より具体的に、以下の説明では、ＷＦ段管理部１２がマップ演算部４を用いて実行するバックフィル処理について、図１１及び図１４を参照して説明する。
【０１３６】
図１４は、第２の実施形態におけるＷＦ段管理部１２がマップ演算部４を用いてバックフィル処理によりスケジューリングする態様を概念的に例示する図である。
【０１３７】
ＷＦ段管理部１２は、マップ演算部４を用いて図１１に示すリクエストマップにおける第３の段から順に空き空間を検索する。
【０１３８】
より具体的に、ＷＦ段管理部１２は、要件情報、段情報及び段毎の第１の開始時刻をマップ演算部４に対して与える。マップ演算部４は、ＷＦ段管理部１２から得た情報に基づきリクエストマップの中から要件を満たす空き空間を検索する。マップ演算部４は、得た情報に基づき空きの空間を検索した結果、ＷＦリクエストの要件を満たす空間があると判別する場合には、その空間にＷＦリクエストをマッピングすることによって、リクエスト管理部１１が記憶するリクエストマップを更新するようリクエスト管理部１１に対して要求する。
【０１３９】
ここでは、第２の段については、第２の段における第１の開始時刻と「リクエストＲ３」の予約時刻とが同じである。そのため、第２の段については、バックフィル処理を実行することができない。
【０１４０】
そして、第３の段については、第３の段における第１の開始時刻が「リクエストＲ３」の予約時刻より後に設定されているため、バックフィル処理を実行可能である。そのため、マップ演算部４は、第３の段に含まれる「リクエストＭ」を、「リクエストＮ」の予約時刻を示す位置に移動する。即ち、マップ演算部４は、「リクエストＭ」を、図１４に示す矢印方向に移動する。
【０１４１】
次に、以下の説明では、第４の段の処理について説明する。
【０１４２】
第４の段に含まれる「リクエストＢ」を開始する前に終了していなければならないＷＦリクエストは、「リクエストＭ」、「リクエストＮ」及び「リクエストＹ」である。マップ演算部４は、「リクエストＭ」、「リクエストＮ」及び「リクエストＹ」のうち、最も終了予想時刻の遅い「リクエストＭ」の終了予想時刻が更新されたため、「リクエストＢ」のバックフィル処理を実行する。即ち、マップ演算部４は、「リクエストＭ」の終了予想時刻以降に、「リクエストＢ」の要件を満たす空きの空間を検索する。マップ演算部４は、「リクエストＢ」をマッピングすることによって、リクエスト管理部１１が記憶するリクエストマップを更新するようリクエスト管理部１１に対して要求する。また、「リクエストＢ」をマッピングすることにより第１の開始時刻が変更となるため、ＷＦ段管理部１２は、「リクエストＢ」における第１の開始時刻を、マッピング後の開始時刻（第１の開始時刻）に更新する。
【０１４３】
ここでは、マップ演算部４は、第４の段に含まれる「リクエストＢ」を、「リクエストＭ」の終了予想時刻後となるように移動する。即ち、マップ演算部４は、「リクエストＢ」を、図１４に示す矢印方向に移動する。
【０１４４】
このように本実施の形態に係るスケジューラ装置１０によれば、第１の実施形態において説明した効果を享受できると共に、さらに、動的にリクエストの状況が変化する場合であっても、ワークフローを構成するリクエストにおけるＴＡＴをより短くすることが可能なようにスケジューリングすることができる。
【０１４５】
その理由は、スケジューラ装置１０は、さらに、計算装置２２において実行される通常ジョブまたはＷＦジョブを構成する特定のリクエストの終了、またはキャンセルが発生したか否かを監視する監視部１３を備えるからである。また、スケジューラ装置１０は、監視部１３からの通知に応じて、リクエストマップを更新するリクエスト管理部１１と、バックフィル処理を実行するＷＦ段管理部１２とを備えるからである。
【０１４６】
そして、スケジューラ装置１０は、段毎に、バックフィル処理の実行制御が行える。その理由は、スケジューラ装置１０は、必要最小限の段にのみ、再マップ演算処理を行えるためである。
【０１４７】
（ハードウェア構成例）
上述した実施形態において図面に示した各部は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。これらの各ソフトウェアモジュールは、専用のハードウェアによって実現してもよい。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定されうる。この場合のハードウェア環境の一例を、図１５を参照して説明する。
【０１４８】
図１５は、本発明の模範的な実施形態に係るスケジューラ装置を実行可能な情報処理装置３００（コンピュータ）の構成を例示的に説明する図である。即ち、図１５は、図１に示したスケジューラ装置１、或いは、図１２に示したスケジューラ装置１０、の全体または一部のスケジューラ装置を実現可能なサーバ等のコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【０１４９】
図１５に示した情報処理装置３００は、ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）３０１、ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）３０２、ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）３０３、ハードディスク３０４（記憶装置）、並びに外部装置との通信インタフェース（Ｉｎｔｅｒｆａｃｅ：以降、「Ｉ／Ｆ」と称する）３０５、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記憶媒体３０７に格納されたデータを読み書き可能なリーダライタ３０８を備え、これらの構成がバス３０６（通信線）を介して接続された一般的なコンピュータである。
【０１５０】
そして、上述した実施形態を例に説明した本発明は、図１５に示した情報処理装置３００に対して、その説明において参照したブロック構成図（図１、図１２）或いはフローチャート（図２、図３、図１３）の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、当該ハードウェアのＣＰＵ３０１に読み出して実行することによって達成される。また、当該装置内に供給されたコンピュータ・プログラムは、読み書き可能な一時記憶メモリ（ＲＡＭ３０３）またはハードディスク３０４等の不揮発性の記憶デバイスに格納すれば良い。
【０１５１】
また、前記の場合において、当該ハードウェア内へのコンピュータ・プログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体３０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータ・プログラムを構成するコード或いは、そのコードが格納された記憶媒体によって構成されると捉えることができる。
【産業上の利用可能性】
【０１５２】
本発明は、上述した各実施形態には限定されない。本発明は、大規模な計算環境におけるワークフローを処理可能なジョブスケジューラの実装として適用可能である。
【符号の説明】
【０１５３】
１    スケジューラ装置
２    解析部
３    リクエスト管理部
４    マップ演算部
５    ＷＦ段管理部
１０    スケジューラ装置
１１    リクエスト管理部
１２    ＷＦ段管理部
１３    監視部
２０    演算処理システム
２１    クライアント装置
２２    計算装置
１１０    通信ネットワーク
３００    情報処理装置
３０１    ＣＰＵ
３０２    ＲＯＭ
３０３    ＲＡＭ
３０４    ハードディスク
３０５    通信インタフェース
３０６    バス
３０７    記憶媒体
３０８    リーダライタ
【図１】
2015185003.tif 000003
【図２】
2015185003.tif 000004
【図３】
2015185003.tif 000005
【図４】
2015185003.tif 000006
【図５】
2015185003.tif 000007
【図６】
2015185003.tif 000008
【図７】
2015185003.tif 000009
【図８】
2015185003.tif 000010
【図９】
2015185003.tif 000011
【図１０】
2015185003.tif 000012
【図１１】
2015185003.tif 000013
【図１２】
2015185003.tif 000014
【図１３】
2015185003.tif 000015
【図１４】
2015185003.tif 000016
【図１５】
2015185003.tif 000017