(57)【特許請求の範囲】
【請求項１】
記憶部を有するコンピュータに，
前記記憶部に記憶された，各ジョブが実行に要する使用リソース量および予想実行時間ならびに投機的実行の可否を示す投機ジョブ設定を含むジョブ情報において，新たにスケジューリングの対象となるジョブの投機ジョブ設定が投機的実行の許可を示す場合に，前記記憶部に記憶された，リソース割当により実行が予約された各ジョブのリソース量および割り当て時間を含むリソース予約情報から，前記対象となるジョブの使用リソース量が割り当て可能であるが予想実行時間に満たない長さの空き時間を検索する処理と，
前記リソース予約情報に前記空き時間が存在する場合に，前記対象となるジョブの前記予想実行時間から所定の時間分を減じて短縮予想実行時間を算出する処理と，
前記検索した空き時間から前記短縮予想実行時間以上の空き時間を１つ選択し，選択した第１の空き時間に前記対象となるジョブの実行を設定する処理とを，実行させる
ためのジョブスケジューリングプログラム。
【請求項２】
前記コンピュータに，
前記対象となるジョブの実行が前記第１の空き時間内に完了しなかった場合に，前記ジョブ情報の前記対象となるジョブの投機ジョブ設定を投機的実行の不許可を示す設定に変更し，前記リソース予約情報から前記対象となるジョブの使用リソース量が割り当て可能かつ予想実行時間以上の長さの空き時間を検索して該対象となるジョブの実行を設定する処理を実行させる
請求項１に記載のジョブスケジューリングプログラム。
【請求項３】
前記コンピュータに，
前記リソース予約情報において検索した空き時間から，前記対象となるジョブの予想実行時間以上の空き時間より前に開始しかつ前記短縮予想実行時間以上の空き時間を選択して前記第１の空き時間とする処理とを実行させる
ための請求項１に記載のジョブスケジューリングプログラム。
【請求項４】
前記ジョブ情報において前記対象となるジョブの実行の開始時刻が指定されている場合に，前記リソース予約情報において検索した空き時間から，前記指定された開始時刻から所定の時間以内に開始する空き時間を１つ選択して前記第１の空き時間とする処理を実行させる
ための請求項１または請求項３に記載のジョブスケジューリングプログラム。
【請求項５】
前記コンピュータに，
前記ジョブの実行の開始時刻および終了時刻を含む実行履歴情報を取得して前記記憶部に記憶する処理と，
前記短縮予想実行時間を，前記記憶部に記憶されている実行履歴情報のうち前記対象となるジョブと実行の条件が一致するジョブの実行履歴情報を用いて算出する処理とを実行させる
ための請求項１または請求項３または請求項４のいずれか一項に記載のジョブスケジューリングプログラム。
【請求項６】
前記記憶部から前記対象となるジョブと実行の条件が一致するジョブの実行履歴情報を任意数分抽出し，前記抽出した実行履歴情報をもとにジョブの実行時間の中央値を算出して前記短縮予想実行時間とする処理を実行させる
ための請求項５に記載のジョブスケジューリングプログラム。
【請求項７】
記憶部を有するコンピュータが，
前記記憶部に記憶された，各ジョブが実行に要する使用リソース量および予想実行時間ならびに投機的実行の可否を示す投機ジョブ設定を含むジョブ情報において，新たにスケジューリングの対象となるジョブの投機ジョブ設定が投機的実行の許可を示す場合に，前記記憶部に記憶された，リソース割当により実行が予約された各ジョブのリソース量および割り当て時間を含むリソース予約情報から，前記対象となるジョブの使用リソース量が割り当て可能であるが予想実行時間に満たない長さの空き時間を検索する処理ステップと，
前記リソース予約情報に前記空き時間が存在する場合に，前記対象となるジョブの前記予想実行時間から所定の時間分を減じて短縮予想実行時間を算出する処理ステップと，
前記検索した空き時間から前記短縮予想実行時間以上の空き時間を１つ選択し，選択した第１の空き時間に前記対象となるジョブの実行を設定する処理ステップとを，実行する
ことを特徴とするジョブスケジューリング方法。
【請求項８】
各ジョブが実行に要する使用リソース量および予想実行時間ならびに投機的実行の可否を示す投機ジョブ設定を含むジョブ情報，および，リソース割当により実行が予約された各ジョブのリソース量および割り当て時間を含むリソース予約情報を記憶する記憶部と，
新たにスケジューリングの対象となるジョブについて，前記ジョブ情報の投機ジョブ設定が投機的実行の許可を示す場合に，前記リソース予約情報から，前記対象となるジョブの使用リソース量が割り当て可能であるが予想実行時間に満たない長さの空き時間を検索する処理部と，
前記リソース予約情報に前記空き時間が存在する場合に，前記対象となるジョブの前記予想実行時間から所定の時間分を減じて短縮予想実行時間を算出する処理部と，
前記検索した空き時間から前記短縮予想実行時間以上の空き時間を１つ選択し，選択した第１の空き時間に前記対象となるジョブの実行を設定する処理部とを備える
ことを特徴とするジョブスケジューリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，計算資源（リソース）の使用量と予測実行時間とにもとづいてジョブ実行のスケジューリングを行うジョブスケジューリングプログラム，方法および装置に関する。
【背景技術】
【０００２】
例えば，大規模計算機環境において多種多様な規模や属性を持つジョブを効率的に実行するために，ジョブスケジューリング装置（以下，ジョブスケジューラ）が利用される。
【０００３】
主にＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）で利用されるジョブスケジューラでは，効率的にリソースを使用するために，バックフィルスケジューリングという処理手法を採用するものがある。
【０００４】
バックフィルスケジューリングは，ＦＣＦＳ（Ｆｉｒｓｔ  Ｃｏｍｅ  Ｆｉｒｓｔ  Ｓｅｒｖｅｄ）スケジューリングにおけるリソース利用効率を改善するためのスケジューリング手法である。
【０００５】
ＦＣＦＳスケジューリングでは，実行要求を受け付けた順で，ジョブにリソースを割り当てていく。したがって，使用リソース量が多いジョブ（大規模ジョブ），使用リソース量が少ないジョブの順でスケジューリングされていると，たとえ計算資源に空きが存在していて使用リソース量が少ないジョブであれば実行可能な状況であっても，先行する大規模ジョブ実行のために資源を確保するので，後続の使用リソース量が少ないジョブを実行させることができない。
【０００６】
バックフィルスケジューリングでは，大規模ジョブの開始時間までに終了すると見積もられているジョブ，すなわち，大規模ジョブの開始に影響を与えないジョブであれば，リソースに空きがあれば，順序を追い越して実行させ，リソースの有効活用を実現する。
【０００７】
また，並列処理システムにおいて，ジョブキューによりジョブ実行を管理する場合に，各ジョブのシステム資源要求量，待ち時間等に応じてジョブキュー内の優先度を設定し，実行中の非優先実行ジョブをスワップアウトの対象として，スワップアウトされたプロセッサを，実行待ちの優先ジョブを起動するために割り当て，可能な限り多くの実行待ちジョブに未処理のプロセッサを割り当てるようにする処理が知られている。
【０００８】
また，外部記憶装置上のスペース獲得要求を行うジョブの実行管理において，スペース獲得要求が，現在の空きスペースの大きさを超えるが，該空きスペースと一時ファイルの使用スペースとの合計を超えない場合に，その獲得要求をしたジョブを待ち状態にし，合計を超える場合に，その獲得要求をしたジョブを終了させることにより，スペース不足による異常終了のケースを少なくする処理が知られている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平８−１６４１０号公報
【特許文献２】特公平８−１６８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＦＣＦＳスケジューリング手法では，待機しているジョブを順番に処理して，ジョブの実行に必要な使用リソース量と予想実行時間とを確保できるところにジョブを割り当てる。
【００１１】
図７は，ＦＣＦＳスケジューリング手法によるジョブ実行のスケジューリング例を示す図である。図７の縦軸はリソース量を，横軸は経過時間を表し，ジョブ実行に必要な使用リソース量と予想実行時間とを，矩形領域として示す。
【００１２】
図７（Ａ）に示すように，ジョブ実行スケジューリングで，ジョブｊ１の次にジョブｊ２を割り当てるとする。次に，ジョブｊ３のジョブ実行をスケジューリングするとする。この場合に，図７（Ｂ）に示すように，ジョブｊ１のジョブ実行の間に，ジョブｊ３の使用リソース量と予想実行時間とを割り当てられる空きがあったとする。
【００１３】
しかし，ＦＣＦＳスケジューリング手法では，現時点（現在時刻）で，ジョブｊ２の次のジョブｊ３を，この空き部分に割り当てることができず，ジョブｊ３のジョブ実行は，ジョブｊ２の後にスケジューリングされることになる。したがって，現在時刻で，ジョブｊ１の実行中の空きが無駄になってしまう。
【００１４】
これに対し，バックフィルスケジューリング手法では，リソースにジョブを実行するための空きがあった場合には，受け付けた順番にかかわらず，ジョブの使用リソース量と予想実行時間をもとにスケジューリングする。
【００１５】
図８は，バックフィルスケジューリング手法によるジョブ実行のスケジューリング例を示す図である。
【００１６】
バックフィルスケジューリング手法では，図８（Ａ）に示すように，ジョブｊ２の後に受け付けたジョブｊ３を現在時刻に割り当てることができる。
【００１７】
しかし，バックフィルスケジューリング手法においても，ジョブの予想実行時間以上の空き時間がないと割当対象にならない。図８（Ｂ）に示すように，ジョブｊ３の次にジョブｊ４を受け付けた場合に，現在時刻のリソース量の空きがジョブｊ４のリソース使用量以上あるが，ジョブｊ４の予想実行時間ｔａが，リソース量の空きが確保される時間（空き時間）ｔｂよりも長いとする。この場合には，現在時刻のリソース量の空きをジョブｊ４に割り当てて利用することができず，ジョブｊ４は，ジョブｊ２の後にスケジューリングされてしまう。そのため，利用資源が有効活用できない状態が発生するという問題があった。
【００１８】
さらに，ジョブ実行が要求される際に指定される，ジョブ実行に必要なリソース量を示す使用リソース量と，ジョブ実行の所要時間として予想された予想実行時間とについて検討すると，ユーザによって指定された予想実行時間は，必ずしも正確な実行時間を示すものであるとは限らない。
【００１９】
一般的に，ジョブ実行を要求するユーザは，ジョブ実行の途中で終了されないように，長めの実行時間を設定することが考えられる。
【００２０】
本発明は，その一態様として，指定された使用リソース量は確保できるが予想実行時間より短い空き時間が存在する場合に，その空き時間を利用してジョブ実行を試みることにより，より効率的なリソース利用を可能にするスケジューリング処理を実行する装置を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明の一態様として開示されるジョブスケジューリングプログラムは，記憶部を有するコンピュータに，前記記憶部に記憶された，各ジョブが実行に要する使用リソース量および予想実行時間ならびに投機的実行の可否を示す投機ジョブ設定を含むジョブ情報において，新たにスケジューリングの対象となるジョブの投機ジョブ設定が投機的実行の許可を示す場合に，前記記憶部に記憶された，リソース割当により実行が予約された各ジョブのリソース量および割り当て時間を含むリソース予約情報から，前記対象となるジョブの使用リソース量が割り当て可能であるが予想実行時間に満たない長さの空き時間を検索する処理と，前記リソース予約情報に前記空き時間が存在する場合に，前記対象となるジョブの前記予想実行時間から所定の時間分を減じて短縮予想実行時間を算出する処理と，前記検索した空き時間から前記短縮予想実行時間以上の空き時間を１つ選択し，選択した第１の空き時間に前記対象となるジョブの実行を設定する処理とを，実行させるためのものである。
【００２２】
また，本発明の一態様として開示されるジョブスケジューリング方法は，コンピュータが実行する処理方法であって，上記のジョブスケジューリングプログラムにより実現される処理過程を備えるものである。
【００２３】
さらに，本発明の一態様として開示されるジョブスケジューリング装置は，上記のジョブスケジューリングプログラムにより実現される場合の処理を実行する処理部を備えるものである。
【発明の効果】
【００２４】
開示されるジョブスケジューリング装置によれば，ジョブ実行を保証しつつ，リソースが使用されない空き時間の利用を図り，リソースの効率的処理用を実現することができる。
【図面の簡単な説明】
【００２５】
【図１】発明の一実施形態として開示されるジョブスケジューリング装置の構成例を示す図である。
【図２】リソース予約情報の例を示す図である。
【図３】ジョブ情報の例を示す図である。
【図４】履歴情報の例を示す図である。
【図５】ジョブ実行スケジューリング処理の処理フロー例を示す図である。
【図６】ジョブ実行管理処理の処理フロー例を示す図である。
【図７】ＦＣＦＳスケジューリング手法によるジョブ実行のスケジューリング例を示す図である。
【図８】バックフィルスケジューリング手法によるジョブ実行のスケジューリング例を示す図である。
【発明を実施するための形態】
【００２６】
図１は，発明の一実施形態として開示されるジョブスケジューリング装置の構成例を示す図である。
【００２７】
ジョブスケジューリング装置１は，ジョブ実行が要求されたジョブの使用リソース量をもとにスケジューリング処理を実行するものである。
【００２８】
ジョブスケジューリング装置１は，ＣＰＵおよびメモリ等を有するハードウェアと，ソフトウェアプログラムとを備えるコンピュータ・システム，または専用ハードウェアによって実現される。
【００２９】
（１）構成手段
ジョブスケジューリング装置１は，リソース予約情報記憶部１０，ジョブ情報取得部１１，リソース予約管理部１２，ジョブ割当部１３，ジョブ実行管理部１４，履歴情報記憶部１５を備える。
【００３０】
リソース予約情報記憶部１０は，リソース予約情報を記憶する。
【００３１】
リソース予約情報は，ジョブ実行が行われるリソースに対するジョブの使用状況を示す情報である。
【００３２】
図２は，リソース予約情報の例を示す図である。
【００３３】
図２に示すリソース予約情報の例では，リソース予約情報がリスト構造で実施される場合であり，所定の時間間隔ごとに，ジョブで使用される使用リソース量（リソース量）または未使用を設定した配列が用意されて，時刻順にリストされる。
【００３４】
使用リソース量とは，ジョブ実行に必要な計算資源の量を示す値であり，例えば，ＣＰＵ数，記憶装置（使用領域）数，ライセンス数などで示される。
【００３５】
リソース予約情報は，各時刻で使用リソース量をマップした２次元配列として実施されてもよい。
【００３６】
ジョブ情報取得部１１は，スケジューリング対象となるジョブの使用リソース量および予想実行時間を取得する。
【００３７】
より詳しくは，ジョブ情報取得部１１は，スケジューリング対象のジョブごとに，例えば，ユーザ名，ジョブ名，使用リソース量，予想実行時間を取得し，ジョブを一意に識別する情報（ＩＤ）を付与してジョブ情報を作成する。
【００３８】
図３は，ジョブ情報の例を示す図である。
【００３９】
ジョブ情報は，ＩＤ，ジョブ名，ユーザ名，使用リソース量，予想実行時間，投機ジョブを含む。
【００４０】
図３に示すジョブ情報の例では，使用リソース量はＣＰＵ数，予想実行時間は時間単位（Ｈ）であり，ＩＤ＝１００のジョブは，実行に，１６のＣＰＵが必要かつ，８時間（Ｈ）の実行時間が予想されていることを示す。
【００４１】
投機ジョブは，ジョブが投機ジョブか否かを表す設定である。“ｔｒｕｅ”は投機ジョブであることを，“ｆａｌｓｅ”は投機ジョブの設定が禁止されていることを，“ｎｕｌｌ”は，初期設定を示す。
【００４２】
投機ジョブは，ジョブ割当部１３によって，ジョブ情報の投機ジョブに“ｔｒｕｅ”が設定されているジョブ，すなわち，ユーザによって指定された予想実行時間未満の空き時間にジョブ実行が割り当てられているジョブを意味する。
【００４３】
ユーザによって投機ジョブの設定を禁止することが指定されている場合は，ジョブ情報取得部１１は，ジョブ情報の投機ジョブに“ｆａｌｓｅ”を設定する。
【００４４】
リソース予約管理部１２は，リソースに対するジョブの使用状況を管理する。
【００４５】
より詳しくは，リソース予約管理部１２は，ジョブ割当部１３によって，対象となるジョブの割当時間の開始時刻から，予想実行時間（割当時間）分，使用リソース量のリソースを割り当て，リソース予約情報に設定する。
【００４６】
また，リソース予約管理部１２は，ジョブ情報の使用リソース量と予想実行時間とをもとに，リソース予約情報（図２に示すリソース予約情報のリスト）を辿って，そのジョブに割り当て可能な時間の開始時刻を検索し，必要リソースを確保できる時間帯（空き時間）を探す。そして，リソース予約管理部１２は，検索した開始時刻をジョブ割当部１３に通知する。
【００４７】
また，リソース予約管理部１２は，リソース予約情報から，通知された開始時刻，実行時間，リソース量のリソースを解放する。
【００４８】
ジョブ割当部１３は，対象となるジョブのジョブ情報をもとに，リソース予約情報を参照して，ジョブ実行のスケジューリングを行う。
【００４９】
より詳しくは，ジョブ割当部１３は，ジョブ情報の投機ジョブが初期設定の場合に，検索された空き時間に，予想実行時間以上の長さを持つ空き時間Ｔ１があるかを調べる。さらに，ジョブ割当部１３は，空き時間Ｔ１が現在時刻から所定の時間内に開始されるものであるかを調べる。空き時間Ｔ１が現在時刻から所定の時間内に開始されるものであれば，ジョブ割当部１３は，その空き時間Ｔ１を割当時間として選択し，ジョブ情報に投機ジョブの設定は行わない。この場合，対象となるジョブは，従来と同様にスケジューリングされたことになる。
【００５０】
一方，ジョブ割当部１３は，空き時間Ｔ１が現在時刻から所定の時間内に開始されるものでなければ，予想実行時間を短縮した短縮予想実行時間を計算する。ジョブ割当部１３は，検索された空き時間に，短縮予想実行時間以上の長さである空き時間Ｔ２があるかを調べる。ここで，ジョブ割当部１３は，検索された空き時間に，空き時間Ｔ２がなければ，短縮予想実行時間をさらに短縮してもよく，短縮予想実行時間の下限値を設定して，下限値を上回る範囲において短縮予想実行時間の計算を複数回繰り返してもよい。
【００５１】
そして，ジョブ割当部１３は，空き時間Ｔ２があれば，空き時間Ｔ２が空き時間Ｔ１より前に開始されるものであるかを調べる。空き時間Ｔ２の開始が早ければ，ジョブ割当部１３は，その空き時間Ｔ２を割当時間として選択し，ジョブ情報の投機ジョブに“ｔｒｕｅ”を設定する。この場合に，対象となるジョブは，投機ジョブとされ，指定された予想実行時間より短い空き時間でのジョブ実行が試行されることになる。
【００５２】
また，ジョブ割当部１３は，対象となるジョブに，投機ジョブの設定が禁止（ジョブ情報の投機ジョブに“ｆａｌｓｅ”が設定）されている場合には，検索された空き時間から，予想実行時間分のリソースを確保できる空き時間Ｔ３を検索して割当時間とする。
【００５３】
対象となるジョブのジョブ情報の投機ジョブに“ｆａｌｓｅ”が設定されていることは，ユーザによる投機ジョブの禁止が指定されているか，既に投機ジョブとしてスケジューリングされたがジョブ実行が完了できなかったことを示すため，ジョブ実行の確実性を保証するためである。
【００５４】
なお，短縮予想実行時間の計算処理および割当時間の選択処理の詳細は，後述する。
【００５５】
ジョブ実行管理部１４は，リソース予約情報をもとに，スケジューリングされたジョブ実行の開始および終了を管理する。
【００５６】
より詳しくは，ジョブ実行管理部１４は，リソース予約情報をもとに，リソースに割り当てられたジョブの実行開始および実行終了を監視し，ジョブ実行が割当時間内に完了しなかった場合には，ジョブ実行を強制的に終了し，リソース予約管理部１２に通知する。
【００５７】
ジョブ実行管理部１４は，強制終了させたジョブが投機ジョブ（投機ジョブ＝“ｔｒｕｅ”）であれば，ジョブ情報の投機ジョブを“ｆａｌｓｅ”に変更し，ジョブ割当部１３に，スケジューリングの対象としてそのジョブを通知する。
【００５８】
一方，ジョブ実行管理部１４は，ジョブ実行が割当時間内に完了した場合には，ジョブ実行に関する実行履歴を生成して，履歴情報記憶部１５に記憶する。
【００５９】
図４は，実行履歴の例を示す図である。
【００６０】
実行履歴は，ユーザ名，ジョブ名，使用リソース量，ジョブ実行時間，ジョブ完了時刻を含む情報である。ユーザ名，ジョブ名，使用リソース量は，ジョブ情報にもとづく。ジョブ実行時間は，ジョブが実際に実行されていた時間であり，ジョブ完了時刻は，ジョブ実行が完了した時刻である。
【００６１】
図５は，ジョブ実行スケジューリング処理の処理フロー例を示す図である。
【００６２】
図５に示す処理フローでは，ジョブ情報取得部１１により，スケジューリングの対象となるジョブのジョブ情報が生成されているとする（図３参照）。
【００６３】
ジョブスケジューリング装置１において，リソース予約管理部１２は，リソース予約情報記憶部１０を参照して，使用リソース量と予想実行時間とをもとに，使用リソース量を確保できる全ての空き時間を検索する。ジョブ割当部１３は，検索された空き時間から，予想実行時間以上の長さである空き時間Ｔ１の開始時刻ｔ１を検索する（ステップＳ１）。
【００６４】
ジョブ割当部１３は，リソース予約管理部１２から開始時刻ｔ１を受け取り，開始時刻ｔ１が現在時刻に近いかを調べる（ステップＳ２）。開始時刻ｔ１が，現在時刻から所定時間以降である場合に（ステップＳ２のＮ），ジョブ割当部１３は，そのジョブに投機ジョブの設定が禁止されているかを調べる（ステップＳ３）。
【００６５】
ジョブ情報の投機ジョブが“ｆａｌｓｅ”でなければ（ステップＳ３のＮ），ジョブ割当部１３は，短縮予想実行時間の計算処理を実行する（ステップＳ４）。
【００６６】
リソース予約管理部１２は，検索した空き時間から，短縮予想実行時間以上の空き時間の開始時刻ｔ２を検索する（ステップＳ５）。
【００６７】
ジョブ割当部１３は，リソース予約管理部１２から開始時刻ｔ２を受け取り，開始時刻ｔ１より早い開始時刻ｔ２があるかを調べる（ステップＳ６）。
【００６８】
開始時刻ｔ１より早い開始時刻ｔ２があれば（ステップＳ６のＹ），ジョブ割当部１３は，ジョブ情報の投機ジョブに“ｔｒｕｅ”を設定する（ステップＳ７）。ジョブ割当部１３は，対象となるジョブのジョブ実行の開始時刻に開始時刻ｔ２を，割当時間に短縮予想実行時間を，それぞれ設定して（ステップＳ８），ステップＳ１１の処理へ進む。
【００６９】
開始時刻ｔ１より早い開始時刻ｔ２がなければ（ステップＳ６のＮ），ジョブ割当部１３は，短縮予想実行時間が所定の下限値を下回らず，時間を減算できるか調べる（ステップＳ９）。短縮予想実行時間がさらに減算できれば（ステップＳ９のＹ），ジョブ割当部１３は，ステップＳ３の処理へ戻り，さらに短縮予想実行時間を求める。
【００７０】
短縮予想実行時間が減算できなければ（ステップＳ９のＮ），ジョブ割当部１３は，対象となるジョブのジョブ実行の開始時刻に開始時刻ｔ１を設定し，割当時間に予想実行時間を，それぞれ設定して（ステップＳ１０），ステップＳ１１の処理へ進む。
【００７１】
また，開始時刻ｔ１が現在時刻から所定の時間以内である場合（ステップＳ２のＹ），または，ジョブ情報の投機ジョブに“ｆａｌｓｅ”が設定されている場合（ステップＳ３のＹ）には，ジョブ割当部１３は，ステップＳ１０の処理へ進む。
【００７２】
その後，ステップＳ１１で，リソース予約管理部１２は，ジョブ割当部１３から，対象となるジョブの開始時刻と割当時間を受け付けて，リソース予約情報の該当する開始時刻から割当時間分，使用リソース量に対応するリソースに，対象となるジョブを割り当てる。
【００７３】
ステップＳ４の短縮予想実行時間の計算処理として，ジョブ割当部１３は，様々な処理を行うことができる。
【００７４】
例えば，ジョブ割当部１３は，対象となるジョブの予想実行時間から減算する「所定の時間分」を，ユーザが予め指定できるようにしたり，予想実行時間に応じて減算する時間分／割合や，短縮予想実行時間の下限値を設定できるようにしてもよい。この場合に，ジョブ割当部１３は，ユーザによって指定された，短縮可能時間分（時間数），短縮可能率（パーセント），下限値などの具体的数値を取得する。
【００７５】
また，ジョブ割当部１３は，予想実行時間が短い（例えば，数時間など）の場合には，減算する時間分／割合を小さくし，予想実行時間が長い（例えば，数日など）の場合には，減算する時間分／割合を大きくして設定できるようにしてもよい。
【００７６】
さらに，ジョブ割当部１３は，最初の計算処理では，減算の時間分／割合として大きな値を用い，２回目以降の計算処理では，漸次小さくした値を用いて減算してもよい。
【００７７】
さらに，ジョブ割当部１３は，履歴情報記憶部１５が設けられている場合に，実行履歴にもとづいて短縮予想実行時間を計算することができる。具体的には，ジョブ割当部１３は，履歴情報記憶部１５から，対象となるジョブと条件が一致するジョブとして，ユーザ名，ジョブ名，使用リソース量などが一致するジョブの実行履歴を抽出する。さらに，ジョブ割当部１３は，一致するジョブの実行履歴のうち，ジョブ完了時刻が新しいものから任意の数（例えば，１０個）の履歴を抽出してもよい。抽出した履歴を実行時間の小さい順に並べ，中央値を求め，これを短縮予想実行時間とする。あるいは，ジョブ割当部１３は，実行履歴に記録されているジョブ実行時間の一定範囲（例えば１０％など）の時間を，減算する時間分として定めて短縮予想実行時間を算出する。
【００７８】
または，ジョブ割当部１３は，実行履歴に記録されているジョブ実行時間から，著しく短いジョブ実行時間を除外したうちの最短のジョブ実行時間，またはジョブ実行時間が２番目に短いジョブ実行時間などを，下限値として採用して，短縮予想実行時間を計算する。
【００７９】
または，ジョブ割当部１３は，所定の時間分ずつ減算して，下限値までの範囲での短縮予想実行時間を複数計算し，検索された空き時間から，各短縮予想実行時間について，短縮予想実行時間以上の空き時間（割当時間となる時間）とその開始時刻との組合せを求めて，割当時間候補とする。そして，ジョブ割当部１３は，求めた割当時間候補を時間順に並べた中から，時間が最長のもの，開始時刻が最も早いもの，または，時間と開始時刻とが中央値となるものを，割当時間として選択してもよい。
【００８０】
または，ジョブ割当部１３は，検索された空き時間の開始時刻と現在時刻との時間差を計算して，この時間差が一定の値より小さい場合には，下限値にあまり近くない短縮予想実行時間で空き時間を選択し，この時間差が一定の値より大きい場合には，下限値に近い短縮予想実行時間で空き時間を選択してもよい。
【００８１】
また，ジョブ実行の割当時間の選択処理として，ジョブ割当部１３は，様々な処理を行うことができる。
【００８２】
ジョブ割当部１３は，対象となるジョブの投機ジョブが“ｆａｌｓｅ”以外であれば，予想実行時間未満の空き時間を常に選択してもよい。これにより，原則的に投機的なジョブ実行を試行して，リソースの利用効率を高めるスケジューリングを実現することができる。
【００８３】
また，ジョブ割当部１３は，上述のように，予想実行時間以上の空き時間が，現在時刻より所定の時間内で開始される場合に，その予想実行時間以上の空き時間を選択してもよい。これにより，現在時点で，対象となるジョブがすぐに実行またはあまり待たずに実行できる場合には，予想実行時間以上の空き時間を選択して確実なジョブ実行を保証することができる。
【００８４】
さらに，ジョブ割当部１３は，上記の現在時刻からの所定の時間を，ユーザが予め指定できるようにしてもよい。
【００８５】
また，ジョブ割当部１３は，ジョブ実行の開始時刻を，ユーザが予め指定できるようにしてもよい。この場合に，ジョブ割当部１３は，空き時間Ｔ１，Ｔ２，Ｔ３として，指定された開始時刻に最も近い開始時刻から開始する空き時間を選択する。
【００８６】
図６は，ジョブ実行管理処理の処理フロー例を示す図である。
【００８７】
ジョブスケジューリング装置１において，ジョブ実行管理部１４は，リソース予約情報をもとに，開始時刻の到来により，ジョブの実行を開始し（ステップＳ２０），ジョブ実行の完了を監視する（ステップＳ２１）。
【００８８】
そして，ジョブ実行管理部１４は，ジョブへの割当時間中にジョブ実行の完了があったかを調べ（ステップＳ２２），ジョブ実行の完了を検出していない間（ステップＳ２２のＮ），割当時間の終了を監視する（ステップＳ２３）。
【００８９】
ジョブ実行管理部１４は，割当時間の終了時にジョブが完了しているかを調べる（ステップＳ２４）。ジョブ実行管理部１４は，割当時間の終了時にジョブが完了していなければ（ステップＳ２４のＮ），ジョブを強制終了し（ステップＳ２５），リソース予約管理部１２は，ジョブに割り当てていたリソースを解放する（ステップＳ２６）。
【００９０】
さらに，ジョブ実行管理部１４は，そのジョブが投機ジョブ（ジョブ情報の投機ジョブ＝“ｔｒｕｅ”）であるかを調べる（ステップＳ２７）。そのジョブが投機ジョブであれば（ステップＳ２７のＹ），ジョブ実行管理部１４は，ジョブ情報の投機ジョブに“ｆａｌｓｅ”を設定して，ジョブ割当部１３に，スケジューリングを要求し（ステップＳ２８），そのジョブが投機ジョブでなければ（ステップＳ２７のＮ），処理を終了する。
【００９１】
ジョブ実行管理部１４は，ジョブへの割当時間の終了までにジョブ実行が完了している場合に（ステップＳ２２のＹ，Ｓ２４のＹ），ジョブの実行履歴を生成して，履歴情報記憶部１５に保存する（ステップＳ２９）。リソース予約管理部１２は，ジョブに割り当てていたリソースを解放する（ステップＳ２１０）。
【００９２】
上記説明した処理を実行するジョブスケジューリング装置１は，演算装置（ＣＰＵ），一時記憶装置（ＤＲＡＭ，フラッシュメモリ等）および永続性記憶装置（ＨＤＤ，フラッシュメモリ等）を有し，外部とデータの入出力をするコンピュータによって実施することができる。
【００９３】
また，ジョブスケジューリング装置１は，このコンピュータが実行可能なプログラムによっても実施することができる。この場合に，ジョブスケジューリング装置１が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムを上記コンピュータが実行することによって，ジョブスケジューリング装置１の処理機能を実現する，ジョブ情報取得部１１，リソース予約管理部１２，ジョブ割当部１３，ジョブ実行管理部１４がコンピュータ上で実現される。
【００９４】
なお，上記コンピュータは，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。さらに，上記プログラムは，コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００９５】
以上説明したように，ジョブスケジューリング装置１によれば，対象となるジョブの実行を，あまり待機させずに開始できる場合には，指定された予想実行時間分でリソースに割り当てられ，ジョブ実行が保証される。一方，対象となるジョブの実行の開始まで時間がかかる場合には，指定された予想実行時間を短縮した時間（短縮予想実行時間）分でリソースに割り当てられ，投機的なジョブ実行が試行される。
【００９６】
ユーザは予想実行時間を長めに指定する傾向にあり，指定された時間より短い時間でもジョブ実行が完了する場合もあることから，従来のバックフィルスケジューリング手法によるスケジューリング処理では不可能であった，ユーザにより指定された予想実行時間より前に開始かつ予想実行時間未満である空き時間を利用して，ジョブ実行をスケジューリングすることが可能となる。
【００９７】
以上説明したように，開示されたジョブスケジューリング装置によれば，ジョブの実行に必要なリソース量は確保できるが，予想実行時間より短い時間しか空いていないような状況においても，その空き時間にジョブを割り当てて実行を試みることができる。
【００９８】
さらに，開示されたジョブスケジューリング装置によれば，割り当てられた時間にジョブ実行が完了しなかった場合には，再度スケジューリングすることができる。
【００９９】
よって，開示されたジョブスケジューリング装置は，リソースをより効率的に使用できるジョブスケジューリングを提供することができる。
【０１００】
また，ユーザにとっては，予想実行時間より短い空き時間に割り当ててられたジョブが，その時間内に完了すれば，従来のスケジューリングよりも早くジョブ実行の結果を得られるという利点がある。
【符号の説明】
【０１０１】
１  ジョブスケジューリング装置
１０  リソース予約情報記憶部
１１  ジョブ情報取得部
１２  リソース予約管理部
１３  ジョブ割当部
１４  ジョブ実行管理部
１５  履歴情報記憶部
【図１】
0005605131.tif 000002
【図２】
0005605131.tif 000003
【図３】
0005605131.tif 000004
【図４】
0005605131.tif 000005
【図５】
0005605131.tif 000006
【図６】
0005605131.tif 000007
【図７】
0005605131.tif 000008
【図８】
0005605131.tif 000009