(57)【特許請求の範囲】
【請求項１】
少なくとも１つのキューそれぞれについての、キューで使用可能な計算ノード数、登録されたジョブ実行要求の実行期間、及び該ジョブ実行要求で使用する計算ノード数を示すスケジュール情報を取得し、前記少なくとも１つのキューのうちの１つである登録先キューと複数の並列度のうちの１つである指定並列度とが指定されたジョブ実行条件を複数生成し、前記スケジュール情報に基づいて、前記ジョブ実行条件それぞれについて、前記指定並列度での新規ジョブの実行を要求する新規ジョブ実行要求を前記登録先キューに登録した場合に、前記登録先キューで前記使用可能な計算ノード数から登録されたジョブ実行要求で使用する計算ノード数を減算した空き計算ノード数の時間遷移を求め、前記ジョブ実行条件に示される前記指定並列度以上の前記空き計算ノード数が存在する利用可能期間の最先の時刻である予測開始時刻を算出する開始時刻算出手段と、
前記新規ジョブを所定の並列度で実行したときの前記新規ジョブの実行時間に基づいて、前記複数の並列度それぞれに応じた前記新規ジョブの実行時間を算出する実行時間算出手段と、
前記ジョブ実行条件それぞれについて、前記ジョブ実行条件の前記予測開始時刻と、前記ジョブ実行条件に示される前記指定並列度での前記新規ジョブの実行時間とに基づいて、前記ジョブ実行条件に示される前記指定並列度を指定した前記新規ジョブ実行要求を、前記ジョブ実行条件に示される前記登録先キューに登録した場合の、前記新規ジョブの実行終了時刻の予測値である予測終了時刻を算出する終了時刻算出手段と、
前記ジョブ実行条件のうちの前記予測終了時刻が最先となる最先ジョブ実行条件に示される前記指定並列度で前記新規ジョブを実行させる前記新規ジョブ実行要求を、前記最先ジョブ実行条件に示される前記登録先キューに登録する登録手段と、
を有する情報処理装置。
【請求項２】
前記登録手段は、前記最先ジョブ実行条件に従って登録した前記新規ジョブ実行要求の実行スケジュールを取得し、該実行スケジュールに示される前記新規ジョブの実行開始時刻を示す実行開始予定時刻に、前記最先ジョブ実行条件に示される前記指定並列度での前記新規ジョブの実行時間を加算した終了予定時刻が、前記最先ジョブ実行条件以外の他のジョブ実行条件の前記予測終了時刻よりも遅い場合、前記最先ジョブ実行条件に従って登録した前記新規ジョブ実行要求をキャンセルし、前記他のジョブ実行条件に示される前記指定並列度で前記新規ジョブを実行させる新規ジョブ再実行要求を、前記他のジョブ実行条件に示される前記登録先キューに登録する、
請求項１記載の情報処理装置。
【請求項３】
前記開始時刻算出手段は、前記ジョブ実行条件に示される前記登録先キューにおける前記時間遷移において、前記利用可能期間の長さを示す利用可能時間を求め、
前記終了時刻算出手段は、前記ジョブ実行条件の前記利用可能時間が、前記ジョブ実行条件に示される前記指定並列度の実行時間未満の場合、前記ジョブ実行条件の前記予測終了時刻の算出を抑止する、
請求項１または２に記載の情報処理装置。
【請求項４】
コンピュータが、
少なくとも１つのキューそれぞれについての、キューで使用可能な計算ノード数、登録されたジョブ実行要求の実行期間、及び該ジョブ実行要求で使用する計算ノード数を示すスケジュール情報を取得し、
前記少なくとも１つのキューのうちの１つである登録先キューと複数の並列度のうちの１つである指定並列度とが指定されたジョブ実行条件を複数生成し、
前記スケジュール情報に基づいて、前記ジョブ実行条件それぞれについて、前記指定並列度での新規ジョブの実行を要求する新規ジョブ実行要求を前記登録先キューに登録した場合に、前記登録先キューで前記使用可能な計算ノード数から登録されたジョブ実行要求で使用する計算ノード数を減算した空き計算ノード数の時間遷移を求め、前記ジョブ実行条件に示される前記指定並列度以上の前記空き計算ノード数が存在する利用可能期間の最先の時刻である予測開始時刻を算出し、
前記新規ジョブを所定の並列度で実行したときの前記新規ジョブの実行時間に基づいて、前記複数の並列度それぞれに応じた前記新規ジョブの実行時間を算出し、
前記ジョブ実行条件それぞれについて、前記ジョブ実行条件の前記予測開始時刻と、前記ジョブ実行条件に示される前記指定並列度での前記新規ジョブの実行時間とに基づいて、前記ジョブ実行条件に示される前記指定並列度を指定した前記新規ジョブ実行要求を、前記ジョブ実行条件に示される前記登録先キューに登録した場合の、前記新規ジョブの実行終了時刻の予測値である予測終了時刻を算出し、
前記ジョブ実行条件のうちの前記予測終了時刻が最先となる最先ジョブ実行条件に示される前記指定並列度で前記新規ジョブを実行させる前記新規ジョブ実行要求を、前記最先ジョブ実行条件に示される前記登録先キューに登録する、
ジョブ投入方法。
【請求項５】
コンピュータに、
少なくとも１つのキューそれぞれについての、キューで使用可能な計算ノード数、登録されたジョブ実行要求の実行期間、及び該ジョブ実行要求で使用する計算ノード数を示すスケジュール情報を取得し、
前記少なくとも１つのキューのうちの１つである登録先キューと複数の並列度のうちの１つである指定並列度とが指定されたジョブ実行条件を複数生成し、
前記スケジュール情報に基づいて、前記ジョブ実行条件それぞれについて、前記指定並列度での新規ジョブの実行を要求する新規ジョブ実行要求を前記登録先キューに登録した場合に、前記登録先キューで前記使用可能な計算ノード数から登録されたジョブ実行要求で使用する計算ノード数を減算した空き計算ノード数の時間遷移を求め、前記ジョブ実行条件に示される前記指定並列度以上の前記空き計算ノード数が存在する利用可能期間の最先の時刻である予測開始時刻を算出し、
前記新規ジョブを所定の並列度で実行したときの前記新規ジョブの実行時間に基づいて、前記複数の並列度それぞれに応じた前記新規ジョブの実行時間を算出し、
前記ジョブ実行条件それぞれについて、前記ジョブ実行条件の前記予測開始時刻と、前記ジョブ実行条件に示される前記指定並列度での前記新規ジョブの実行時間とに基づいて、前記ジョブ実行条件に示される前記指定並列度を指定した前記新規ジョブ実行要求を、前記ジョブ実行条件に示される前記登録先キューに登録した場合の、前記新規ジョブの実行終了時刻の予測値である予測終了時刻を算出し、
前記ジョブ実行条件のうちの前記予測終了時刻が最先となる最先ジョブ実行条件に示される前記指定並列度で前記新規ジョブを実行させる前記新規ジョブ実行要求を、前記最先ジョブ実行条件に示される前記登録先キューに登録する、
処理を実行させるジョブ投入プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ジョブ投入方法、およびジョブ投入プログラムに関する。
【背景技術】
【０００２】
ＨＰＣ（High Performance Computing）には、ジョブを実行する複数の計算ノードと、計算ノードへのジョブの実行指示を管理する管理ノードとが含まれる。ジョブの実行要求が入力されると、管理ノード内のスケジューラでジョブの実行スケジュールが決定され、バッチ処理として実行される。
【０００３】
ＨＰＣにおけるジョブスケジューリングでは、ジョブがバッチ処理で実行される。そのため、ユーザが実行したいジョブが即座に実行されるとは限らない。例えばジョブの実行要求は、キューにキューイングされる。原則として、キューイングされた時刻の早いジョブから優先してジョブが実行されるが、各ジョブの並列度に応じて、ジョブの実行順が入れ替わることもある。ジョブの並列度とは、ジョブを並列実行する計算ノードの数である。例えば並列度が高いジョブは、ジョブの並列度に応じた数の計算ノードが利用可能となるまでジョブの実行が待たされ、その間、後にキューイングされた並列度の低いジョブが先に実行されることがある。
【０００４】
なおジョブのスケジューリングには、様々な技術が用いられている。例えば、予め登録されたスケジュールを変更してジョブシナリオを実行させる場合に、実用的な実行予定時間帯を求めるジョブスケジュール変更支援システムが考えられている。またジョブスケジュールが失敗する可能性を削減することを可能とし、ジョブスケジュールの最適化の度合いを把握させることが可能な表示を行うジョブスケジューリング方法もある。さらにパラメータ空間を探索するマルチジョブシステムにおいて探索時間を短縮する並列計算制御装置もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２３１６９４号公報
【特許文献２】特開２００５−１１０２３号公報
【特許文献３】特開２０１３−１４０４９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＨＰＣで実行するジョブには、様々な種類のジョブがある。その中に、本実行前のテスト実行のように何度も試行を繰り返し実行されるジョブがある。このようなジョブは、ターンアラウンドタイムをできるだけ早くすることが重要である。ターンアラウンドタイムは、実行要求を入力してから実行結果の出力が完了するまでの時間である。
【０００７】
ジョブのターンアラウンドタイムは、ジョブの並列度によって大きく変わる。例えば並列度が低いとジョブの実行に長い時間を要するが、ジョブの実行待ち時間は短い傾向にある。それに対して、並列度が高いとジョブの実行に要する時間は短くなるが、ジョブの実行待ち時間が長くなる傾向にある。ターンアラウンドタイムを最短にできる並列度がどの程度なのかは、ジョブを投入するキューにおける、ジョブの投入先の計算ノードのうちの、ジョブを実行していない空き計算ノードの数に依存する。例えば、実行待ちのジョブに対して、ジョブを実行する計算ノードの数に余裕があるキューであれば、並列度を高めることでターンアラウンドタイムを短くできる。実行待ちのジョブに対して、ジョブを実行する計算ノードの数に余裕のないキューの場合、並列度を低くして早期にジョブを実行開始できるようにした方が、ターンアラウンドタイムが短くなる可能性がある。
【０００８】
このように、ターンアラウンドタイムを短くするためにどの程度の並列度が適切なのかは、キューにおける実行待ちのジョブの状況や、計算ノードの資源量に依存する。しかし、キューにキューイングされているジョブの状況は、時々刻々変化する。そのため、ターンアラウンドタイムを短縮させるために、並列度をどの程度にして、どのキューにキューイングするのが適切なのかといったジョブの実行条件を、ユーザが適切に判断するのは困難である。
【０００９】
１つの側面では、本発明は、適切なジョブ実行条件を自動で設定できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、開始時刻算出手段、実行時間算出手段、終了時刻算出手段、および登録手段を有する情報処理装置が提供される。
開始時刻算出手段は、少なくとも１つのキューそれぞれに登録されたジョブ実行要求の実行スケジュールを示すスケジュール情報を取得し、少なくとも１つのキューのうちの１つを登録先キューとし、複数の並列度のうちの１つを指定並列度とするジョブ実行条件を複数生成し、スケジュール情報に基づいて、ジョブ実行条件それぞれについて、指定並列度での新規ジョブの実行を要求する新規ジョブ実行要求を登録先キューに登録した場合の、新規ジョブの実行開始時刻の予測値である予測開始時刻を算出する。実行時間算出手段は、新規ジョブを所定の並列度で実行したときの新規ジョブの実行時間に基づいて、複数の並列度それぞれに応じた新規ジョブの実行時間を算出する。終了時刻算出手段は、ジョブ実行条件それぞれについて、ジョブ実行条件の予測開始時刻と、ジョブ実行条件に示される指定並列度での新規ジョブの実行時間とに基づいて、ジョブ実行条件に示される指定並列度を指定した新規ジョブ実行要求を、ジョブ実行条件に示される登録先キューに登録した場合の、新規ジョブの実行終了時刻の予測値である予測終了時刻を算出する。登録手段は、ジョブ実行条件のうちの実行終了時刻が最先となる最先ジョブ実行条件に示される指定並列度で新規ジョブを実行させる新規ジョブ実行要求を、最先ジョブ実行条件に示される登録先キューに登録する。
【発明の効果】
【００１１】
１態様によれば、適切なジョブ実行条件を自動で設定できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るシステムの構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】端末装置のハードウェアの一構成例を示す図である。
【図４】並列度が低い場合のジョブのスケジューリング例を示す図である。
【図５】並列度が高い場合のジョブのスケジューリング例を示す図である。
【図６】複数のキューそれぞれが利用できる計算ノードの例を示す図である。
【図７】ジョブの再投入例を示す図である。
【図８】端末装置と管理ノードとの機能を示すブロック図である。
【図９】ジョブ投入要求入力画面の一例を示す図である。
【図１０】ジョブ投入処理の手順の一例を示すフローチャートである。
【図１１】空きノード数予測処理の手順の一例を示すフローチャートである。
【図１２】スケジュール情報取得処理の一例を示す図である。
【図１３】グラフの第１の例を示す図である。
【図１４】グラフの第２の例を示す図である。
【図１５】空き計算ノード数の予測例を示す図である。
【図１６】重複して利用される計算ノードがある場合の例を示す図である。
【図１７】重複して利用される計算ノードの利用状況の反映例を示す図である。
【図１８】空き計算ノードで実行できる並列度と実行可能な時間帯との検出例を示す図である。
【図１９】利用可能資源リストの一例を示す図である。
【図２０】並列度と経過時間制限値との関係例を示す図である。
【図２１】利用可能資源のソート例を示す図である。
【図２２】ジョブスクリプト更新例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るシステムの構成例を示す図である。情報処理装置１０は、計算ノード２ａ，２ｂ，・・・，３ａ，３ｂ，・・・に実行させるジョブを管理する管理ノード１に接続されている。情報処理装置１０は、ユーザからの指示に応じて、管理ノード１にジョブを投入する。ジョブの投入とは、管理ノード１のキューを指定して、ジョブの実行要求を管理ノード１に送信する処理である。
【００１４】
管理ノード１は、ジョブの実行要求を登録するキューを複数有している。キュー＃１に登録されたジョブの実行要求は、計算ノード２ａ，２ｂ，・・・で実行される。キュー＃２に登録されたジョブの実行要求は、計算ノード３ａ，３ｂ，・・・で実行される。管理ノード１では、キューごとにジョブの実行開始時刻のスケジューリングを行う。
【００１５】
計算ノード２ａ，２ｂ，・・・，３ａ，３ｂ，・・・でジョブを実行させようとするユーザは、情報処理装置１０に対して、実行するジョブと、そのジョブの所定の並列度での実行時間とを入力する。すると情報処理装置１０は、ターンアラウンドタイム（実行要求を入力してから結果が出力されるまでの時間）が最短となるようなジョブ実行条件で、管理ノード１にジョブを投入する。ジョブ実行条件には、例えばジョブの並列度と、登録先のキューとが含まれる。このようなジョブの投入処理を実施するため、情報処理装置１０は、開始時刻算出手段１１、実行時間算出手段１２、終了時刻算出手段１３、および登録手段１４を有する。
【００１６】
開始時刻算出手段１１は、少なくとも１つのキューそれぞれに登録されたジョブ実行要求の実行スケジュールを示すスケジュール情報４ａ，４ｂを、管理ノード１から取得する。次に開始時刻算出手段１１は、少なくとも１つのキューのうちの１つを登録先キューとし、複数の並列度のうちの１つを指定並列度とするジョブ実行条件を複数生成する。さらに開始時刻算出手段１１は、スケジュール情報４ａ，４ｂに基づいて、ジョブ実行条件それぞれについて、予測開始時刻を算出する。予測開始時刻は、指定並列度での新規ジョブの実行を要求する新規ジョブ実行要求を登録先キューに登録した場合の、新規ジョブの実行開始時刻の予測値である。
【００１７】
例えば開始時刻算出手段１１は、ジョブ実行条件に示される登録先キューに蓄積されたジョブ実行要求を実行する計算ノード群のうちの、ジョブを実行していない空き計算ノードの数の時間遷移を求める。開始時刻算出手段１１は、時間遷移において、ジョブ実行条件に示される指定並列度に応じた数の空き計算ノードが存在する利用可能期間の最先の時刻を、ジョブ実行条件の予測開始時刻とする。
【００１８】
また、開始時刻算出手段１１は、ジョブ実行条件に示される登録先キューにおける時間遷移において、利用可能期間の長さを示す利用可能時間を算出することもできる。
実行時間算出手段１２は、新規ジョブを所定の並列度で実行したときの新規ジョブの実行時間に基づいて、複数の並列度それぞれに応じた新規ジョブの実行時間を算出する。例えば実行時間算出手段１２は、ユーザが入力した所定の並列度で実行したときの新規ジョブの実行時間を基準として、並列度が上がるほど実行時間が短くなり、並列度が下がるほど実行時間が長くなるように、複数の並列度それぞれでの実行時間を算出する。
【００１９】
終了時刻算出手段１３は、ジョブ実行条件それぞれについて、ジョブ実行条件の予測開始時刻と、ジョブ実行条件に示される指定並列度での新規ジョブの実行時間とに基づいて、予測終了時刻を算出する。予測終了時刻は、ジョブ実行条件に示される指定並列度を指定した新規ジョブ実行要求を、ジョブ実行条件に示される登録先キューに登録した場合の、新規ジョブの実行終了時刻の予測値である。終了時刻算出手段１３は、例えば、予測終了時刻の早い順にジョブ実行条件をソートする。
【００２０】
なお終了時刻算出手段１３は、ジョブ実行条件に応じて算出された利用可能時間が、ジョブ実行条件に示される指定並列度の実行時間未満の場合、ジョブ実行条件の予測終了時刻の算出を抑止する。予測終了時刻の算出が抑止されたジョブ実行条件は、登録手段１４によるジョブ登録の際のジョブ実行条件としては利用されない。
【００２１】
登録手段１４は、ジョブ実行条件のうちの実行終了時刻が最先となる最先ジョブ実行条件に示される指定並列度で新規ジョブを実行させる新規ジョブ実行要求を、最先ジョブ実行条件に示される登録先キューに登録する。なお新規ジョブ実行要求には、例えばジョブが計算ノードを占有する制限時間の指定が含まれる。この制限時間の値は、ジョブの並列度に応じて、実行時間算出手段１２が算出した実行時間と同じ値となる。
【００２２】
また、登録手段１４は、最先ジョブ実行条件に従って登録した新規ジョブ実行要求の実行スケジュールを、管理ノード１から取得する。次に登録手段１４は、取得した実行スケジュールに示される新規ジョブの実行開始時刻を示す実行開始予定時刻に、最先ジョブ実行条件に示される指定並列度での新規ジョブの実行時間を加算した終了予定時刻を求める。そして登録手段１４は、終了予定時刻と、最先ジョブ実行条件以外の他のジョブ実行条件の予測終了時刻とを比較する。終了予定時刻が、他のジョブ実行条件の予測終了時刻よりも遅い場合、登録手段１４は、最先ジョブ実行条件に従って登録した新規ジョブ実行要求をキャンセルする。そして登録手段１４は、他のジョブ実行条件に示される指定並列度で新規ジョブを実行させる新規ジョブ再実行要求を、他のジョブ実行条件に示される登録先キューに登録する。
【００２３】
このようなシステムによれば、管理ノード１におけるキューごとのジョブの実行スケジュールに基づいて、開始時刻算出手段１１により、並列度と登録先キューとを示すジョブ実行条件ごとの予測開始時刻が算出される。またユーザから入力された所定の並列度でのジョブの実行時間に基づいて、実行時間算出手段１２により、複数の並列度それぞれでのジョブの実行時間が算出される。次に、各ジョブ実行条件に対応する予測開始時刻と実行時間とに基づいて、終了時刻算出手段１３により、ジョブ実行条件の予測終了時刻が算出される。この予測終了時刻は、ジョブのターンアラウンドタイムの予測値となる。そして、登録手段１４により、予測終了時刻が最先のジョブ実行条件に従って、管理ノード１にジョブが投入される。図１の例では、並列度「４」を指定したジョブの実行要求が、キュー＃１に対して登録されている。
【００２４】
管理ノード１では、ジョブの実行要求が登録されると、そのジョブの実行開始時刻をスケジューリングする。スケジューリングのアルゴリズムはキューごとに異なり、計算ノードの空き状況以外にも、様々な条件を考慮してスケジュールが行われる。そのため、ジョブの実行要求で指定されている並列度の数に応じた空き計算ノードが存在していても、そのジョブがすぐに実行されない場合もあり得る。そこで、管理ノード１は、スケジューリング後に、キューに登録されたジョブの実行要求の、スケジュール上での実行開始時刻を示す開始予定時刻を、情報処理装置１０に送信する。すると情報処理装置１０では、登録手段１４により、ジョブの終了予定時刻が算出される。そして、終了予定時刻よりも早い予測終了時刻が得られたジョブ実行条件があるか否かが判断される。
【００２５】
図１の例では、終了時刻算出手段１３のソート順で１番目のジョブ実行条件でジョブの実行要求を登録したときの終了予定時刻「１２：４５」よりも、２番目のジョブ実行条件の予測終了時刻「１２：４２」の方が早い。このように、他のジョブ実行条件の予測終了時刻の方が早い場合、先に登録したジョブの実行要求がキャンセルされる。例えば登録手段１４は、管理ノード１に対して、ジョブの実行要求のキャンセルの指示を送信する。その指示に応じて、管理ノード１は、該当するジョブの実行要求をキューから削除する。そして、他のジョブ実行条件に従ったジョブの実行要求が、管理ノード１に投入される。例えば並列度「８」を指定したジョブの実行要求が、キュー＃２に登録される。
【００２６】
このようにして、ユーザが、所定の並列度でのジョブの実行時間（例えば１並列度でのジョブの実行時間）の指定を含めて、実行するジョブを情報処理装置１０に入力するだけで、ターンアラウンドタイムが最適となるジョブ実行条件が自動で決定される。そして決定されたジョブ実行条件に従ったジョブの実行要求が、管理ノード１に送信される。その結果、例えば、テスト実行のように、繰り返し実行するジョブを、効率的に実行することができる。
【００２７】
しかも、実際のスケジュール結果が、予測通りかどうかが確認され、終了予定時刻が予測より遅くなり、他のジョブ実行条件の方がターンアラウンドタイムを短くできる場合、ジョブの実行要求の再投入が行われる。これにより、管理ノード１におけるジョブのスケジューリングアルゴリズムの詳細が不明であっても、適切なジョブ実行条件でジョブを実行させることができる。
【００２８】
なお、開始時刻算出手段１１、実行時間算出手段１２、終了時刻算出手段１３、および登録手段１４は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【００２９】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。
図２は、第２の実施の形態のシステム構成例を示す図である。ネットワーク２０を介して、複数の計算ノード３１，３２，・・・、管理ノード２００、および端末装置１００が接続されている。複数の計算ノード３１，３２，・・・は、ジョブを実行するコンピュータである。管理ノード２００は、複数の計算ノード３１，３２，・・・に対してジョブの実行を指示するコンピュータである。端末装置１００は、実行させるジョブを管理ノード２００に投入するコンピュータである。
【００３０】
図３は、端末装置のハードウェアの一構成例を示す図である。端末装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３１】
メモリ１０２は、端末装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３２】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３３】
ストレージ装置１０３は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００３４】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３５】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３６】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３７】
機器接続インタフェース１０７は、端末装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３８】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３９】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、計算ノード３１，３２，・・・や管理ノード２００も、端末装置１００と同様の構成のハードウェアで実現できる。さらに、第１の実施の形態に示した情報処理装置１０も、図３に示した端末装置１００と同様のハードウェアにより実現できる。
【００４０】
端末装置１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。端末装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、端末装置１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また端末装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４１】
次に、ＨＰＣにおけるバッチ処理のスケジューリングについて説明する。ＨＰＣでは、ユーザは端末装置１００を用いて管理ノード２００にジョブを投入する。管理ノード２００は、計算ノードの空き状態を考慮して、ジョブを計算ノードに割り当てる。計算ノードの空き状態とは、その計算ノードがジョブを実行していない状態である。そして、管理ノード２００は、割り当て先の計算ノードに、ジョブを実行させる。
【００４２】
ジョブを割り当てる計算ノードの台数は、ジョブ投入時に指定される並列度に基づいて決定される。ジョブの並列度が高いほど、そのジョブの実行時間が短くて済む。ただし、ジョブの並列度が高い場合、並列度に応じた数の計算ノードが空き状態となるまで、ジョブの実行が待たされる場合がある。以下、図４と図５を参照して、並列度に応じた、ジョブの割り当て状況の違いについて説明する。
【００４３】
図４は、並列度が低い場合のジョブのスケジューリング例を示す図である。図４の例では、ユーザは、端末装置１００を用い、管理ノード２００に対して並列度「４」のジョブを新たに投入している。このとき、空き計算ノードが４台あるため、新たに投入されたジョブが４台の計算ノードに割り当てられる。そして管理ノード２００は、割り当て先の計算ノードに対して、新たに投入されたジョブの実行を指示する。
【００４４】
図５は、並列度が高い場合のジョブのスケジューリング例を示す図である。図５の例では、ユーザは、端末装置１００を用い、管理ノード２００に対して並列度「８」のジョブを新たに投入している。このとき、空き計算ノードが４台しかない。そのため、すぐにはジョブを計算ノードに割り当てることができず、ジョブは実行待ち状態としてキューに蓄積される。
【００４５】
このように、空き計算ノードが存在していても、並列度が高いジョブは、計算ノードの資源割り当てを後回しにされることがある。なお、計算ノードが２４台空いている場合であっても、２０並列のジョブなら、スケジューラにおいて計算ノードを割り当てられるとは限らない。例えば、重要度が高いジョブの緊急実行に備え、空き計算ノード数が少なくなると、重要度の低いジョブへの資源割り当てを抑止するようなスケジューラもあり得る。すなわち、ジョブへの計算ノードの割り当てが行われるか否かは、単純に空き計算ノード数のみで決まるわけではない。
【００４６】
また管理ノード２００では、複数のキューを設けることができる。キューは、例えば利用できる計算ノードが異なる。また、キューごとに、ジョブに計算ノードを割り当てるアルゴリズムが異なる。
【００４７】
図６は、複数のキューそれぞれが利用できる計算ノードの例を示す図である。例えば、キュー＃１は、２４台の計算ノードを利用できる。キュー＃２は、３６台の計算ノードを利用できる。キュー＃１で利用できる計算ノードのうち、１２台はキュー＃２でも利用できる。キュー＃３は、すべての計算ノードを利用できる。
【００４８】
このように、複数のキューがある場合、キューごとに利用できる計算ノードが異なる。利用できる計算ノードの違いにより、ジョブをどのキューにキューイングするのかによって、そのジョブのターンアラウンドタイムも異なってくる。なお、どのキューにジョブを投入するのかは、管理ノード２００へのジョブ投入時に、端末装置１００から指定できる。すなわち、キューイング先のキューを適切に選択することで、ターンアラウンドタイムを短縮することができる。
【００４９】
なお、キューごとに、資源割り当てのアルゴリズムが異なることから、どのキューに投入すればターンアラウンドが最短となるのかを、正確に予測するのは困難である。そこで第２の実施の形態では、投入したジョブが、予想通り実行されるかどうかを確認し、予想よりも遅く実行が開始されるようにスケジューリングされた場合、投入したジョブをキャンセルし、並列度やキューを変更して、ジョブの再投入を行う。
【００５０】
図７は、ジョブの再投入例を示す図である。最初に、端末装置１００から管理ノード２００へ、キュー＃１をキューイング先とする並列度「４」のジョブを投入したものとする。管理ノード２００では、投入されたジョブをキュー＃１にキューイングし、実行スケジュールを決定する。そして管理ノード２００は、投入されたジョブの開始予定時刻と実行時間制限値とを含む情報を、投入結果として端末装置１００に通知する。
【００５１】
端末装置１００では、投入結果に基づいてジョブの終了予定時刻を求める。そして端末装置１００は、ジョブの終了予定時刻がジョブ投入前に予想していた時刻より遅い場合、ジョブの並列度や投入先のキューなどのパラメータの変更を検討する。パラメータを変更した方がジョブの終了予定時刻が早くなる可能性があるなら、端末装置１００は、先に投入したジョブをキャンセルし、並列度または投入先のキューを変更したジョブを再投入する。
【００５２】
このように端末装置１００において適切なパラメータを設定してジョブを投入することで、ジョブのターンアラウンドタイムの短縮ができる。どのような値のパラメータが適切なのかは、空き計算ノード数などに応じて、端末装置１００が決定する。
【００５３】
図８は、端末装置と管理ノードとの機能を示すブロック図である。端末装置１００は、ジョブ投入要求受け付け部１１０と、ジョブ投入部１２０とを有する。ジョブ投入要求受け付け部１１０は、投入するジョブに関する情報の入力を受け付けるＧＵＩ（Graphical User Interface）である。ジョブ投入要求受け付け部１１０は、例えば最大並列数や１並列で実行した場合の経過時間制限値の入力を受け付ける。経過時間制限値は、そのジョブに許容される実行時間の最大値である。経過時間制限値は、第１の実施の形態に示した実行時間の一例である。
【００５４】
ジョブ投入部１２０は、ジョブ投入要求受け付け部１１０が受け付けたジョブ投入要求に基づいて、そのジョブのターンアラウンドタイムを最短にするパラメータを算出する。例えばジョブ投入部１２０は、管理ノード２００からキューに登録されたジョブの実行スケジュールを示すスケジュール情報を取得する。次にジョブ投入部１２０は、スケジュール情報に基づいて、キューごとに、そのキューで利用できる計算ノードのジョブの実行状況と実行予定とを確認する。キューの状態に基づいて、ジョブ投入部１２０は、最も早くジョブを終了させることができる並列度、および投入先のキューを、パラメータ値として決定する。そして、ジョブ投入部１２０は、算出したパラメータ値を設定したジョブを、管理ノード２００に投入する。またジョブ投入部１２０は、投入したジョブの実行スケジュールの結果が、予定した時刻よりも実行終了が遅れることが判明すると、そのジョブをキャンセルし、パラメータ値を変更してジョブを再投入する。
【００５５】
なお、ジョブ投入部１２０は、図１に示した情報処理装置１０が有する開始時刻算出手段１１、実行時間算出手段１２、終了時刻算出手段１３、および登録手段１４を包含する機能の一例である。
【００５６】
管理ノード２００は、ジョブマネージャ２１０を有する。ジョブマネージャ２１０は、計算ノードに実行させるジョブを管理する。ジョブマネージャ２１０は、ジョブ投入受け付け部２１１、スケジューラ２１２〜２１４、キュー２１５〜２１７、実行指示部２１８、およびスケジュール情報提供部２１９を有する。
【００５７】
ジョブ投入受け付け部２１１は、端末装置１００からのジョブの投入を受け付ける。ジョブ投入受け付け部２１１は、ジョブ投入時に指定されたキューを管理するスケジューラに、投入されたジョブの実行を要求するジョブ実行要求を送信する。
【００５８】
スケジューラ２１２〜２１４は、受信したジョブ実行要求を、対応するキュー２１５〜２１７にキューイングする。スケジューラ２１２〜２１４は、ジョブ実行要求をキューイングする際、そのジョブに対して計算ノードを割り当て、ジョブの実行を開始する開始予定時刻を決定する。そしてスケジューラ２１２〜２１４は、ジョブ実行要求を、キュー２１５〜２１７にキューイングする。キューイングしたジョブ実行要求には、割り当てられた計算ノードの識別子と、開始予定時刻が付与される。
【００５９】
キュー２１５〜２１７は、実行待ちのジョブ実行要求を蓄積するキューである。
実行指示部２１８は、ジョブの開始予定時刻になると、そのジョブ実行要求をキュー２１５〜２１７から取り出し、そのジョブに割り当てられた計算ノードに対してそのジョブ実行要求を送信する。
【００６０】
スケジュール情報提供部２１９は、キュー２１５〜２１７に登録されているジョブ実行要求に関するスケジュール情報を、端末装置１００に送信する。例えばスケジュール情報提供部２１９は、端末装置１００のジョブ投入部１２０からスケジュール情報取得要求を受信すると、各キュー２１５〜２１７からスケジュール情報を収集し、そのスケジュール情報をジョブ投入部１２０に送信する。
【００６１】
なお、図８に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図８に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００６２】
次に、ジョブ投入要求受け付け部１１０におけるＧＵＩの表示画面について説明する。例えばジョブ投入要求受け付け部１１０は、最大並列度などの値を入力するためのジョブ投入要求入力画面をモニタ２１に表示する。
【００６３】
図９は、ジョブ投入要求入力画面の一例を示す図である。ジョブ投入要求入力画面４０には、最大並列度の入力部４１、１並列時の経過時間制限値の入力部４２、ジョブスクリプトの入力部４３、および実行ボタン４４が設けられている。
【００６４】
入力部４１には、投入するジョブの最大並列度を示す数値が入力される。ユーザは、入力部４１に数値を入力するか、右側に表示されたスライダーを操作して、入力部４１内の数値を変更する。
【００６５】
入力部４２には、ジョブを１並列で実行したとき（並列化されないとき）の、ジョブの経過時間制限値が入力される。ユーザは、入力部４２に数値を入力するか、右側に表示されたスライダーを操作して、入力部４２内の数値を変更する。
【００６６】
入力部４３は、ジョブスクリプトの識別子（パスとファイル名）を入力するテキストボックスである。ジョブスクリプトは、投入するジョブにおける実行内容が記述されたスクリプト形式のプログラムである。ジョブスクリプトには、実行するジョブの並列度や、経過時間制限値などの情報が含まれる。ユーザは、入力部４３に、投入するジョブに対応するジョブスクリプトの識別子を入力する。
【００６７】
実行ボタン４４は、ジョブ投入要求入力画面４０に入力された内容でのジョブ投入要求の入力を指示するボタンである。実行ボタン４４が押下されると、ジョブ投入要求受け付け部１１０が、入力された最大並列度、経過時間制限値、およびジョブスクリプトの識別子を含むジョブ投入要求を、ジョブ投入部１２０に送信する。
【００６８】
このようにジョブ投入の際、ユーザは、ＧＵＩ画面に簡単な入力を行うだけでよい。ジョブ投入要求を受信したジョブ投入部１２０は、ジョブ投入処理を実行する。
図１０は、ジョブ投入処理の手順の一例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００６９】
［ステップＳ１０１］ジョブ投入部１２０は、キューの状態を確認する。例えばジョブ投入部１２０は、管理ノード２００に対して、スケジュール情報取得要求を送信する。ジョブ投入部１２０は、スケジュール情報取得要求に応じて管理ノード２００から送信されたスケジュール情報を取得する。
【００７０】
［ステップＳ１０２］ジョブ投入部１２０は、スケジュール情報に基づいて、空きノード数予測処理を行う。空きノード数予測処理により、キューごとに、空きノード数の時間推移を示すグラフが生成される。空きノード数予測処理の詳細は後述する（図１１参照）。
【００７１】
［ステップＳ１０３］ジョブ投入部１２０は、ジョブの１並列の経過時間制限値に基づいて、経過時間制限値計算式を設定する。例えばジョブ投入部１２０は、１並列の経過時間制限値を基準として、並列度が上がるごとに経過時間制限値が低下するような、並列度と経過時間制限値との関係式を求め、経過時間制限値計算式とする。ジョブの並列度が決定された場合、経過時間制限値計算式によって経過時間制限値が求まる。
【００７２】
［ステップＳ１０４］ジョブ投入部１２０は、ステップＳ１０２による空きノード数の予測結果に基づいて、ジョブの予測終了時刻が最も早くなるように、投入先のキューと並列度を決定する。例えばジョブ投入部１２０は、空きノード数の予測処理の結果に基づいて、キューと並列度の組ごとに、投入するジョブを並列度に応じた、該当キューでの実行可能な最先の時刻を求め、予測開始時刻とする。またジョブ投入部１２０は、その並列度での経過時間制限値を、経過時間制限値計算式に基づいて求める。そしてジョブ投入部１２０は、予測開始時刻に経過時間制限値を加算した時刻を、キューと並列度の組における予測終了時刻とする。ジョブ投入部１２０は、想定されるすべてのキューと並列度の組について予測終了時刻を求め、予測終了時刻が最先のキューと並列度の組を、投入するジョブに適用するキューおよび並列度に決定する。
【００７３】
［ステップＳ１０５］ジョブ投入部１２０は、決定した並列度に応じてジョブスクリプトを更新する。例えばジョブ投入部１２０は、ジョブスクリプト中の並列度が設定された部分を、決定した並列度に書き換える。またジョブ投入部１２０は、ジョブスクリプト中の経過時間制限値が設定された部分を、経過時間制限値計算式に基づいて決定した経過時間制限値に書き換える。
【００７４】
［ステップＳ１０６］ジョブ投入部１２０は、ジョブを管理ノード２００に投入する。例えばジョブ投入部１２０は、投入するジョブのジョブスクリプトに、投入先となるキューの識別子を付与した情報を、管理ノード２００に送信する。
【００７５】
［ステップＳ１０７］ジョブ投入部１２０は、投入したジョブのスケジュール情報を取得する。例えばジョブ投入部１２０は、管理ノード２００に対して、投入したジョブの投入先となっているキューを指定して、スケジュール情報取得要求を送信する。管理ノード２００のスケジュール情報提供部２１９は、スケジュール情報取得要求で指定されたキューのスケジュール情報を、端末装置１００に送信する。ジョブ投入部１２０は、管理ノード２００から送信されたスケジュール情報を取得する。ジョブ投入部１２０は、取得したスケジュール情報に基づいて、投入したジョブの予測終了時刻を計算する。例えばスケジュール情報には、投入したジョブの予測開始時刻と経過時間制限値とが含まれている。そこでジョブ投入部１２０は、投入したジョブの予測開始時刻に経過時間制限値を加算した時刻を、予測終了時刻とする。
【００７６】
［ステップＳ１０８］ジョブ投入部１２０は、ステップＳ１０４で次点となったキューを並列度との組とした場合のジョブの予測終了時刻と、ステップＳ１０７で取得したスケジュール情報に基づく予測終了時刻とを比較する。そしてジョブ投入部１２０は、次点候補の方が早く終了するか否かを判断する。次点候補の方が早く終了するのであれば、処理をステップＳ１０９に進める。そうでなければ、ジョブ投入処理を終了する。なお、次点候補が存在しない場合にも、ジョブ投入処理が終了する。
【００７７】
［ステップＳ１０９］ジョブ投入部１２０は、投入したジョブをキャンセルする。例えばジョブ投入部１２０は、管理ノード２００に、ステップＳ１０６で投入したジョブのキャンセル要求を送信する。またジョブ投入部１２０は、前回のステップＳ１０４で決定したキューと並列度との組に対応する予測終了時刻として、ステップＳ１０７で取得したスケジュール情報に基づいて算出した予測終了時刻を設定する。その後、ジョブ投入部１２０は、処理をステップＳ１０４に進める。
【００７８】
このような手順でジョブ投入処理が行われる。次に、空きノード数予測処理の詳細について説明する。
図１１は、空きノード数予測処理の手順の一例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００７９】
［ステップＳ１２１］ジョブ投入部１２０は、ジョブマネージャ２１０が有するキューのうちの、未処理のキューを１つ選択する。
［ステップＳ１２２］ジョブ投入部１２０は、選択したキューのスケジュール情報に基づいて、対応するキューで利用できる計算ノードのうちの空き計算ノードの数の時間推移を示すグラフを作成する。
【００８０】
［ステップＳ１２３］ジョブ投入部１２０は、選択したキューと他のキューとの間に、利用できる計算ノードの重複があるか否かを判断する。例えば、ジョブ投入部１２０は、ジョブマネージャ２１０から、キュー２１５〜２１７それぞれについて、利用できる計算ノードの識別子を取得する。そしてジョブ投入部１２０は、キューごとの利用できる計算ノードを比較し、共通の計算ノードが含まれるかどうかにより、識別子が選択したキューと他のキューとの利用できる計算ノードの重複の有無を判断する。計算ノードの重複がある場合、処理がステップＳ１２４に進められる。計算ノードの重複がない場合、処理がステップＳ１２６に進められる。
【００８１】
［ステップＳ１２４］ジョブ投入部１２０は、選択したキューと他のキューとで重複して利用できる計算ノードのうち、他のキューで利用されているか、利用予定の計算ノードがあるか否かを判断する。該当する計算ノードがあれば、処理がステップＳ１２５に進められる。該当する計算ノードがなければ、処理がステップＳ１２６に進められる。
【００８２】
［ステップＳ１２５］ジョブ投入部１２０は、選択したキューのグラフに、そのキューで利用可能な計算ノードのうち他のキューで利用されている計算ノードおよび利用予定の計算ノードの数を反映させ、グラフを更新する。
【００８３】
［ステップＳ１２６］ジョブ投入部１２０は、すべてのキューを処理したか否かを判断する。すべてのキューの処理が完了した場合、空きノード数予測処理が終了する。未処理のキューがあれば、処理がステップＳ１２１に進められる。
【００８４】
以上、図１０、図１１に示した処理により、ジョブの予測終了時刻が最も早くなるようなキューおよび並列度を指定して、ジョブを投入することができる。以下、図１０、図１１に示した処理を、より詳細に説明する。
【００８５】
図１２は、スケジュール情報取得処理の一例を示す図である。例えば端末装置１００に、ユーザからジョブ投入要求が入力されると、そのジョブ投入要求がジョブ投入要求受け付け部１１０で取得される。そしてジョブ投入要求が、ジョブ投入部１２０に送信される。
【００８６】
ジョブ投入要求を受信したジョブ投入部１２０は、ＳＳＨ（Secure SHell）と呼ばれる暗号・認証技術を用いて、管理ノード２００に接続する。そして端末装置１００のジョブ投入部１２０は、管理ノード２００のジョブマネージャ２１０に、スケジュール情報の取得を示すコマンドを送信する。ジョブマネージャ２１０は、そのコマンドを実行し、ジョブの実行状況などの情報をキューごとに収集する。そしてジョブマネージャ２１０は、各キューのスケジュール情報５１，５２，・・・を端末装置１００に送信する。
【００８７】
スケジュール情報５１，５２，・・・には、対応するキューの識別子（ＱＵＥＵＥ＃）と、利用できる計算ノード数（ＮＯＤＥＳ）が含まれる。さらにスケジュール情報５１，５２，・・・には、ジョブごとに、ジョブＩＤ（ＪＯＢ＿ＩＤ）、ジョブ名（ＪＯＢ＿ＮＡＭＥ）、ユーザ（ＵＳＥＲ）、計算ノード数（ＮＯＤＥＳ）、状態（ＳＴＡＴＥ）、キューイング時刻（ＱＵＥＵＥＤ＿ＴＩＭＥ）、開始時刻（ＳＴＡＲＴ＿ＴＩＭＥ）、および経過時間制限値（ＥＬＰＳ＿ＬＩＭＩＴ）が含まれる。ジョブＩＤは、ジョブの識別子である。ジョブ名は、ジョブの名称である。ユーザは、ジョブを投入した端末装置１００を使用しているユーザの名称である。計算ノード数は、ジョブの実行する計算ノード数（並列度）である。状態は、ジョブの状態である。状態には、実行中（ＲＵＮ）とキューイング中（ＱＵＥ）とがある。キューイング時刻は、ジョブがキューイングされた日時である。開始時刻は、ジョブの実行開始時刻または開始予定時刻である。実行開始時刻は、既に実行が開始されているジョブの実行を開始した時刻である。開始予定時刻は、実行待ちのジョブの実行を開始する予定の時刻である。経過時間制限値は、ジョブの実行に要する最大時間である。
【００８８】
なおスケジュール情報５１，５２，・・・に、キューで使用できる各計算ノードの識別子を含めてもよい。また、スケジュール情報５１，５２，・・・に、各ジョブに割り当てられた計算ノードの識別子を含めてもよい。これらの情報をスケジュール情報５１，５２，・・・に含めることで、これらの情報に基づいて、図１１のステップＳ１２３，Ｓ１２４における重複する計算ノードの有無などの判断を行うことができる。
【００８９】
ジョブ投入部１２０は、スケジュール情報５１，５２，・・・に基づいて、空き計算ノードの数の時間推移を示すグラフを作成する。例えばジョブ投入部１２０は、キューで使用できるノード数から、時刻ごとの利用されている計算ノード数を減算して、空き計算ノード数の時間遷移を求める。
【００９０】
図１３は、グラフの第１の例を示す図である。図１３の例では、「キュー＃１」のスケジュール情報６１内に４つのジョブの情報が含まれている。各ジョブの実行時間帯は、実行開始時刻または開始予定時刻から、経過時間制限値に示される時間経過後までの時間帯である。そこで、ジョブ投入部１２０は、縦軸にノード数、横軸に経過時間を採ったグラフ７１を生成する。グラフ７１には、各ジョブに対応する矩形が示されている。ジョブを示す矩形の横方向の幅は、そのジョブの実行時間を示す。矩形の縦方向の幅は、ジョブで利用するノード数を示す。矩形の左辺は、ジョブの実行開始時刻または開始予定時刻に合わせられている。
【００９１】
図１４は、グラフの第２の例を示す図である。図１４の例では、「キュー＃２」のスケジュール情報６２内に３つのジョブの情報が含まれている。そこで、各ジョブに対応する３つの矩形を含むグラフ７２が生成されている。
【００９２】
図１３、図１４に示したグラフ７１，７２に基づいて、空き計算ノード数の時間遷移が予測できる。
図１５は、空き計算ノード数の予測例を示す図である。ジョブ投入部１２０は、生成したグラフ７３の矩形を細分化して、上方向に寄せ、空き計算ノードを示す領域を纏めたグラフ７４を生成する。このグラフ７４により、経過時間に応じた空き計算ノード数が明確となる。計算上は、経過時間ごとに、各ジョブで利用している計算ノード数を合計し、キューが利用できる計算ノード数から減算することで、空き計算ノード数の時間遷移が得られる。
【００９３】
なお図１３〜図１５は、他のキューとの間で利用できる計算ノードが重複しない場合の例である。実際には、図６に示したように一部の計算ノードが複数のキューから重複して利用されることがある。そこで、重複して利用される計算ノードを考慮して、キューごとの空き計算ノード数が計算される。
【００９４】
図１６は、重複して利用される計算ノードがある場合の例を示す図である。図１６に示すように、異なるキューにおいて、利用できる計算ノードが重複する場合がある。この場合、ジョブ投入部１２０は、重複する計算ノードを利用する他のキューのジョブでの、重複する計算ノードの利用状況を確認する。なお、図１６の例では、各キューにおいて、他のキューと重複して利用されない計算ノードを優先的にジョブに割り当て、そのような計算ノードに空き状態のものがないときに、重複して利用される計算ノードをジョブに割り当てている。
【００９５】
図１６の例において、キュー＃１の空き計算ノード数を予測する場合、ジョブ投入部１２０は、キュー＃２のグラフ７６から、重複して利用される計算ノードを利用するジョブを検出する。そしてジョブ投入部１２０は、検出したジョブで利用される計算ノードの分を、キュー＃１のジョブでの計算ノードの利用と同等に扱い、キュー＃１のグラフ７５を更新する。
【００９６】
図１７は、重複して利用される計算ノードの利用状況の反映例を示す図である。図１７に示すように、キュー＃１に対応するグラフ７５には、重複して利用される計算ノードのジョブへの割り当て状況が反映される。
【００９７】
以上のようにして、キューごとのグラフが得られる。グラフ化によって経過時間ごとの空き計算ノード数が把握できたら、ジョブ投入部１２０は、空き計算ノードで実行できるジョブの並列度と、その並列度でジョブを実行できる時間帯とを求める。
【００９８】
図１８は、空き計算ノードで実行できる並列度と実行可能な時間帯との検出例を示す図である。ジョブ投入部１２０は、空き計算ノードの領域内に収まる矩形８１，８２を生成する。ジョブ投入部１２０は、投入するジョブが、矩形８１，８２に示される並列数と時間帯内で実行できる場合、その矩形を利用可能資源とする。
【００９９】
ジョブ投入部１２０は、キューごとに、利用可能資源をリストアップし、利用可能資源リストを生成する。
図１９は、利用可能資源リストの一例を示す図である。キューごとに生成された利用可能資源リスト９１，９２，・・・には、グラフ内に設けた矩形ごとの利用可能資源情報が設定されている。利用可能資源情報には、並列度、利用可能時間、および予測開始時刻が含まれる。並列度は、利用可能資源の並列度である。利用可能資源の並列度は、グラフ中では、矩形のノード数方向の幅で表されている。利用可能時間は、利用可能資源の利用可能時間である。利用可能資源の利用可能時間は、グラフ中では、矩形の経過時間方向の幅で表されている。予測開始時刻は、利用可能資源の利用開始可能時刻である。利用可能資源の予測開始時刻は、グラフ中では、矩形の左端に対応する経過時間を現在時刻に加算した時刻である。
【０１００】
キューごとの利用可能資源リスト９１，９２，・・・を生成後、ジョブ投入部１２０は、経過時間制限値計算式を生成する。ジョブの実行時間は、並列度が高くなるほど短くなる。そこでジョブ投入部１２０は、ユーザから入力された１並列時の経過時間制限値に基づいて、並列度が高くなるほど経過時間制限値が低くなるような、並列度と経過時間制限値との関係式を求める。
【０１０１】
図２０は、並列度と経過時間制限値との関係例を示す図である。図２０の例では、並列度が１６ノードになったときに、ジョブの処理速度が１並列の場合の２倍となるものとしている。ジョブ投入部１２０は、横軸に並列度を採り、縦軸に経過時間制限値を採ったグラフを生成する。次にジョブ投入部１２０は、ユーザが入力した１並列時の経過時間制限値を示す点Ｐ１を、グラフ上に設定する。図２０の例では、１並列時の経過時間制限値は、１８００秒である。次にジョブ投入部１２０は、１６並列時の経過時間制限値が１８００の半分「９００」となる位置を示す点Ｐ２を、グラフ上に設定する。次にジョブ投入部１２０は、点Ｐ１と点Ｐ２とを通る直線Ｌ１を生成する。そしてジョブ投入部１２０は、直線Ｌ１上に、並列度「１」の位置を左端、最大並列度の位置を右端とする線分Ｌ２を生成する。この線分Ｌ２を表す式が、経過時間制限値計算式となる。
【０１０２】
このように、１並列の場合の経過時間制限値はユーザからの入力が利用され、並列化された場合の経過時間制限値の低減度合いは、予めジョブ投入部１２０に設定しておく。なお、ジョブを並列実行した場合、例えば８並列だから実行時間が８分の１になるといったことはない。そこで、経過時間制限値内にジョブが確実に実行完了できるように、並列化に伴う経過時間制限値の低減度合いは、余裕をもって設定する。例えば図２０の例では、１６並列の場合に実行時間が２分の１になると仮定しているが、この低減度合いは適宜調整可能である。
【０１０３】
線分Ｌ２で表される経過時間制限値計算式に基づいて、並列度に応じたジョブの経過時間制限値が計算できる。ジョブ投入部１２０は、並列度「１」から最大並列度までの並列度ごとに、ジョブの経過時間制限値を算出し、経過時間制限値リスト９０に設定する。
【０１０４】
ジョブ投入部１２０は、経過時間制限値リスト９０を用いて、キューごとの利用可能資源それぞれについて、空き計算ノードを最大限利用した並列度でジョブを実行した場合のジョブの予測終了時刻を計算する。そしてジョブ投入部１２０は、各利用可能資源を、予測終了時刻が早い順にソートする。
【０１０５】
図２１は、利用可能資源のソート例を示す図である。例えばジョブ投入部１２０は、利用可能資源リスト９１，９２，・・・それぞれから、利用可能資源情報を１つずつ選択する。ジョブ投入部１２０は、経過時間制限値リスト９０を参照し、選択した利用可能資源情報に示される並列度に応じた経過時間制限値を取得する。ジョブ投入部１２０は、取得した経過時間制限値が、選択した利用可能資源情報の利用可能時間を超えている場合、選択した利用可能資源情報に示される利用可能資源では、投入するジョブを実行できないと判断し、その利用可能資源情報を出力対象から除外する。ジョブ投入部１２０は、取得した経過時間制限値が、選択した利用可能資源情報の利用可能時間以下の場合、その利用可能資源情報の予測開始時刻に経過時間制限値を加算し、その利用可能資源情報の予測終了時刻とする。
【０１０６】
ジョブ投入部１２０は、すべての利用可能資源情報に対する処理が完了すると、予測終了時刻が計算された利用可能資源情報を、予測終了時刻が早い順にソートする。ジョブ投入部１２０は、ソート結果を、終了時刻情報３０１として出力する。終了時刻情報３０１には、利用可能資源情報それぞれを示すエントリが登録されている。各エントリには、ソートによる順位、キューの識別子、並列度、および予測終了時刻が設定されている。
【０１０７】
ジョブ投入部１２０は、終了時刻情報３０１内の最上位にエントリされている利用可能資源情報に示されるキューと並列度との組を、投入するジョブのパラメータとして決定する。
【０１０８】
投入するジョブのパラメータが決定すると、ジョブ投入部１２０は、並列度の値をジョブスクリプトに反映する。すなわち、ジョブは、シェルスクリプトを用いてアプリケーションの実行を指示する。ジョブ実行用のシェルスクリプトがジョブスクリプトである。ジョブスクリプトには、並列度に応じた処理が含まれている。そのため、ジョブ投入部１２０は、決定された並列度に応じて、自動でジョブスクリプト内の記述を変更する。
【０１０９】
図２２は、ジョブスクリプト更新例を示す図である。ジョブスクリプト３０２には、並列度や経過時間制限値に応じた値が含まれる。そこでジョブ投入部１２０は、ジョブスクリプト３０２内の並列度に応じた値を、投入するジョブのパラメータとして決定された並列度を示す値に変更する。またジョブ投入部１２０は、ジョブスクリプト３０２内の経過時間制限値に応じた値を、決定した並列度に応じた経過時間制限値に変更する。並列度に応じた経過時間制限値は、経過時間制限値リスト９０から取得できる。
【０１１０】
なお、ジョブスクリプト３０２中の修正箇所の特定方法は、ジョブ投入部１２０に予め設定しておく。図２２の例では、ジョブスクリプト３０２内の「-rsc-list」や「mpirun」などの特有の文字列を検出することで、修正箇所を識別可能である。
【０１１１】
ジョブスクリプト３０２の更新後、ジョブ投入部１２０は、キューイング先のキューを指定して、ジョブを管理ノード２００に投入する。管理ノード２００では、投入されたジョブの実行要求を、指定されたキューのスケジューラに渡す。するとスケジューラが投入されたジョブの実行のスケジューリングを行い、対応するキューに、そのジョブの実行要求をキューイングする。
【０１１２】
ジョブをキューイングすると、ジョブマネージャ２１０は、キューイングしたジョブの開始予定時刻と経過時間制限値とを、端末装置１００に送信する。端末装置１００では、ジョブ投入部１２０が、投入したジョブの開始予定時刻に経過時間制限値を加算して得た時刻（終了予定時刻）と、終了時刻情報３０１に示される次点候補となった利用可能資源の予測終了時刻とを比較する。投入したジョブの終了予定時刻の方が早いようであれば、ジョブ投入処理はここで終了する。
【０１１３】
もし、投入したジョブの終了予定時刻よりも、次点候補の予測終了時刻の方が早ければ、ジョブ投入部１２０は、投入したジョブをいったんキャンセルする。そして、ジョブ投入部１２０は、次点候補である利用可能資源に示されるキューと並列度との組をパラメータとして、ジョブを再投入する。このときジョブ投入部１２０は、終了時刻情報３０１における、キャンセルしたジョブのパラメータに対応する利用可能資源の予測終了時刻は、終了予定時刻に更新して、終了時刻情報３０１内のエントリを、予測終了時刻が早い順にソートする。
【０１１４】
このような次点候補との比較は、終了予定時刻よりも早い予測終了時刻が得られる次点候補がなくなるまで繰り返される。このようにして、スケジューラの正確なアルゴリズムが不明であっても、最適なパラメータを指定したジョブの実行要求を、確実に投入することができる。
【０１１５】
〔その他の実施の形態〕
上記の実施の形態では、管理ノードとは別の情報処理装置１０または端末装置１００において、ジョブの並列度と投入先のキューを決定しているが、このような決定処理を管理ノードが実行するようにすることもできる。
【０１１６】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１７】
１  管理ノード
２ａ，２ｂ，・・・，３ａ，３ｂ，・・・  計算ノード
４ａ，４ｂ  スケジュール情報
１０  情報処理装置
１１  開始時刻算出手段
１２  実行時間算出手段
１３  終了時刻算出手段
１４  登録手段
【図１】
0006666555.tif 000002
【図２】
0006666555.tif 000003
【図３】
0006666555.tif 000004
【図４】
0006666555.tif 000005
【図５】
0006666555.tif 000006
【図６】
0006666555.tif 000007
【図７】
0006666555.tif 000008
【図８】
0006666555.tif 000009
【図９】
0006666555.tif 000010
【図１０】
0006666555.tif 000011
【図１１】
0006666555.tif 000012
【図１２】
0006666555.tif 000013
【図１３】
0006666555.tif 000014
【図１４】
0006666555.tif 000015
【図１５】
0006666555.tif 000016
【図１６】
0006666555.tif 000017
【図１７】
0006666555.tif 000018
【図１８】
0006666555.tif 000019
【図１９】
0006666555.tif 000020
【図２０】
0006666555.tif 000021
【図２１】
0006666555.tif 000022
【図２２】
0006666555.tif 000023