(57)【特許請求の範囲】
【請求項１】
ジョブに割り当てられるリソース量と予想実行時間とに基づいてジョブの開始時刻を設定したスケジュール情報を用いて，ユーザによって投入されたジョブの実行をバックフィルによりスケジューリングするコンピュータに，
ユーザからの開始時刻情報の要求を受け付け，
記憶部に記憶された，割り当てられるリソース量および実行時間の組により示される規模が異なる複数の典型ジョブを示す典型ジョブ情報をもとに，前記典型ジョブ情報の典型ジョブ毎に，前記スケジュール情報における該典型ジョブの実行の開始予想時刻を算出し，
前記典型ジョブ毎に算出した開始予想時刻をまとめた開始時刻情報を前記ユーザに表示する，
処理を実行させる
ことを特徴とするスケジューリングプログラム。
【請求項２】
前記コンピュータに，
前記要求とともに，ジョブのリソース量および実行時間の指定を受け付け，
前記記憶部に記憶された典型ジョブ情報から，前記指定されたリソース量および実行時間に一致する規模の典型ジョブを抽出し，前記スケジュール情報における前記抽出した典型ジョブの実行の開始予想時刻を算出し，
前記典型ジョブ情報の典型ジョブ毎に算出した開始予想時刻の代わりに，前記抽出した典型ジョブの実行の開始予想時刻を示す前記開始時刻情報を前記ユーザに表示する，
処理を実行させる
ことを特徴とする請求項１に記載のスケジューリングプログラム。
【請求項３】
前記コンピュータに，
前記記憶部に記憶された，ユーザが使用可能な最大リソース量および最大実行時間を含むユーザ管理情報をもとに，前記ユーザの最大リソース量内および最大実行時間以内の規模の典型ジョブを前記典型ジョブ情報から取り出し，前記スケジュール情報における該取り出した典型ジョブの実行の開始予想時刻を算出し，
前記典型ジョブ情報の典型ジョブ毎に算出した開始予想時刻の代わりに，前記取り出した典型ジョブについて算出した開始予想時刻を示す前記開始時刻情報を前記ユーザに表示する，
処理を実行させる
ことを特徴とする請求項１に記載のスケジューリングプログラム。
【請求項４】
コンピュータが，ジョブに割り当てられるリソース量と予想実行時間とに基づいてジョブの開始時刻を設定したスケジュール情報を用いて，ユーザによって投入されたジョブの実行をバックフィルによりスケジューリングするスケジューリング方法において，
前記コンピュータの情報提供要求受付部が，ユーザからの開始時刻情報の要求を受け付ける処理過程と，
前記コンピュータの開始時刻取得部が，記憶部に記憶された，割り当てられるリソース量および実行時間の組により示される規模が異なる複数の典型ジョブを示す典型ジョブ情報をもとに，前記典型ジョブ情報の典型ジョブ毎に，前記スケジュール情報における該典型ジョブの実行の開始予想時刻を算出する処理過程と，
前記コンピュータの開始時刻情報通知部が，前記典型ジョブ毎に算出した開始予想時刻をまとめた開始時刻情報を前記ユーザに表示する処理過程とを実行する
ことを特徴とするスケジューリング方法。
【請求項５】
スケジュール情報を用いて，ユーザによって投入されたジョブの実行をバックフィルによりスケジューリングを行うスケジューリング装置において，
ジョブに割り当てられるリソース量と予想実行時間とに基づいてジョブの開始時刻を設定したスケジュール情報を記憶する記憶部と，
割り当てられるリソース量および実行時間の組により示される規模が異なる複数の典型ジョブを示す典型ジョブ情報を記憶する典型ジョブ情報記憶部と，
ユーザからの開始時刻情報の要求を受け付ける情報提供要求受付部と，
前記記憶部に記憶された典型ジョブ情報をもとに，前記典型ジョブ情報記憶部に記憶された典型ジョブ情報の典型ジョブ毎に，前記スケジュール情報における該典型ジョブの実行の開始予想時刻を算出する開始時刻算出部と，
前記典型ジョブ毎に算出した開始予想時刻をまとめた開始時刻情報を前記ユーザに表示する開始時刻情報通知部とを備える
ことを特徴とするスケジューリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ジョブが使用する計算資源（リソース）の量と予測される実行時間とにもとづいてジョブ実行のスケジューリングを行うジョブスケジューリング技術に関する。
【背景技術】
【０００２】
大規模な高性能計算機環境（ＨＰＣ：Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）において，リソースをユーザが共有する場合に，多種多様な規模や属性を持つジョブを効率的に実行するために，スケジューリング装置（以下，ジョブスケジューラ）が利用される。
【０００３】
ジョブスケジューラには，リソースの効率的使用を図りつつジョブ実行をスケジューリングするバックフィルスケジューリングという処理手法を採用するものがある。
【０００４】
バックフィルスケジューリングは，ＦＣＦＳ（Ｆｉｒｓｔ  Ｃｏｍｅ  Ｆｉｒｓｔ  Ｓｅｒｖｅｄ）スケジューリングを改善したものである。ＦＣＦＳスケジューリングでは，投入されたジョブの順にリソースを割り当ててジョブ実行の開始時刻を設定する。したがって，ジョブが使用するリソース量が多いジョブが投入された後に，リソース量が少ないジョブが投入されている場合に，先に投入されたジョブの開始時刻になるまでの間に，後に投入されたジョブの実行を終了できる量のリソースが実行時間分空いていても，投入順序で開始時刻が設定されるため，リソースの空きを活用することができなかった。
【０００５】
バックフィルスケジューリングでは，後に投入されたジョブであっても，先に投入されたジョブの開始時刻までに実行が終了すると見積もられているジョブについては，先に投入されたジョブの開始時刻前リソースに空きがある場合には，投入順序を追い越して，先に投入されたジョブの実行開始前に，後に投入されたジョブの実行を許可し，リソースの有効活用を実現する。
【０００６】
また，ＨＰＣ環境のジョブ実行の管理に関連して，ＨＰＣ環境を構成する各ノードの統合ファブリックを備え，複数のノードの情報を収集し，収集した情報にもとづいてグラフィカル要素を生成してユーザに提示するシステムにおいて，クラスタ管理エンジンが，ある特定の属性にもとづいてジョブキューに格納されたジョブをソートし，最適な大きさのジョブがバックフィル可能であるかを判定する処理手法が知られている。
【０００７】
また，並列処理システムにおいて複数のジョブキューでジョブを管理する場合に，ジョブのシステム資源要求量，待ち時間に応じて所属キューやキュー内優先度を設定して，ジョブのスケジューリングを行う処理手法が知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００７−５３３０３４号公報
【特許文献２】特開平８−１６４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
バックフィルスケジューリングでは，投入ジョブで使用されるリソース量を超える空きがあり，先に投入されたジョブの開始時間を妨げない場合には，ジョブの投入順序にかかわらず，後の投入ジョブを先に開始するようスケジューリングする。
【００１０】
図１５は，バックフィルスケジューリングによるジョブ実行のスケジューリング例を示す図である。
【００１１】
図１５の縦軸は，ジョブで使用されるリソース量を，横軸は，経過時間を表す。ここで，ジョブの規模を，ジョブで使用されるリソース量と，予想される最大の実行時間とを用いて矩形領域として示す。図１５に示すように，ジョブｊ１，ｊ２，ｊ３の順でジョブが投入されて，現時点（現在時刻）でジョブｊ１，ｊ２の順でリソースが割り当てられ，開始時刻が設定されているとする。この場合に，さらに，ジョブｊ３のリソース量が，リソースの空き量の範囲内かつ予想実行時間がジョブｊ２の開始時刻までの時間内であれば，現在時刻に，ジョブｊ３の開始時刻が設定される。
【００１２】
しかし，バックフィルスケジューリングにおいても，後続する投入ジョブは，その予想実行時間が先行する投入ジョブの開始時刻までの時間以内でなければ，バックフィルの対象にはならず，結局リソースの有効活用ができないという問題があった。
【００１３】
図１６は，従来のバックフィルスケジューリングにおける課題を説明するための図である。
【００１４】
例えば，図１６（Ａ）に示すように，ジョブｊ１〜ｊ６の順で，実行するジョブが投入されたとする。この場合に，現時点で，ジョブｊ１，ｊ２をリソースに割り当てて実行を開始する。そして，現時点でのリソースの空き量がジョブｊ３のリソース量に不足するため，ジョブｊ３については，ジョブｊ１の実行終了後に開始するようにスケジューリングする。
【００１５】
しかし，ジョブｊ４，ｊ５，ｊ６については，現時点でのリソースの空き量は，３つのジョブのリソース量を満たすが，予想実行時間がジョブｊ１の実行時間を超えるためにジョブｊ３の実行開始を妨げるとすると，バックフィルの対象として扱われない。そのため，現時点で，ジョブが割り当てられていないリソースが残り，リソースを効率的に使用することができない。
【００１６】
他方，ジョブを投入するユーザは，現在，他のユーザがどのような規模のジョブを投入しているかを知ることはできず，投入したジョブがバックフィルの対象となって比較的早期に開始されるのか，長い間待機させられるのかを知ることができない。
【００１７】
また，ユーザは，どのような規模のジョブであれば，どの時期に開始されるのかという目安となる情報を得ることができない。
【００１８】
１つの側面では，本発明は，ジョブの実行を要求する情報処理装置に，ジョブの要求を行う際に役立つ情報を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本願において開示されるスケジューリングプログラムは，ジョブに割り当てられるリソース量と予想実行時間とに基づいてジョブの開始時刻を設定したスケジュール情報を用いて，ユーザによって投入されたジョブの実行をバックフィルによりスケジューリングするコンピュータに，ユーザからの開始時刻情報の要求を受け付け，記憶部に記憶された，割り当てられるリソース量および実行時間の組により示される規模が異なる複数の典型ジョブを示す典型ジョブ情報をもとに，前記典型ジョブ情報の典型ジョブ毎に，前記スケジュール情報における該典型ジョブの実行の開始予想時刻を算出し，前記典型ジョブ毎に算出した開始予想時刻をまとめた開始時刻情報を前記ユーザに表示する，処理を実行させるものである。
【発明の効果】
【００２０】
上記のプログラムによれば，ジョブの実行を要求する情報処理装置に，ジョブの要求を行う際に役立つ情報を提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の一態様として開示されるスケジューリング装置の構成例を示す図である。
【図２】一実施形態における典型ジョブ記憶部のデータ構成例を示す図である。
【図３】一実施形態におけるユーザ管理情報記憶部のデータ構成例を示す図である。
【図４】一実施形態におけるジョブキューおよびジョブ構造体の例を示す図である。
【図５】一実施形態におけるリソース予約テーブルの例を示す図である。
【図６】一実施形態における開始時刻記憶部のデータ構成例を示す図である。
【図７】一実施形態における投入ジョブ受付処理の処理フロー例を示す図である。
【図８】一実施形態における投入ジョブのスケジューリング処理の処理フロー例を示す図である。
【図９】リソース予約テーブルを用いたリソース割り当ての例を示す図である。
【図１０】一実施形態における開始時刻情報提供処理の処理フロー例を示す図である。
【図１１】典型ジョブのリソース割り当て処理（ステップＳ２５）の，より詳細な処理フロー例を示す図である。
【図１２】リソース予約テーブルを用いたリソース解放の例を示す図である。
【図１３】一実施形態における開始時刻情報提供処理の別の処理フロー例を示す図である。
【図１４】一実施形態におけるスケジューリング装置のハードウェア構成例を示す。
【図１５】バックフィルスケジューリングによるジョブ実行のスケジューリング例を示す図である。
【図１６】従来のバックフィルスケジューリングにおける課題を説明するための図である。
【発明を実施するための形態】
【００２２】
図１は，本発明の一態様として開示されるスケジューリング装置の構成例を示す図である。
【００２３】
スケジューリング装置１は，ジョブの実行のスケジュール情報にもとづいて新たなジョブのスケジューリングを行う装置である。スケジューリング装置１は，ＣＰＵおよびメモリ等を有するハードウェアと，ソフトウェアプログラムとを備えるコンピュータ・システム，または専用ハードウェアによって実現される。
【００２４】
スケジューリング装置１は，ＨＰＣ環境に投入されたジョブの実行をスケジューリングし，さらに，ユーザに対し，特定の規模を示す典型ジョブがスケジューリングされた場合の開始時刻を示す開始時刻情報を提供する。
【００２５】
すなわち，スケジューリング装置１は，ユーザが投入したジョブを，バックフィルスケジューリングによりリソースに割り当てて開始時刻を設定し，各ジョブの実行を制御する。
【００２６】
さらに，スケジューリング装置１は，ジョブの特定の規模を表す典型ジョブを記憶し，ユーザから開始時刻情報の提供要求を受け付けると，投入ジョブのスケジュール上で典型ジョブのリソース割り当てを試行して開始時刻を求め，典型ジョブの開始時刻を示す開始時刻情報をユーザに提供する。
【００２７】
典型ジョブは，リソース量と実行時間との組み合わせによって，特定の規模を持つジョブを示すモデル情報であって，ジョブを投入する利用者に，ジョブ割り当ての指針を与える。
【００２８】
リソース量は，ジョブで使用されるリソースの量であり，例えば，リソースであるノードまたはＣＰＵの並列数で示される。実行時間は，ジョブの実行に必要と見積もられる最大の時間であり，例えば，時間単位，または日数単位で示される。
【００２９】
上述の処理を実現するために，スケジューリング装置１は，ジョブ受付部１０１，ジョブキュー１０２，ジョブ割当部１０３，リソース予約管理部１０４，リソース予約テーブル１０５，ジョブ実行部１０６，典型ジョブ記憶部１１０，情報提供要求受付部１１１，開始時刻取得部１１２，開始時刻記憶部１１３，開始時刻情報通知部１１４，ユーザ管理情報記憶部１１５を備える。
【００３０】
ジョブ受付部１０１は，ユーザによって投入されたジョブ（投入ジョブ）を受け付け，ジョブキュー１０２に保持する。
【００３１】
ジョブキュー１０２は，ジョブ受付部１０１が受け付けた投入ジョブを受け付けた順に保持する記憶領域である。
【００３２】
ジョブ割当部１０３は，ジョブキュー１０２に保持された投入ジョブを１つずつ取り出して，投入ジョブのリソース割り当てを，リソース予約管理部１０４に要求する。
【００３３】
リソース予約管理部１０４は，リソース予約テーブル１０５を用いてリソースに対するジョブの管理を行い，ジョブ割当部１０３から渡された投入ジョブを，リソースに割り当てて開始時刻を決定する。さらに，リソース予約管理部１０４は，開始時刻取得部１１２から渡された典型ジョブを，リソースに割り当てて開始時刻を決定する。
【００３４】
リソース予約テーブル１０５は，リソースに対するジョブの割り当て状態を単位時刻で示すデータテーブルである。
【００３５】
ジョブ実行部１０６は，リソース予約テーブル１０５にもとづいて，投入ジョブの実行（開始と終了）を制御する。
【００３６】
典型ジョブ記憶部１１０は，１または複数の典型ジョブを記憶する。
【００３７】
情報提供要求受付部１１１は，ユーザから，開始時刻情報の提供機能（コマンド）の実行要求（提供要求）を受け付ける。より具体的には，情報提供要求受付部１１１は，典型ジョブの開始時刻情報提供機能のためのユーザインタフェースを備え，ユーザＩＤと提供要求とを受け付ける。または，情報提供要求受付部１１１は，ユーザＩＤと，開始時刻情報の提供を受けたいジョブの規模（リソース量および実行時間）の指定を受け付ける。
【００３８】
開始時刻取得部１１２は，ユーザの提供要求を受け付けた場合に，典型ジョブ記憶部１１０から典型ジョブを１つずつ取り出し，取り出した典型ジョブのリソース割り当てが試行された場合の開始時刻を得て，開始時刻記憶部１１３へ格納する。より具体的には，開始時刻取得部１１２は，典型ジョブ記憶部１１０から典型ジョブを１つずつ取り出し，ジョブ割当部１０３に対し，取り出した典型ジョブへのリソース割り当てを要求する。そして，開始時刻取得部１１２は，リソース予約管理部１０４から，要求した典型ジョブのリソース割り当ての結果において設定された開始時刻を取得し，開始時刻記憶部１１３に格納する。
【００３９】
また，開始時刻取得部１１２は，ユーザによる指定されたジョブのリソース量および実行時間をジョブ割当部１０３に渡して，指定されたジョブのリソース割り当てを要求し，その開始時刻を求める。
【００４０】
また，開始時刻取得部１１２は，ユーザ管理情報記憶部１１５を参照して，各ユーザに対するジョブ実行の制約をもとに，典型ジョブ記憶部１１０に記憶された典型ジョブの中から，ユーザに対する制約の範囲内である典型ジョブを取り出し，取り出した典型ジョブのリソース量および実行時間の組をジョブ割当部１０３に渡して，指定されたジョブのリソース割り当てを要求し，その開始時刻を求める。
【００４１】
開始時刻記憶部１１３は，リソース割り当てがなされた場合の典型ジョブに設定された開始時刻を記憶する。
【００４２】
開始時刻情報通知部１１４は，開始時刻記憶部１１３に記憶されている典型ジョブの開始時刻をまとめた開始時刻情報を，提供要求したユーザに送信する。
【００４３】
ユーザ管理情報記憶部１１５は，各ユーザに対する，ジョブ実行における制約として，ユーザが使用可能な最大のリソース量および最大の実行時間の指定を含むユーザ管理情報を記憶する。
【００４４】
図２は，典型ジョブ記憶部１１０のデータ構成例を示す図である。
【００４５】
図２に示すように，典型ジョブ記憶部１１０には，典型ジョブごとに，典型ジョブを一意に識別する典型ジョブＩＤ，使用されるリソース量，実行時間等が記憶されている。リソース量としてノード数を用い，典型的なリソース量（ノード数）として，１，４，１６等の値が設定される。また，実行時間の単位として日数を用い，典型的な実行時間（日数）として，１，２，７等の値が設定される。
【００４６】
図２の例で，典型ジョブＩＤ＝１の典型ジョブは，リソース量（ノード数）＝１，実行時間（日数）＝１の規模を示している。
【００４７】
図３は，ユーザ管理情報記憶部１１５のデータ構成例を示す図である。
【００４８】
図３に示すように，ユーザ管理情報記憶部１１５には，ユーザごとに，ユーザを一意に識別するユーザＩＤ，ユーザが使用できる最大のリソース量を示す最大リソース量（ノード数），ユーザが使用できる最大の時間を示す最大実行時間等が記憶されている。
【００４９】
図３の例で，ユーザＩＤ＝１０００のユーザに対し，６４個のノード数を１日使用できるという制約を示している。
【００５０】
図４は，ジョブキューおよびジョブ構造体の例を示す図である。
【００５１】
ジョブキュー１０２には，生成されたジョブ構造体１０２−ｉ（ｉ＝１，２，…）へのポインタが格納される。投入ジョブのジョブ構造体１０２−ｉへのポインタは，ジョブキュー１０２の最後尾に追加される。
【００５２】
ジョブ構造体１０２−ｉには，投入されたジョブごとに，ジョブを一意に識別するジョブＩＤ，ユーザを一意に識別するユーザＩＤ，リソース量（ノード数），実行時間，ジョブ状態等が設定される。
【００５３】
ジョブ状態は，ジョブの実行に関する状態を示し，例えば，ジョブが実行中を示す“ｒｕｎｎｉｎｇ”，キューイング中（待機中）を示す“ｑｕｅｕｅｄ”等の値が設定される。
【００５４】
なお，ジョブ構造体１０２−ｉには，スケジューリングには関係がない種々の属性が設定されていてもよい。
【００５５】
図５は，リソース予約テーブル１０５の例を示す図である。
【００５６】
リソース予約テーブル１０５は，リソースに対するジョブの割り当ての状態を示す管理データである。本実施例では，あるリソースのリソース量を時系列的に管理するため，時系列に並べられた各時刻におけるリソース差分を要素とする配列として実施される。
【００５７】
図６は，開始時刻記憶部１１３のデータ構成例を示す図である。
【００５８】
図６に示すように，開始時刻記憶部１１３には，典型ジョブを示すリソース量（ノード数）と実行時間（日数）の組み合わせごとに，この典型ジョブに設置された開始時刻が記憶される。
【００５９】
図６（Ａ）は，全典型ジョブについてリソース割り当てが試行された場合の，各典型ジョブに設定された開始時刻を示す情報の例，図６（Ｂ）は，ユーザによって指定されたリソース量および実行時間のジョブに設定された開始時刻を示す情報の例，図６（Ｃ）は，ユーザ管理情報にもとづいて，ユーザに対する制約の範囲内の典型ジョブに設定された開始時刻を示す情報の例である。
【００６０】
図６（Ａ）の例では，例えば，リソース量＝１かつ実行時間＝１の規模である典型ジョブの開始時刻は，２０１０年６月１０日１２：００であり，リソース量＝１かつ実行時間＝２の規模である典型ジョブの開始時刻は，２０１０年６月１０日１２：００であることを示す。また，リソース量＝１かつ実行時間＝７の規模である典型ジョブの開始時刻は，２０１０年６月１０日１３：４５であり，リソース量＝４かつ実行時間＝１の規模である典型ジョブの開始時刻は，２０１０年６月１１日００：４３であることを示す。
【００６１】
これにより，ユーザは，現時点（例えば６月１０日１０：００）で，複数のジョブを投入する予定がある場合に，ノード数が１個で，実行時間（日数）が２日までの規模のジョブを投入すれば，比較的早期に実行が開始されることを知ることができる。
【００６２】
また，ユーザは，ノード数が４個で，実行時間が１日の規模のジョブを投入しても，そのジョブの実行の開始が，２０１０年６月１１日００：４３まで待機されることを知ることができる。
【００６３】
次に，本実施形態における，スケジューリング装置１の処理の流れを説明する。
【００６４】
スケジューリング装置１では，投入ジョブ受付処理が実行される。投入ジョブ受付処理は，ユーザから送信されたジョブに関する情報の受信を契機に実行される。
【００６５】
図７は，投入ジョブ受付処理の処理フロー例を示す図である。
【００６６】
スケジューリング装置１にユーザがジョブを投入すると，ジョブ受付部１０１は，ユーザＩＤと投入ジョブのジョブ属性（リソース量，実行時間等）とを取得する（ステップＳ１）。ジョブ受付部１０１は，ユーザ管理情報記憶部１１５から，ユーザＩＤに対応する制約（最大リソース量，最大実行時間）を取得する（ステップＳ２）。
【００６７】
次に，ジョブ受付部１０１は，受け付けた投入ジョブのリソース量と実行時間が，ユーザに対する制約の範囲内であるか判定する（ステップＳ３）。投入ジョブのリソース量と実行時間とが制約の範囲内であれば（ステップＳ３のＹ），受け付けたジョブ属性にもとづいて，ジョブ状態に“ｑｕｅｕｅｄ”を設定したジョブ構造体１０２ｉを生成し，投入ジョブをジョブキュー１０２にキューイングする。
【００６８】
一方，投入ジョブのリソース量と実行時間とが制約の範囲内でなければ（ステップＳ３のＮ），ジョブ受付部１０１は，ジョブのキューイングを行わず，ジョブ投入を拒否する（ステップＳ５）。
【００６９】
次に，スケジューリング装置１では，投入ジョブのスケジューリング処理が実行される。投入ジョブのスケジューリング処理は，ジョブ投入またはジョブの実行終了を契機に実行される。
【００７０】
図８は，投入ジョブのスケジューリング処理の処理フロー例を示す図である。
【００７１】
ジョブ割当部１０３の要求により，リソース予約管理部１０４は，リソース予約テーブル１０５を初期化する（ステップＳ１０）。次に，ジョブ割当部１０３は，ジョブキュー１０２から，先頭の投入ジョブを取り出し（ステップＳ１１），取り出した投入ジョブのジョブ構造体から，リソース量と実行時間を得て，リソース予約管理部１０４に対してリソース割り当てを要求する（ステップＳ１２）。
【００７２】
リソース予約管理部１０４は，ジョブ割当部１０３から投入ジョブのリソース量と実行時間を受け付けて，リソース予約表を用いて，未割り当ての期間の先頭からリソース量を実行時間分割り当てて投入ジョブの開始時刻を決定し，決定した開始時刻をジョブ割当部１０３に返却する（ステップＳ１３）。
【００７３】
図９は，リソース予約テーブルを用いたリソース割り当ての例を示す図である。
【００７４】
リソース予約管理部１０４は，リソース予約テーブル１０５において，要求されたリソース量を確保できる時刻を配列の先頭から探索し，探索した先頭の時刻を開始時刻として設定する（ステップＳ１３１）。続いて，リソース予約管理部１０４は，設定した開始時刻から，要求された実行時間の期間でのリソース差分を積算して，要求されたリソース量を確保できるかをチェックする。リソース量が確保できた場合には，リソース予約管理部１０４は，確保した期間の終わりの時刻を終了時刻とする（ステップＳ１３２）。確保できなかった場合には，ステップＳ１３１の処理が繰り返される。
【００７５】
リソース予約管理部１０４は，リソース量が確保できた場合に，開始時刻または終了時刻に該当する時刻の要素が存在していれば，該当する期間をリソース差分に更新して，リソースを割り当てる。開始時刻または終了時刻に該当する時刻がなければ，リソース予約管理部１０４は，開始時刻または終了時刻に相当する時刻での要求されたリソース量の増分または減分の要素を配列の該当箇所に挿入する（ステップＳ１３３）。
【００７６】
その後，ジョブ割当部１０３は，リソース予約管理部１０４から投入ジョブの開始時刻を受け取ると，投入ジョブのジョブ状態が“ｑｕｅｕｅｄ”であれば，開始時刻が現在であるかを調べる（ステップＳ１４）。開始時刻が現在であれば（ステップＳ１４のＹ），ジョブ割当部１０３は，ジョブ実行部１０６に，ジョブ実行を要求し，その投入ジョブのジョブ構造体１０２−ｉのジョブ状態を“ｒｕｎｎｉｎｇ”に変更し（ステップＳ１５），ステップＳ１７の処理へ進む。一方，開始時刻が現在でなければ（ステップＳ１４のＮ），ジョブ割当部１０３は，次の投入ジョブをジョブキュー１０２−ｉから取得し（ステップＳ１６），ステップＳ１７の処理へ進む。
【００７７】
ジョブ割当部１０３は，ジョブキュー１０２に次のジョブがあるか判定し（ステップＳ１７），次のジョブがあれば（ステップＳ１７のＹ），ステップＳ１２の処理へ戻り，次のジョブがなければ（ステップＳ１７のＮ），処理を終了する。
【００７８】
スケジューリング装置１では，開始時刻情報提供処理が実行される。開始時刻情報提供処理は，ユーザからの提供要求の受付を契機に実行される。
【００７９】
図１０は，開始時刻情報提供処理の処理フロー例を示す図である。
【００８０】
スケジューリング装置１が備えるインターフェースで，ユーザが，開始時刻情報提供処理のコマンドを実行すると，情報提供要求受付部１１１は，ユーザＩＤを取得する（ステップＳ２０）。
【００８１】
開始時刻取得部１１２は，ジョブ割当部１０３に対し，ジョブキュー１０２に保持されている投入ジョブのリソース割り当て処理が実行される（ステップＳ２１）。具体的には，開始時刻取得部１１２が，ジョブ割当部１０３に対し投入ジョブのリソース割り当て処理を要求すると，ジョブ割当部１０３が，ジョブキュー１０２の先頭から投入ジョブを１つずつ取り出して，ステップＳ１１〜Ｓ１３（図８参照）の処理を行う。これにより，リソース予約テーブル１０５が更新されることになる。
【００８２】
次に，開始時刻取得部１１２は，ユーザ管理情報記憶部１１５から，ユーザＩＤに対応する制約（最大リソース量，最大実行時間）を取得する（ステップＳ２２）。そして，開始時刻取得部１１２は，典型ジョブ記憶部１１０の先頭から，典型ジョブ（リソース量と実行時間との組）を１つ取り出し（ステップＳ２３），取り出した典型ジョブのリソース量と実行時間が，ユーザＩＤに対応する制約の範囲内であるかを判定する（ステップＳ２４）。
【００８３】
典型ジョブのリソース量と実行時間がユーザの制約の範囲内であれば（ステップＳ２４のＹ），典型ジョブのリソース割り当て処理が実行される（ステップＳ２５）。典型ジョブのリソース割り当て処理については後述する。典型ジョブのリソース量と実行時間がユーザの制約の範囲内でなければ（ステップＳ２４のＮ），開始時刻取得部１１２は，典型ジョブ記憶部１１０の次の典型ジョブ（リソース量と実行時間の組）を１つ取り出す（ステップＳ２６）。次の典型ジョブが取り出せれば（ステップＳ２７のＹ），ステップＳ２４の処理へ戻る。次の典型ジョブが取り出せなければ（ステップＳ２７のＮ），開始時刻情報通知部１１４は，典型ジョブのリソース割り当て処理により開始時刻記憶部１１３に記憶されている結果である，典型ジョブの開始時刻をまとめた開始時刻情報をユーザに表示して（ステップＳ２８），処理を終了する。
【００８４】
図１１は，典型ジョブのリソース割り当て処理（ステップＳ２５）の，より詳細な処理フロー例を示す図である。
【００８５】
開始時刻取得部１１２は，取り出した典型ジョブのリソース量と実行時間との組をリソース予約管理部１０４に渡し，典型ジョブのリソース割り当てを要求する（ステップＳ２５１）。リソース予約管理部１０４は，リソース予約テーブル１０５を用いて，リソースに対して典型ジョブを割り当てて開始時刻を決定し，決定した開始時刻を開始時刻取得部１１２へ返却する（ステップＳ２５２）。開始時刻取得部１１２は，受け付けた典型ジョブの開始時刻を開始時刻記憶部１１３に格納する（ステップＳ２５３）。
【００８６】
その後，開始時刻取得部１１２が，リソース予約管理部１０４に対し，典型ジョブに割り当てられたリソースの解放を要求し，リソース予約管理部１０４は，該当するリソースの割り当てを解放する（ステップＳ２５４）。
【００８７】
図１２は，リソース予約テーブル１０５を用いたリソース解放の例を示す図である。
【００８８】
リソース予約管理部１０４は，リソース予約テーブル１０５の先頭から，リソースへ割り当てた典型ジョブの開始時刻を探索し（ステップＳ５０１），探索した開始時刻から終了時刻を探索し（ステップＳ５０２），探索した開始時刻の要素のリソース差分から，典型ジョブに割り当てたリソース量分の要素を解放する。そして，リソース予約管理部１０４は，リソース割り当て時に，開始時刻に対応する時刻の要素においてリソース量の追加による調整をしていれば，その要素のリソース差分から調整分を減算し，その結果リソース差分が０になれば，その要素を削除する（ステップＳ５０３）。同様に，リソース予約管理部１０４は，リソース割り当て時に，終了時刻に対応する時刻の要素においてリソース量の減算による調整をしていれば，その要素のリソース差分に調整分を加算し，その結果リソース差分が０になれば，その要素を削除する（ステップＳ５０４）。
【００８９】
図１３は，開始時刻情報提供処理の別の処理フロー例を示す図である。
【００９０】
図１３に示す開始時刻情報提供処理は，ユーザによって，開始時刻情報の提供を受けたいジョブの規模が指定された提供要求の受信を契機として実行される。
【００９１】
スケジューリング装置１で，ユーザが開始時刻情報提供処理のコマンドを実行すると，情報提供要求受付部１１１は，ユーザＩＤ，指定されたリソース量および実行時間を取得する（ステップＳ３０）。
【００９２】
次に，開始時刻取得部１１２は，ステップＳ２１の処理と同様に，ジョブ割当部１０３に対して要求することにより，投入ジョブのリソース割り当て処理が実行される（ステップＳ３１）。さらに，開始時刻取得部１１２は，ユーザ管理情報記憶部１１５から，ユーザＩＤに対応する制約（最大リソース量，最大実行時間）を取得する（ステップＳ３２）。開始時刻取得部１１２は，指定されたリソース量と実行時間とが，ユーザＩＤに対応する制約の範囲内であるかを判定する（ステップＳ３３）。
【００９３】
指定されたリソース量と実行時間が，ユーザの制約の範囲内であれば（ステップＳ３３のＹ），ステップＳ２５と同様に，指定されたジョブを典型ジョブとする典型ジョブのリソース割り当て処理が実行される（ステップＳ３４）。そして，開始時刻情報通知部１１４は，開始時刻記憶部１１３に記憶されている，指定されたジョブのリソース割り当て処理の結果（開始時刻情報）をユーザに表示して（ステップＳ３５），処理を終了する。
【００９４】
一方，指定されたリソース量と実行時間が，ユーザの制約の範囲内でなければ（ステップＳ３３のＮ），開始時刻取得部１１２は，ユーザに，制約範囲を超えた値が指定されている旨を通知して（ステップＳ３６），処理を終了する。
【００９５】
図１４に，スケジューリング装置１のハードウェア構成例を示す。
【００９６】
スケジューリング装置１は，演算装置（ＣＰＵ）６０１，一時記憶装置（ＤＲＡＭ，フラッシュメモリ等）６０２，永続性記憶装置（ＨＤＤ，フラッシュメモリ等）６０３，およびジョブが投入されるリソースを含むＨＰＣシステムとネットワークＮを介したインターフェース６０４とを有するコンピュータ６００と，入力装置（キーボード，マウス等）６２０と出力装置（ディスプレイ，プリンタ等）６３０とによって実施することができる。
【００９７】
また，スケジューリング装置１は，コンピュータ６００が実行可能なプログラムによって実施することができる。この場合に，スケジューリング装置１が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムをコンピュータ６００が実行することによって，上記説明したスケジューリング装置１の処理機能がコンピュータ６００上で実現される。
【００９８】
すなわち，スケジューリング装置１の各処理部は，プログラムで構成することができ，これらのプログラムが一時記憶装置６０２にロードされて実行されることにより，各処理部の機能が実現される。スケジューリング装置１の各記憶部は，永続性記憶装置６０３に格納される。
【００９９】
なお，コンピュータ６００は，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。また，コンピュータ６００は，サーバコンピュータからプログラムが転送されるごとに，逐次，受け取ったプログラムに従った処理を実行することもできる。
【０１００】
さらに，このプログラムは，コンピュータ６００で読み取り可能な記録媒体に記録しておくことができる。
【０１０１】
以上説明したように，スケジューリング装置１は，図１０および図１３に示す，開始時刻情報提供処理によって，予め用意した種々の規模の典型ジョブやユーザが指定した規模のジョブについてリソース割り当てを試行し，試行において設定した開始時刻をまとめた開始時刻情報をユーザに提供することが可能となる。
【０１０２】
また，スケジューリング装置１は，ユーザに対し，特定の規模のジョブが割り当てられた場合の開始時刻を示す情報を提供することができる。
これにより，ユーザは，ジョブの実行開始の目安を得ることができ，ジョブの投入を計画する場合に参考にすることができる。
【０１０３】
また，ユーザは，開始時刻が比較的早い時点に設定されるジョブの規模がどのようなものであるかを知ることができ，該当するジョブの投入を優先することができる。
【０１０４】
よって，ユーザを，バックフィルの対象となりやすいジョブの投入操作に誘導することができ，リソースの効率的に使用できるスケジューリングを実現することができる。
【０１０５】
ユーザは，投入を予定しているジョブの規模を指定して開始時刻情報の提供を受けることにより，投入前に実行開始の時期を知ることができ，開始時刻によっては，ジョブの投入の順序を変更したり，ジョブの予想実行時間をジョブ実行のために必要十分な値まで短くしたりするなどして対応することができる。
【０１０６】
したがって，スケジューリング装置１は，早期に実行が開始される可能性が高いジョブ，すなわち，バックフィルの対象となる可能性が高いサイズのジョブの投入操作へユーザを誘導し，リソースに対するジョブの効率的な割り当てを実行し，リソースの効率的使用を実現することができる。
【０１０７】
また，スケジューリング装置１は，ユーザに対するジョブ実行の制約を記憶しておき，制約の範囲内の典型ジョブについてのみリソース割り当てを試行し，開始時刻を決定する。これにより，開始時刻情報提供処理で，ユーザに対して無用となる情報の処理を回避して，処理負担を軽減することができる。
【符号の説明】
【０１０８】
１  スケジューリング装置
１０１  ジョブ受付部
１０２  ジョブキュー
１０３  ジョブ割当部
１０４  リソース予約管理部
１０５  リソース予約テーブル
１０６  ジョブ実行部
１１０  典型ジョブ記憶部
１１１  情報提供要求受付部
１１２  開始時刻取得部
１１３  開始時刻記憶部
１１４  開始時刻情報通知部
１１５  ユーザ管理情報記憶部
【図１】
0005614318.tif 000002
【図２】
0005614318.tif 000003
【図３】
0005614318.tif 000004
【図４】
0005614318.tif 000005
【図５】
0005614318.tif 000006
【図６】
0005614318.tif 000007
【図７】
0005614318.tif 000008
【図８】
0005614318.tif 000009
【図９】
0005614318.tif 000010
【図１０】
0005614318.tif 000011
【図１１】
0005614318.tif 000012
【図１２】
0005614318.tif 000013
【図１３】
0005614318.tif 000014
【図１４】
0005614318.tif 000015
【図１５】
0005614318.tif 000016
【図１６】
0005614318.tif 000017