(57)【要約】【課題】  複数ジョブを並列実行可能なジョブ実行システムにおいて、ユーザに負担をかけず、かつエミュレーションなどによるシステムの資源の使用を抑えた簡便かつ効果的なスケジューリング方法を提供する。【解決手段】  ジョブスケジューリング手段が実行待ちのジョブを保持するジョブキューより次に実行すべきジョブを選択する際に、ジョブ実行手段で現在実行中のジョブのジョブ名称毎の数を調べ、現在実行しているジョブがない、もしくはできるだけ現在実行中のジョブ数が少ないジョブ名称のジョブを選択することで、可能な限り同時に実行するジョブのジョブ名称を分散させるようにする。【選択図】  図３
2005209077.tif 000002
【特許請求の範囲】
【請求項１】
複数のジョブを並列に実行可能な計算機システムにおけるジョブのスケジューリングを行うジョブスケジューリング方法において、
実行中のジョブのジョブ名称によりスケジューリングすることを特徴とするジョブスケジューリング方法。
【請求項２】
新たなジョブを実行可能になったときに、実行中のジョブにおける同一ジョブ名称を持つジョブの数が少ないものの名称と一致する名称を持つジョブを実行させる
請求項１記載のジョブスケジューリング方法。
【請求項３】
ジョブの名称に応じて実行中および待機中のジョブ数が設定されたテーブルを用いる
請求項２記載のジョブスケジューリング方法。
【請求項４】
複数のジョブを並列に実行可能な計算機システムにおいて、
複数のジョブを並列に実行するジョブ実行手段と、
待機中のジョブを保持するジョブキューと、
実行中のジョブのジョブ名称によりスケジューリングして、前記ジョブキューに保持されているジョブを前記ジョブ実行手段に渡すジョブスケジューリング手段とを備えた
ことを特徴とする計算機システム。
【請求項５】
ジョブスケジューリング手段は、ジョブ実行手段が新たなジョブを実行可能になったときに、ジョブ実行手段が実行中のジョブにおける同一ジョブ名称を持つジョブの数が少ないものの名称と一致する名称を持つジョブを、ジョブキューから取り出して前記ジョブ実行手段に渡す
請求項４記載の計算機システム。
【請求項６】
ジョブスケジューリング手段は、
ジョブの名称に応じてジョブ実行手段で実行中およびジョブキューで待機中のジョブ数が設定されるテーブルを有し、
ジョブ実行手段が新たなジョブを実行可能になったときに、前記テーブルにおける実行中のジョブ数が最も少ないものに対応するジョブの名称を持つジョブを、前記ジョブ実行手段に渡す
請求項５記載の計算機システム。
【請求項７】
ジョブキューは、ジョブの名称に応じて区分されている
請求項６記載の計算機システム。
【請求項８】
ジョブスケジューリング手段は、ジョブのキューイング要求があった場合、そのジョブのジョブ名称がテーブルに存在しないときには、そのジョブ名称に応じた欄を作成し、ジョブ実行手段からジョブの終了が通知されたときに、そのジョブのジョブ名称に応じた欄の実行中のジョブ数を１減算し、減算後のジョブ数が０になるとその欄を削除する
請求項７記載の計算機システム。
【請求項９】
複数のジョブを並列に実行するジョブ実行手段と、待機中のジョブを保持するジョブキューとを備えたコンピュータに、
前記ジョブ実行手段が新たなジョブを実行可能になったときに、前記ジョブ実行手段が実行中のジョブにおける同一ジョブ名称を持つジョブの数が少ないものの名称と一致する名称を持つジョブを、前記ジョブキューから取り出して前記ジョブ実行手段に渡す処理を実行させるためのジョブスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムにおいてジョブの実行順序を制御するジョブスケジューリング方法に関し、特に、複数のジョブを並列に実行する手段を備えた計算機システムにおけるジョブの実行スケジューリング方法に関する。
【背景技術】
【０００２】
ジョブを並列に実行可能なシステムでは、中央処理装置（ＣＰＵ）や入出力チャネルなどの共有資源が実行上の制限となり、また、ジョブによってそれぞれどの資源をどれだけ使用するのかが異なるため、資源を効率よく利用するためにジョブのスケジューリングが必要である。従来のジョブスケジューリング方法では、ユーザが資源利用の予測情報をシステムに入力したり、あらかじめ実行するジョブの解析やエミュレーションを行って資源利用の予測を行い、利用資源量に応じてジョブをスケジューリングするなどの方法がとられていた（例えば、特許文献１参照。）。
【０００３】
【特許文献１】特開平９−３１１７９５号公報（段落０００９−００１５）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ユーザが資源利用の予測情報をシステムに入力する方法では、ユーザに資源利用の予測という負担がかかり、さらにその予測は目安的なものに過ぎず正確性に欠けるという課題がある。また、ジョブの解析やエミュレーションを行って資源利用の予測を行う方法では、その作業自体に時間や資源が必要となるという問題がある。
【０００５】
そこで、本発明は、ユーザによる入力を必要とせず、かつシステムの資源の使用を抑えて簡便にジョブのスケジューリングを行うことができるジョブスケジューリング方法、計算機システムおよびジョブスケジューリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明によるジョブスケジューリング方法は、複数のジョブを並列に実行可能な計算機システムにおいて、実行中のジョブのジョブ名称によりスケジューリングすることを特徴とする。
【０００７】
スケジューリング方法は、例えば新たなジョブを実行可能になったときに、実行中のジョブにおける同一ジョブ名称を持つジョブの数が少ないものの名称と一致する名称を持つジョブを優先して実行させる。
【０００８】
スケジューリング方法は、ジョブの名称に応じて実行中および待機中のジョブ数が設定されたテーブルを用いるように構成されていてもよい。
【０００９】
本発明による計算機システムは、複数のジョブを並列に実行するジョブ実行手段と、待機中のジョブを保持するジョブキューと、実行中のジョブのジョブ名称によりスケジューリングして、ジョブキューに保持されているジョブをジョブ実行手段に渡すジョブスケジューリング手段とを備えたことを特徴とする。
【００１０】
ジョブ実行手段が新たなジョブを実行可能になったときに、ジョブスケジューリング手段が、ジョブ実行手段が実行中のジョブにおける同一ジョブ名称を持つジョブの数が少ないものの名称と一致する名称を持つジョブを、ジョブキューから取り出してジョブ実行手段に渡すように構成されていてもよい。
【００１１】
ジョブスケジューリング手段が、ジョブの名称に応じてジョブ実行手段で実行中およびジョブキューで待機中のジョブ数が設定されるテーブルを有し、ジョブ実行手段が新たなジョブを実行可能になったときに、テーブルにおける実行中のジョブ数が最も少ないものに対応するジョブの名称を持つジョブをジョブ実行手段に渡すように構成されていてもよい。その場合、ジョブキューは、ジョブの名称に応じて区分されている。
【００１２】
ジョブスケジューリング手段が、ジョブのキューイング要求があった場合、そのジョブのジョブ名称がテーブルに存在しないときには、そのジョブ名称に応じた欄（ジョブの名称、実行中のジョブ数および待機中のジョブ数が設定される欄）を作成し、ジョブ実行手段からジョブの終了が通知されたときに、そのジョブのジョブ名称に応じた欄の実行中のジョブ数を１減算し減算後のジョブ数が０になるとその欄を削除するように構成されていることが好ましい。
【００１３】
本発明によるジョブスケジューリングプログラムは、複数のジョブを並列に実行するジョブ実行手段と、待機中のジョブを保持するジョブキューとを備えたコンピュータに、ジョブ実行手段が新たなジョブを実行可能になったときに、ジョブ実行手段が実行中のジョブにおける同一ジョブ名称を持つジョブの数が少ないものの名称と一致する名称を持つジョブを、ジョブキューから取り出してジョブ実行手段に渡す処理を実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、効率的な資源利用を図るジョブスケジューリングを、ユーザの負担がなくかつ少ないシステム資源の消費で行える効果がある。
【発明を実施するための最良の形態】
【００１５】
実施の形態１．
次に、本発明の実施の形態を図面を参照して説明する。図１を参照すると、本発明の第１の実施の形態のジョブスケジューリング方法を実施する計算機システムは、実行すべきジョブ（待機中のジョブ）を保持するジョブキュー１０２と、ジョブキュー１０２に存在するジョブから次に実行すべきジョブを選択するジョブスケジューリング手段１０１と、ジョブを実行するジョブ実行手段１０３と、ジョブ実行の際に使用される入出力資源１０５と、計算能力資源（以下、計算資源という。）１０６と、メモリ資源１０７とを含む。また、ジョブ実行手段１０３は、実際にジョブを実行する複数のジョブ実行ユニット（Thread）１０４を含む。ジョブキュー１０２には、ユーザや実行中のジョブから、実行すべきジョブが入れられていく。
【００１６】
入出力資源１０５は、具体的には計算機システムにおける入出力チャネルである。計算資源１０６は、具体的には、計算機システムにおける中央処理装置（ＣＰＵ）であったり、特定種類の演算に特化した構造のハードウェアやソフトウェアである。メモリ資源１０７は、具体的には、計算機システムにおける磁気ディスク等である。また、ジョブ実行手段１０３は、例えば、ジョブの実行管理（起動、一時停止、終了などの管理）を行うジョブ管理プログラムである。それぞれのジョブは、ジョブ実行ユニット１０４で管理される。ジョブスケジューリング手段１０１は、具体的には、ジョブスケジューリングプログラムである。そして、ジョブキュー１０２は、ＲＡＭ等の記憶装置に形成される。なお、ジョブキュー１０２には、ジョブ（プログラム）そのものが保持されるのではなく、ジョブを特定可能な情報のみが保持されるようにしてもよい。
【００１７】
ジョブスケジューリング手段１０１は、ジョブキュー１０２にジョブが存在する場合に、ジョブ実行手段１０３において新規ジョブを実行することのできるジョブ実行ユニット１０４の空きがあれば、以下に説明するような定められたスケジューリング方法に従ってジョブキュー１０２からジョブを選択してジョブ実行手段１０３に渡す。ジョブ実行手段１０３は、ジョブスケジューリング手段１０１より渡された新規ジョブを空いているジョブ実行ユニット１０４に実行させる。
【００１８】
図２に示すように、実行されるジョブには、実行に必要な手順を示す手順情報の他に、ジョブ実行時のパラメータなどを示す属性情報、ジョブ名称、およびジョブを所有しているユーザ名などのジョブ自体の属性を示すメタ情報が付加されている。メタ情報は、ジョブＩＤとジョブ名称とを含む。ジョブＩＤとは、個々のジョブを一意に識別するための識別子である。ジョブ名称とは手順情報を識別するための識別子である。一般的な計算機システムにおいて、手順情報は、プログラムの各ステップ（ジョブステップ、アクティビティ）に相当する。属性情報は、プログラムに与えられるパラメータや環境情報に相当する。メタ情報のジョブＩＤはプロセスＩＤに相当し、ジョブ名称はプログラムの名称に相当する。
【００１９】
次に、図１、図２および図３を参照して本実施の形態の動作について説明する。図３は、ジョブスケジューリング手段１０１がジョブキュー１０２にある実行待ちジョブをジョブ実行手段１０３に渡すスケジューリング方法を示すフローチャートである。ジョブスケジューリング手段１０１は、ジョブ実行手段１０３においてジョブ実行ユニット１０４の空きを検知すると、ジョブキュー１０３に実行待ちジョブがあるかどうかを確認する。
【００２０】
この例では、ジョブキュー１０２に５個のジョブが存在し、そのジョブ名称が先頭のジョブから順に「ファイル読み込み」、「ファイル読み込み」、「内容比較」、「内容比較」、「整合性検査」であるとする。また、ジョブ実行手段１０３にジョブ実行ユニット１０４が５個あり、そのうち４個がジョブを実行中で、その実行中のジョブのジョブ名称がそれぞれ、「ファイル読み込み」、「ファイル読み込み」、「内容比較」、「整合性検査」であるとする。
【００２１】
実行待ちジョブがある場合には、ジョブスケジューリング手段１０１は、図３に示す手順によってジョブ実行手段１０３に渡すジョブの選択を行う。まず、カウンタＮを０に設定する（ステップＳ１０１）。
【００２２】
次に、ジョブキュー１０２内のジョブのジョブ名称のうち、ジョブ実行手段１０３内で実行中のジョブにそのジョブ名称がＮ個あるかどうかを検査する（ステップＳ１０２）。最初はＮ＝０であるから、Ｎ個あるかどうかは、存在しないかどうかを意味する。すなわち、存在しないジョブ名称があるかどうか検査される。この例では、ジョブキュー１０２には、ジョブ実行手段１０３で実行中のいずれかのジョブのジョブ名称に一致しないジョブ名称のジョブは存在しないので、ステップＳ１０２の判定結果は偽（「Ｎ」）となり、ステップＳ１０３に進む。
【００２３】
ステップＳ１０３では、Ｎに１を加算してステップＳ１０２に戻る。この段階では、Ｎを１としてステップＳ１０２に戻る。ステップＳ１０２では、上記のように、ジョブキュー１０２内のジョブのジョブ名称のうち、ジョブ実行手段１０３内で実行中のジョブにそのジョブ名称がＮ個（この段階では１個）存在するジョブ名称があるかどうかを検査する。この例では、「内容比較」および「整合性検査」がジョブ実行手段１０３にそれぞれ１個存在するジョブのジョブ名称であるので、ステップＳ１０２の判定結果は真（「Ｙ」）となりステップＳ１０４に進む。
【００２４】
ステップＳ１０４において、ジョブキュー１０２に存在するジョブ名称であって、ジョブ実行手段１０３にＮ個存在するジョブ名称のリスト（リストＡとする。）を作成する。この状態では「内容比較」および「整合性検査」がリストＡの内容となる。
【００２５】
次いで、ジョブキュー１０２の先頭から、ステップＳ１０４で作成したリストＡに含まれているジョブ名称のジョブを探していき、見つかったらそのジョブをジョブキュー１０２より取り出してジョブ実行手段１０３に渡す。この例では、ジョブキュー１０２において先頭から３番目の「内容比較」のジョブ名称を持つジョブがジョブ実行手段１０３に渡され、実行されることになる。
【００２６】
ここでは、ジョブキュー１０２に存在するジョブのジョブ名称と一致するジョブ名称を持つジョブが、ジョブ実行手段１０３において１個存在する場合を例示した。ジョブキュー１０２に存在するジョブのジョブ名称と一致するジョブ名称を持つジョブが、ジョブ実行手段１０３にない場合、すなわち、Ｎ＝０でステップＳ１０２の判定結果が「Ｙ」の場合には、１回目の判定で、ステップＳ１０２からＳ１０４に移行する。例えば、ジョブ実行手段１０３において実行されているジョブの名称が「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」であって、ジョブキュー１０２に存在するジョブのジョブ名称が、順に、「Ｆ」、「Ｇ」、「Ｉ」の場合である。その場合には、ステップＳ１０５で、ジョブ名称「Ｆ」のジョブがジョブ実行手段１０３に新たに投入される。
【００２７】
また、例えば、ジョブ実行手段１０３において実行されているジョブの名称が「Ｂ」、「Ｂ」、「Ｃ」、「Ｃ」であって、ジョブキュー１０２に存在するジョブのジョブ名称が、順に、「Ｂ」、「Ｃ」である場合には、ジョブキュー１０２に存在するジョブのジョブ名称と一致するジョブ名称を持つジョブが、ジョブ実行手段１０３において２個存在する。よって、そのような場合には、Ｎ＝２でステップＳ１０２の判定結果が「Ｙ」になるので、３回目に実行されるステップＳ１０２の判定で、ステップＳ１０２からＳ１０４に移行する。その場合には、ステップＳ１０５で、ジョブ名称「Ｂ」のジョブがジョブ実行手段１０３に新たに投入される。この例を第１の例とする。
【００２８】
さらに、例えば、ジョブ実行手段１０３において実行されているジョブの名称が「Ｂ」、「Ｂ」、「Ｂ」、「Ｃ」であって、ジョブキュー１０２に存在するジョブのジョブ名称が、順に、「Ｂ」、「Ｃ」である場合には、ジョブキュー１０２に存在するジョブのジョブ名称と一致するジョブ名称（この例では「Ｃ」）を持つジョブが、ジョブ実行手段１０３において１個存在する。よって、そのような場合には、Ｎ＝１でステップＳ１０２の判定結果が「Ｙ」になるので、２回目に実行されるステップＳ１０２の判定で、ステップＳ１０２からＳ１０４に移行する。その場合には、ステップＳ１０５で、ジョブ名称「Ｃ」のジョブがジョブ実行手段１０３に新たに投入される。この例を第２の例とする。
【００２９】
以上のような処理によって、ジョブ実行手段１０３において実行されているジョブのジョブ名称とはできるだけ異なるジョブ名称を持つジョブが、ジョブ実行手段１０３に新たに投入される。より具体的には、ジョブキュー１０２に存在するジョブのジョブ名称と一致するジョブ名称を持つジョブがジョブ実行手段１０３にない場合には当然にジョブキュー１０２に存在するいずれかのジョブ（上記の例では、ジョブキュー１０２の先頭に存在するジョブ）がジョブ実行手段１０３に投入されるのであるが、ジョブキュー１０２に存在するジョブのジョブ名称と一致するジョブ名称を持つジョブがジョブ実行手段１０３に存在する場合には、ジョブ実行手段１０３に存在するジョブのうち、同一ジョブ名称を持つジョブの数（「１」が最小）が少ないものの名称（第１の例では「Ｂ」、第２の例では「Ｃ」）と一致する名称を持つジョブが、ジョブ実行手段１０３に新たに投入される。
【００３０】
実施の形態２．
次に、本発明の第２の実施の形態について図面を参照して説明する。図４を参照すると、本発明の第２の実施の形態のジョブスケジューリング方法を実施する計算機システムは、実行すべきジョブを保持する複数のジョブキューｎ（ｎ：自然数）を含むジョブキュー４０２と、ジョブキュー４０２に存在するジョブから次に実行すべきジョブを選択するジョブスケジューリング手段４０１と、ジョブを実行するジョブ実行手段１０３と、ジョブ実行の際に使用される入出力資源１０５と、計算資源１０６と、メモリ資源１０７とを含む。
【００３１】
ジョブスケジューリング手段２０１内には、図５に示されるようなジョブ情報テーブル４０８が存在する。図５に示す例では、ジョブ情報テーブル４０８には、実行ジョブ数、キュージョブ数およびジョブキュー番号が、ジョブ名称に対応して設定されている。実行ジョブ数は、ジョブ実行手段１０３において実行されているジョブの数を示す。キュージョブ数は、ジョブキュー４０２に存在するジョブの数を示す。ジョブキュー番号は、ジョブキュー４０２におけるジョブキューｎの順番を示す。
【００３２】
ジョブ実行手段１０３は、実際にジョブを実行する複数のジョブ実行ユニット１０４を含む。ジョブスケジューリング手段４０１は、動的にジョブキューｎを生成したり消滅させる。ジョブキューｎには、実行すべきジョブが入れられていく。ジョブスケジューリング手段２０１は、システムによりジョブ実行の要求があった場合、すなわち、例えばユーザや実行中のジョブからジョブ実行の要求があった場合に、定められた方法によりジョブ情報テーブル４０８を更新しジョブをジョブキューｎに入れる。以上に説明したように、ジョブキュー４０２には、ジョブ名称に対応したジョブキューｎ（ｎ：自然数）が存在しうる。そして、生成された各ジョブキューｎには１つ以上のジョブが保持される。
【００３３】
また、ジョブスケジューリング手段４０１は、ジョブキュー４０２にジョブが存在する場合、ジョブ実行手段１０３において新規ジョブを実行することのできるジョブ実行ユニット１０４の空きがあれば、定められたスケジューリング方法に従ってジョブ情報テーブル４０８を更新する。さらに、ジョブキュー４０２からジョブを選択してジョブ実行手段１０３に渡す。ジョブ実行手段１０３は、ジョブスケジューリング手段４０１から渡された新規ジョブを空いているジョブ実行ユニット１０４に実行させる。また、ジョブの実行が終わった場合には、定められた方法でジョブスケジューリング手段４０１にジョブの終了を通知する。
【００３４】
なお、実行されるジョブには、第１の実施形態におけるジョブと同様に、実行に必要な手順を示す手順情報の他に、ジョブ実行時のパラメータなどを示す属性情報、ジョブ名称、およびジョブを所有しているユーザ名などのジョブ自体の属性を示すメタ情報が付加されている。
【００３５】
次に、図４〜図８を参照して本実施の形態の動作について説明する。まず、システムによりジョブをキューに入れる要求があった場合のジョブスケジューリング手段４０１の動作を説明する。図６は、ジョブスケジューリング手段４０１が要求のあったジョブをジョブキュー４０２に入れる方法を示すフローチャートである。ジョブスケジューリング手段４０１は、システムによりジョブのキューイング要求があった場合、ジョブ情報テーブル４０８を参照する。そして、ジョブ名称欄における名称Ｎがジョブキュー４０２に入れようとしているジョブのジョブ名称と一致している行が、ジョブ情報テーブル４０８に存在するかどうかを確認する（ステップＳ２０１）。例えば、ジョブキュー４０２に入れようとしているジョブのジョブ名称が「ファイル読み込み」（Ｎ＝「ファイル読み込み」）であった場合、ジョブスケジュール手段４０１は、ジョブ情報テーブル４０８の行でジョブ名称欄の値が「ファイル読み込み」であるような行が存在するかどうかを確認する。
【００３６】
ジョブ名称欄の値が「ファイル読み込み」であるような行が存在する場合には、ジョブスケジューリング手段４０１は、ステップＳ２０２で、この行のジョブキュー番号を取得する。ジョブ情報テーブル４０８が図５に示すような状態であった場合には、ジョブキュー番号（Ｊとする。）は３である。また、この行のジョブキュー数を１増やす。図５に示す例では、ジョブキュー数は２から３に変更される。そして、ジョブスケジューリング手段４０１は、ステップＳ２０５で、ジョブキュー４０２におけるジョブキューＪ（この例ではジョブキュー３）にジョブを入れる。
【００３７】
ステップＳ２０１において、ジョブ名称欄における名称がジョブキュー４０２に入れようとしているジョブのジョブ名称と一致している行が、ジョブ情報テーブル４０８に存在しなかった場合には、ジョブスケジューリング手段４０１は、新たにジョブキューｎを作成し、一意なジョブキュー番号を付加する（ステップＳ２０３）。ここで、新たに生成されたジョブキューｎのジョブキュー番号を３（Ｊ＝３、またｎ＝３）とする。
【００３８】
次いで、ジョブスケジューリング手段４０１は、ステップＳ２０４で、ジョブ情報テーブル４０８に新たな行を追加する。新規に追加される行の各欄の値は、ジョブ名称欄がキューに入れようとしているジョブ名称、ジョブ実行数欄が０、キュージョブ数欄が１、ジョブキュー番号欄がステップＳ２０３で新規に作成したジョブキューｎに対応するジョブキュー番号である。この例では、ジョブ名称欄は「ファイル読み込み」、ジョブキュー番号欄は３になる。そして、ジョブスケジューリング手段４０１は、ステップＳ２０５で、ステップＳ２０３で新規に作成したジョブキューｎに、キューに入れようとしていたジョブを入れる。ここでは、ジョブキュー４０２におけるジョブキュー番号３のジョブキューすなわちジョブキュー３にジョブを入れる。
【００３９】
次に、ジョブ実行手段１０３においてジョブ実行ユニット１０４に空きができ、新規にジョブを実行する際のジョブスケジューリング手段４０１の動作を説明する。図７は、ジョブスケジューリング手段４０１が新規ジョブをジョブ実行手段１０３に渡す方法のフローチャートである。
【００４０】
ジョブスケジューリング手段４０１は、新規ジョブをジョブ実行手段１０３に渡す際に、ジョブ情報テーブル４０８の行のうち、ジョブ実行数が一番少ない行を一つ選択する（ステップＳ３０１）。選択された行を行Ｐとする。例えば、ジョブ情報テーブル４０８が図５に示すように形成されている場合には、「整合性検査」か「内容比較」のどちらかの行を選択する。このように、ジョブ実行数が一番少ない行が複数あった場合には、あらかじめ定められた決定方法によって、どの行を選択するか決定する。この決定方法には、キュージョブ数を用いる方法、ジョブキュー番号を用いる方法などが考えられる。ここでは、ジョブキュー番号を用いる方法を採用して、ジョブキュー番号が小さい「内容比較」を選んだとする。
【００４１】
次に、ジョブスケジューリング手段４０１は、ステップＳ３０１で選んだ行Ｐのジョブキュー番号（Ｋとする。）を取得する（ステップＳ３０２）。この例では、その値は１である。さらに、同行のキュージョブ数を１減らし、代わりに実行ジョブ数を１増やす。この例では、キュージョブ数は１になり、実行ジョブ数は２になる。そして、ジョブスケジューリング手段４０１は、ステップＳ３０２で取得したジョブキュー番号Ｋのジョブキューからジョブを一つ取り出し、ジョブ実行手段１０３に渡す（ステップＳ３０３）。
【００４２】
次に、ジョブ実行手段１０３がジョブを終了した場合のジョブスケジューリング手段４０１の動作を説明する。図８は、ジョブスケジューリング手段４０１がジョブ実行手段１０３からジョブの終了を通知された場合の動作を示すフローチャートである。
【００４３】
ジョブスケジューリング手段４０１は、ジョブ実行手段１０３からジョブの終了を通知された場合に、終了したジョブのジョブ名称Ｍをジョブ実行手段１０３から取得する（ステップＳ４０１）。終了したジョブのジョブ名称の通知はジョブ終了の通知とともになされてもよい。ここでは、例えば「整合性検査」というジョブ名称のジョブが終了したとする（Ｍ＝「整合性検査」）。
【００４４】
次に、ジョブスケジューリング手段４０１は、ジョブ情報テーブル４０８から、ジョブ名称欄の値がステップＳ４０１で取得したジョブ名称Ｍと一致する行を取得する（ステップＳ４０２）。取得された行を行Ｓとする。ジョブ情報テーブル４０８が図５に示すように形成されていた場合には、ジョブ名称「整合性検査」に対応する最初の行を取得する。次いで、ジョブスケジューリング手段４０１は、ステップＳ４０２で取得したジョブ情報テーブル４０８の行のジョブ実行数欄の値を１減らす（ステップＳ４０３）。ジョブ情報テーブ４０８が図５に示すように形成されていた場合には、先頭の行のジョブ実行欄の値を１から０にする。
【００４５】
さらに、ジョブスケジューリング手段４０１は、ステップＳ４０２で取得したジョブ情報テーブル４０８の行Ｓの、ジョブ実行欄の値とキュージョブ数欄の値がともに０であるかどうかを検査する（ステップＳ４０４）。ステップＳ４０４の検査結果が真（「Ｙ」）である場合には、ジョブスケジューリング手段４０１は、ステップＳ４０２で取得したジョブ情報テーブル４０８の行Ｓをジョブ情報テーブルから削除して処理を終了する。ステップＳ４０４の検査結果が偽（「Ｎ」）である場合には、ジョブスケジューリング手段４０１は何もせず処理を終了する。
【００４６】
以上のように、本実施の形態でも、ステップＳ３０１において、ジョブ名称で区分されているジョブ情報テーブル４０８の行のうち、ジョブ実行数が一番少ない行を一つ選択し、選択した行に対応するジョブをジョブ実行手段１０３に渡すので、ジョブ実行手段１０３において実行されているジョブのジョブ名称とはできるだけ異なるジョブ名称を持つジョブが、ジョブ実行手段１０３に新たに投入される。
【００４７】
上記の各実施の形態では、効率的な資源利用を図るジョブスケジューリングを、ユーザの負担がなくかつ少ないシステム資源の消費で行える。効率的な資源利用が図れる理由は、一般に、ジョブ名称が同じジョブでは、ジョブの動作自体は同じで、異なるのはジョブに与えられるパラメータであり、資源利用の性質が似る傾向にあることによる。また、各ジョブが、大きなジョブの一部をなしているような場合には、各ジョブは入出力部分、計算部分など機能毎に特化していることが多く、ジョブ名称が異なれば資源利用の性質が異なる傾向にあることよる。すなわち、実行するジョブ名称を分散させることで、ジョブの資源利用性質が分散し、資源が効率的に利用される。
【００４８】
また、ユーザの負担がない理由は、ジョブの資源予測をユーザが入力しなくてよいからである。
【００４９】
そして、システム資源の消費が少ない理由は、上記の各実施の形態の方式が事前のエミュレーションを必要としないので、スケジューリング自体に必要なシステム資源を少なくすることができるためである。さらに、上記の各実施の形態のスケジューリング方法で使用するジョブ名称は、一般的なシステムではジョブに必ず付加されている情報であり、これを利用するためにユーザやシステムには負担が増加しないためである。
【産業上の利用可能性】
【００５０】
本発明は、複数のジョブを並列に実行可能な計算機システムに効果的に適用できる。
【図面の簡単な説明】
【００５１】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の実施の形態におけるジョブの構成を示す説明図である。
【図３】本発明の第１の実施の形態の動作を示すフローチャートである。
【図４】本発明の第２の実施の形態の構成を示すブロック図である。
【図５】本発明の第２の実施の形態におけるジョブ情報テーブルの構成例を示す説明図である。
【図６】本発明の第２の実施の形態の動作を示すフローチャートである。
【図７】本発明の第２の実施の形態の動作を示すフローチャートである。
【図８】本発明の第２の実施の形態の動作を示すフローチャートである。
【符号の説明】
【００５２】
１０１   ジョブスケジューリング手段
１０２   ジョブキュー
１０３   ジョブ実行手段
１０４   ジョブ実行ユニット
１０５   入出力資源
１０６   計算能力資源（計算資源）
１０７   メモリ資源
４０１   ジョブスケジューリング手段
４０２   ジョブキュー
４０８   ジョブ情報テーブル
【図１】
2005209077.tif 000003
【図２】
2005209077.tif 000004
【図３】
2005209077.tif 000005
【図４】
2005209077.tif 000006
【図５】
2005209077.tif 000007
【図６】
2005209077.tif 000008
【図７】
2005209077.tif 000009
【図８】
2005209077.tif 000010