(57)【要約】【課題】あらかじめ各バッチジョブをどの実行ノードで実行させるかを割り当てることなく、各実行ノードの状況に応じてバッチジョブを実行する実行ノードを動的に決定し、実行ノードをより効率的に使用する。【解決手段】管理ノード１は、複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶手段１６と、各実行ノード２のバッチジョブの実行状態が記憶されたノード情報記憶手段１８と、起動条件を満たすバッチジョブが存在するか否かを判別する判別手段１１と、バッチジョブを実行させる実行ノード２を決定する決定手段１２と、決定した実行ノード２にバッチジョブの実行指示を送信する送信手段１１と、実行ノード２からバッチジョブの実行状態を収集してノード情報記憶手段１８を更新する情報管理手段１３とを有し、実行ノード２は、管理ノード１からの実行指示に基づいてバッチジョブを実行する実行手段２１を有する。【選択図】図１
2009230581.tif 000002
【特許請求の範囲】
【請求項１】
バッチジョブの起動スケジュールを管理する管理ノードと、バッチジョブを実行する複数の実行ノードと、を有するバッチジョブ制御システムであって、
前記管理ノードは、
複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶手段と、
各実行ノードのバッチジョブの実行状態が記憶されたノード情報記憶手段と、
前記スケジュール情報記憶手段を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する判別手段と、
前記ノード情報記憶手段を参照し、前記バッチジョブを実行させる実行ノードを決定する決定手段と、
前記決定手段が決定した実行ノードに、前記バッチジョブの実行指示を送信する送信手段と、
前記実行ノードからバッチジョブの実行状態を収集し、前記ノード情報記憶手段を更新する情報管理手段と、を有し、
前記実行ノードは、
前記管理ノードからの実行指示に基づいて、指示されたバッチジョブを実行する実行手段を有すること
を特徴とするバッチジョブ制御システム。
【請求項２】
請求項１記載のバッチジョブ制御システムであって、
前記実行ノードの実行手段は、実行時間および入力データ量に関する情報を含むバッチジョブの実行情報を、前記管理ノードに送信し、
前記管理ノードの情報管理手段は、前記実行情報を履歴情報記憶手段に記憶することこと
を特徴とするバッチジョブ制御システム。
【請求項３】
請求項２記載のバッチジョブ制御システムであって、
前記管理ノードは、
前記履歴情報記憶手段に記憶されたバッチジョブの実行時間および入力データ量に基づいて、実行ノード毎のバッチジョブの平均実行時間を算出する算出手段を、さらに有し、
前記決定手段は、前記平均実行時間が最も短い実行ノードを、前記バッチジョブを実行させる実行ノードをとして決定すること
を特徴とするバッチジョブ制御システム。
【請求項４】
請求項２または請求項３記載のバッチジョブ制御システムであって、
前記決定手段は、前記ノード情報記憶手段を参照して、現時点でバッチジョブを実行していない未実行の実行ノードが存在する場合は、当該実行ノードを前記バッチジョブを実行させる実行ノードとして決定し、未実行の実行ノードが存在しない場合は、前記算出手段が算出した実行ノード毎の平均実行時間に基づいて実行中のジョブが最も早く終了する実行ノードを推定し、当該実行ノードを前記バッチジョブを実行させる実行ノードとして決定すること
を特徴とするバッチジョブ制御システム。
【請求項５】
複数の実行ノードにバッチジョブを実行させる管理ノードであって、
複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶手段と、
各実行ノードのバッチジョブの実行状態が記憶されたノード情報記憶手段と、
前記スケジュール情報記憶手段を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する判別手段と、
前記ノード情報記憶手段を参照し、前記バッチジョブを実行させる実行ノードを決定する決定手段と、
前記決定手段が決定した実行ノードに、前記バッチジョブの実行指示を送信する送信手段と、
前記実行ノードからバッチジョブの実行状態を収集し、前記ノード情報記憶手段を更新する情報管理手段と、を有すること
を特徴とする管理ノード。
【請求項６】
請求項５記載の管理ノードであって、
前記情報管理手段は、前記管理ノードから実行時間および入力データ量に関する情報を含むバッチジョブの実行情報を受信し、当該実行情報を履歴情報記憶手段に記憶することこと
を特徴とする管理ノード。
【請求項７】
請求項６記載の管理ノードであって、
前記履歴情報記憶手段に記憶されたバッチジョブの実行時間および入力データ量に基づいて、実行ノード毎のバッチジョブの平均実行時間を算出する算出手段を、さらに有し、
前記決定手段は、前記平均実行時間が最も短い実行ノードを、前記バッチジョブを実行させる実行ノードをとして決定すること
を特徴とする管理ノード。
【請求項８】
請求項６または請求項７記載の管理ノードであって、
前記決定手段は、前記ノード情報記憶手段を参照して、現時点でバッチジョブを実行していない未実行の実行ノードが存在する場合は、当該実行ノードを前記バッチジョブを実行させる実行ノードとして決定し、未実行の実行ノードが存在しない場合は、前記算出手段が算出した実行ノード毎の平均実行時間に基づいて実行中のジョブが最も早く終了する実行ノードを推定し、当該実行ノードを前記バッチジョブを実行させる実行ノードとして決定すること
を特徴とする管理ノード。
【請求項９】
バッチジョブの起動スケジュールを管理する管理ノードと、バッチジョブを実行する複数の実行ノードとが行うバッチジョブ制御方法であって、
前記管理ノードは、
複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶部と、
各実行ノードのバッチジョブの実行状態が記憶されたノード情報記憶部と、を有し、
前記スケジュール情報記憶部を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する判別ステップと、
前記ノード情報記憶部を参照し、前記バッチジョブを実行させる実行ノードを決定する決定ステップと、
前記決定ステップで決定した実行ノードに、前記バッチジョブの実行指示を送信する送信ステップと、
前記実行ノードからバッチジョブの実行状態を収集し、前記ノード情報記憶部を更新する更新ステップと、を行い、
前記実行ノードは、
前記管理ノードからの実行指示に基づいて、指示されたバッチジョブを実行する実行ステップとを行うこと
を特徴とするバッチジョブ制御方法。
【請求項１０】
請求項９記載のバッチジョブ制御方法であって、
前記管理ノードは、
バッチジョブの実行時間および入力データ量に関する履歴情報を記憶する履歴情報記憶部をさらに有し、
前記履歴情報記憶部の実行時間および入力データ量に基づいて、実行ノード毎のバッチジョブの平均実行時間を算出する算出ステップをさらに行い、
前記決定ステップは、前記平均実行時間が最も短い実行ノードを、前記バッチジョブを実行させる実行ノードをとして決定すること
を特徴とするバッチジョブ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッチジョブのスケジューリングに関する。
【背景技術】
【０００２】
バッチジョブのスケジューリングに関する技術としては、例えば特許文献１に、分散環境におけるバッチジョブの動的負荷分散処理方法が記載されている。特許文献１の動的負荷分散処理方法では、バッチジョブの資源使用特性に基づいて当該バッチジョブを実行するのに適したサーバを決定し、実行させることが記載されている。
【０００３】
また、特許文献２には、複数のジョブが並列して動作できる計算機システムにおいて、ジョブのパラメータに基づいてシュミレーションを行い、バッチ処理時間の短縮を実現する技術が記載されている。
【特許文献１】特開平１０−３３４０５７
【特許文献２】特開平１１−２０３１５１
【発明の開示】
【発明が解決しようとする課題】
【０００４】
さて、複数のバッチジョブを、複数の実行ノードで実行させる際に、各バッチジョブをどの実行ノードで実行させるかの割り当てをあらかじめ決めておく場合がある。この場合、バッチジョブが処理するデータ量の変動などにより、バッチジョブの実行時間があらかじめ想定した予想実行時間とずれてしまう可能性があり、予定した時間内（デットライン迄）にバッチジョブが終了しないことがある。また、バッチジョブの実行時間が予想実行時間より短い時間で終了した場合、当該バッチジョブを割り当てた実行ノードでは、次のバッチジョブの起動まで空き時間が発生し、実行ノードを効率的に使用することができない。
【０００５】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、複数のバッチジョブを複数の実行ノードで実行させる際に、あらかじめ各バッチジョブをどの実行ノードで実行させるかを割り当てることなく、各実行ノードの状況に応じてバッチジョブを実行する実行ノードを動的に決定し、実行ノードをより効率的に使用することにある。
【課題を解決するための手段】
【０００６】
本発明は、バッチジョブの起動スケジュールを管理する管理ノードと、バッチジョブを実行する複数の実行ノードと、を有するバッチジョブ制御システムであって、前記管理ノードは、複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶手段と、各実行ノードのバッチジョブの実行状態が記憶されたノード情報記憶手段と、前記スケジュール情報記憶手段を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する判別手段と、前記ノード情報記憶手段を参照し、前記バッチジョブを実行させる実行ノードを決定する決定手段と、前記決定手段が決定した実行ノードに、前記バッチジョブの実行指示を送信する送信手段と、前記実行ノードからバッチジョブの実行状態を収集し、前記ノード情報記憶手段を更新する情報管理手段と、を有し、前記実行ノードは、前記管理ノードからの実行指示に基づいて、指示されたバッチジョブを実行する実行手段を有する。
【０００７】
また、本発明は、複数の実行ノードにバッチジョブを実行させる管理ノードであって、複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶手段と、各実行ノードのバッチジョブの実行状態が記憶されたノード情報記憶手段と、前記スケジュール情報記憶手段を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する判別手段と、前記ノード情報記憶手段を参照し、前記バッチジョブを実行させる実行ノードを決定する決定手段と、前記決定手段が決定した実行ノードに、前記バッチジョブの実行指示を送信する送信手段と、前記実行ノードからバッチジョブの実行状態を収集し、前記ノード情報記憶手段を更新する情報管理手段と、を有する。
【０００８】
また、本発明は、バッチジョブの起動スケジュールを管理する管理ノードと、バッチジョブを実行する複数の実行ノードとが行うバッチジョブ制御方法であって、前記管理ノードは、複数のバッチジョブ各々の起動条件が記憶されたスケジュール情報記憶部と、各実行ノードのバッチジョブの実行状態が記憶されたノード情報記憶部と、を有し、前記スケジュール情報記憶部を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する判別ステップと、前記ノード情報記憶部を参照し、前記バッチジョブを実行させる実行ノードを決定する決定ステップと、前記決定ステップで決定した実行ノードに、前記バッチジョブの実行指示を送信する送信ステップと、前記実行ノードからバッチジョブの実行状態を収集し、前記ノード情報記憶部を更新する更新ステップとを行い、前記実行ノードは、前記管理ノードからの実行指示に基づいて、指示されたバッチジョブを実行する実行ステップとを行う。
【発明の効果】
【０００９】
本発明によれば、複数のバッチジョブを複数の実行ノードで実行させる際に、あらかじめ各バッチジョブをどの実行ノードで実行させるかを割り当てることなく、各実行ノードの状況に応じてバッチジョブを実行する実行ノードを動的に決定し、実行ノードをより効率的に使用することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について説明する。
【００１１】
図１は、本発明の実施の形態であるバッチジョブ制御システムの全体構成図である。図示するシステムは、スケジュール管理ノード１と、複数の実行ノード２とを有する。スケジュール管理ノード１は、複数のバッチジョブのスケジュールを管理し、各バッチジョブを実行する実行ノード２を決定する。実行ノード２は、スケジュール管理ノード１の指示により、バッチジョブを実行する。
【００１２】
なお、本実施形態のスケジュール管理ノード１と、各実行ノードとは、ネットワーク９を介して接続されるものとするが、スケジュール管理ノード１と実行ノード２とが１つのコンピュータ内に存在することとしてもよい。また、本実施形態のバッチジョブ制御システムは、例えばバンキングシステムなど、複雑なオンラインシステムのバックエンドで大量のバッチジョブを実行するシステムに適用することが考えられる。
【００１３】
図示するスケジュール管理ノード１は、制御部１１と、ノード決定部１２と、情報管理部１３と、算出部１４と、通信制御部１５と、スケジュール情報テーブル１６と、ジョブ情報テーブル１７と、ノード情報テーブル１８と、履歴情報テーブル１９と、平均実行時間テーブル２０とを有する。
【００１４】
制御部１１（判別手段および送信手段）は、スケジュール情報テーブル１６を参照し、起動条件を満たすバッチジョブが存在するか否かを判別する。また、制御部１１は、ノード決定部１２が決定した実行ノード２に対して、バッチジョブの実行指示を送信する。
【００１５】
ノード決定部１２は、ノード情報テーブル１８等を参照して、バッチジョブを実行させる実行ノード２を動的に決定する。情報管理部１３は、各実行ノード２から情報を収集し、各種テーブルを更新する。算出部１４は、過去に実行したバッチジョブの履歴情報を用いて、実行ノード毎に、各バッチジョブの平均実行時間を算出する。通信制御部１５は、Ｓｏｋｅｔ、共通メモリ、シグナルなどを用いて実行ノード２と通信する。
【００１６】
スケジュール情報テーブル１６には、複数のバッチジョブの起動条件が設定され、ジョブ情報テーブル１７には、各バッチジョブのプログラムおよび入力データに関する情報が設定される。ノード情報テーブル１８には、各実行ノード２と通信するために必要な情報、各実行ノード２の現在の状況などが記憶される。履歴情報テーブル１９には、実行ノード２で実行されたバッチジョブの履歴情報が蓄積される。平均実行時間テーブル２０には、算出部１４が算出した実行ノード毎の各バッチジョブの平均実行時間が設定される。なお、各テーブル１６〜２０の詳細については後述する。
【００１７】
図示する実行ノード２各々は、バッチジョブを実行するジョブ実行部２１と、スケジュール管理ノード１と通信する通信制御部２２とを有する。
【００１８】
上記説明した、スケジュール管理ノード１および実行ノード２は、例えば、少なくともＣＰＵと、メモリと、ＨＤＤ等の外部記憶装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、各ＣＰＵがメモリ上にロードされたスケジュール管理ノード１用または実行ノード２用のプログラムを実行することにより、スケジュール管理ノード１または実行ノード２の各機能が実現される。なお、スケジュール管理ノード１および実行ノード２は、必要に応じて入力装置および出力装置を備えることとしてもよい。
【００１９】
次に、スケジュール管理ノード１の各テーブル１６〜２０について説明する。
【００２０】
図２（ａ）は、スケジュール情報テーブル１６の一例を示すものである。図示するスケジュール情報テーブル１６は、スケジュールＩＤ１６１と、ジョブＩＤ１６２と、起動条件種別１６３と、起動条件１６４と、ステータス１６５とを有する。条件種別１６３には、バッチジョブを起動する条件の種別（例えば、時刻起動、先行ジョブ終了後など）が設定される。起動条件１６４には、条件種別に応じた起動条件が設定される。ステータス１６５には、バッチジョブの実行状態（未実行、実行中、実行済など）が設定される。なお、ステータス１５６は、各実行ノード２から収集した情報により、情報管理部１３が更新するものとする。
【００２１】
図２（ｂ）は、図２（ａ）に示すスケジュール情報テーブル１６のジョブスケジュールを可視化したものである。図示するように、ジョブＡは０時以降に起動することが、ジョブＢおよびジョブＣはジョブＡの終了後に起動し、かつ、ジョブＤの起動条件である４時前に終了することが条件となっている。ジョブＤは、ジョブＢおよびジョブＣの終了後に起動し、かつ、４時に起動することが条件となっている。
【００２２】
図３は、ジョブ情報テーブル１７の一例を示すものである。図示するジョブ情報テーブル１７は、ジョブＩＤ１７１と、プログラムパス１７２と、入力データ情報１７３と、出力データパス１７４と、ステータス１７５とを有する。プログラムパス１７２には、対応するバッチジョブが格納されているパスが設定される。入力データ情報１７３には、対応するバッチジョブで処理される入力データが格納されているファイル・ＤＢの情報（パス）と、入力データ量（件数）が設定される。出力データパス１７４には、対応するバッチジョブの出力先のファイル・ＤＢの情報が設定される。ステータス１７５には、対応するバッチジョブの実行状態（未実行、実行中、実行済など）が設定される。
【００２３】
図４は、ノード情報テーブル１８の一例を示すものである。図示するノード情報テーブル１８は、実行ノードＩＤ１８１と、アドレス１８２と、ポート１８３と、ステータス１８４と、実行ジョブ数１８５とを有する。ステータス１８４には、対応する実行ノード２の現在の状態（未実行、実行中など）が設定される。また、「実行中」のステータスの場合には、実行中のバッチジョブのジョブＩＤおよび実行開始時刻が併せて設定される。実行ジョブ数１８５には、対応する実行ノード２において実行したバッチジョブの件数が設定される。バッチジョブが実行されるたびに実行ジョブ数１８５の値がカウントアップされ、所定の期間（例えば、１日単位）でゼロにリセットされる。
【００２４】
図５は、履歴情報テーブル１９の一例を示すものである。本実施形態の履歴情報テーブル１９は、ジョブ情報テーブル１７に登録されたバッチジョブ（ジョブＩＤ）毎に構成されるものとする。図示する履歴情報テーブル１９は、ジョブ実行日時（日付、ジョブ開始時刻、ジョブ終了時刻）１９１と、入力テータ量（件数）１９２と、実行ノード１９３と、使用リソース１９４（例えばＣＰＵ利用率、メモリ使用量等のリソース使用状況）とを有する。情報管理部１３は、各実行ノード２からバッチジョブの終了メッセージを受信すると、当該メッセージに基づいて図示するようなレコードを生成し、対応するバッチジョブの履歴情報テーブル１９に登録する。
【００２５】
図６は、平均実行時間テーブル２０の一例を示すものである。本実施形態の平均実行時間テーブル２０は、ジョブ情報テーブル１７に登録されたバッチジョブ（ジョブＩＤ）毎に構成されるものとする。図示する平均実行時間テーブル２０は、実行ノードＩＤ２０１と、バッチジョブの平均実行時間２０２とが設定されている。平均実行時間２０２は、対応するバッチジョブ用の履歴情報テーブル１９に蓄積された実行履歴を統計処理することにより、過去の実績から平均実行時間を算出する。算出部１４は、対応するバッチジョブ用の履歴情報テーブル１９が更新されるタイミングで、平均実行時間を再計算し、平均実行時間を更新するものとする。
【００２６】
次に、本実施形態の処理について説明する。
【００２７】
図７は、本実施形態のバッチジョブ制御システムの処理を示すシーケンス図である。
【００２８】
まず、スケジュール管理ノード１の制御部１１は、スケジュール情報テーブル１６を参照し、起動条件を満たすジョブが存在するか否かを判別する（Ｓ１１）。すなわち、条件種別が時刻起動のジョブについては、制御部１１は、ＯＳ（Operating System）などのタイマ機構により現在時刻を取得し、現在時刻と起動条件に設定された起動時刻とを比較し、起動時刻となったジョブが存在するか否かを判別する。また、起動種別が先行ジョブ終了後のジョブについては、制御部１１は、起動条件に設定されたジョブのステータスを参照し、当該ジョブが「実行済」となっているか否かを判別する。
【００２９】
起動するジョブが存在する場合（Ｓ１１：ＹＥＳ）、ノード決定部１２は、ノード情報テーブル１８を参照し、Ｓ１１の起動するジョブを実行させる実行ノード２を決定する（Ｓ１２）。具体的には、ノード決定部１２は、ノード情報テーブルの実行ステータスが「未実行」の実行ノード２を特定する。そして、「未実行」の実行ノード２が複数存在する場合は、以下の方法で実行ノード２を決定することが考えられる。
【００３０】
例えば、「未実行」の実行ノード２の中から、ノード情報テーブル１８の実行ジョブ数が最も少ない実行ノードを決定することが考えられる。これにより、各実行ノード２にかかる負荷を分散させることができる。
【００３１】
また、「未実行」の実行ノード２の中から、当該ジョブの実行時間が最も短くなると推定される実行ノード２を決定することが考えられる。すなわち、ノード決定部１２は、当該ジョブ用の平均実行時間テーブル２０を参照し、「未実行」の実行ノード２の中で、最も小さい平均実行時間が設定された実行ノード２を決定する。これにより、ジョブをより短い時間で実行させることができる。また、「未実行」の実行ノード２の中から、ランダムに実行ノード２を決定することも考えられる。
【００３２】
なお、全ての実行ノード２のステータスが「実行中」の場合、「実行中」のジョブが最も早く終了すると推定される実行ノード２を決定し、実行中のジョブが終了次第、当該ジョブを実行させることとする。具体的には、ノード決定部１２は、実行ノード２毎に、現在実行中のジョブの推定実行時間を算出する。すなわち、ノード情報テーブル１８から実行中のジョブを特定し、当該ジョブ用の平均実行時間テーブル２０から対応する実行ノード２の平均実行時間(Ａｖｅ（Ｔｉｊ）)を取得する。そして、実行中のジョブの入力データ量をジョブ情報テーブル１７から取得する。そして、以下に示すような式により、ノード決定部１２は、推定実行時間を算出する。
【００３３】
（Ｔｉｊ）＝(Ａｖｅ（Ｔｉｊ）×Ｉｎｐｕｔｖａｌ
（Ｔｉｊ）は、ノードｊでジョブｉを実行した場合の推定実行時間である。Ｉｎｐｕｔｖａｌは、ジョブ情報テーブル１７から取得した入力データ量に基づく係数である。
【００３４】
そして、ノード決定部１２は、算出した推定実行時間と、現在時刻と、ノード情報テーブル１８から取得した実行開始時刻とに基づいて、現在実行中のジョブの終了予定時刻を、実行ノード２毎に算出する。そして、ノード決定部１２は、最も早い終了予定時刻の実行ノード２を決定する。
【００３５】
そして、制御部１１は、通信制御部１５を用いて、ノード決定部１２が決定した実行ノード２に、ジョブの起動を指示するジョブ起動メッセージを送信する（Ｓ１３）。ジョブ起動メッセージには、ジョブ情報テーブル１７から取得した、起動対象ジョブのジョブ情報（プログラムパス、入力データパス、出力データパス等）が含まれるものとする。また、ジョブ起動メッセージには、プログラムパスおよび入力データのパスではなく、プログラム自体および入力データ自体を送信することとしてもよい。また制御部１１は、決定した実行ノード２の宛先情報（アドレス、ポート等）をノード情報テーブル１８から取得する。
【００３６】
実行ノード２のジョブ実行部２１は、通信制御部２２を用いてジョブ起動メッセージを受信し、当該ジョブ起動メッセージで指定されたジョブを実行する（Ｓ１４）。なお、ジョブ実行部２１は、ジョブの実行開始時に、通知メッセージをスケジュール管理ノード１に送信する。通知メッセージには、当該実行ノード２の実行ノードＩＤ、ステータス（実行中）、実行開始するジョブのジョブＩＤ、実行開始時刻等が含まれるものとする。
【００３７】
スケジュール管理ノード１の情報管理部１３は、通知メッセージを受信し、当該通知メッセージに基づいてノード情報テーブル１８の対応するノードのステータスを更新する。また、情報管理部１３は、当該通知メッセージに基づいてスケジュール情報テーブル１６およびジョブ情報テーブル１７の対応するジョブＩＤのステータスも更新する。
【００３８】
そして、実行ノード２のジョブ実行部２１は、ジョブの実行後、ジョブ起動メッセージで指定された出力データパスに出力データを出力し、終了メッセージをスケジュール管理ノード１に送信する（Ｓ１５）。終了メッセージには、実行ノードＩＤ、ジョブＩＤ、日付、実行開始時刻、終了時刻、入力データ量、使用リソース情報等の実行内容が含まれるものとする。
【００３９】
スケジュール管理ノード１の情報管理部１３は、終了メッセージを受信すると、各種テーブルを更新する。すなわち、情報管理部１３は、受信した終了メッセージの内容を、対応するジョブ用の履歴情報テーブル１９に登録する。また、情報管理部１３は、スケジュール情報テーブル１６およびジョブ情報テーブル１７の対象ジョブのステータスを「実行済」に更新する。また、情報管理部１３は、ノード情報テーブル１８の対象実行ノードのステータスを「未実行」に更新する。
【００４０】
そして、算出部１４は、対象実行ノードの平均実行時間を算出し、平均実行時間テーブル２０を更新する（Ｓ１７）。具体的には、算出部１４は、対応するジョブ用の履歴情報テーブル１９から、当該実行ノードのレコードを全て抽出し、抽出したレコードの平均処理時間を算出する。すなわち、算出部１４は、抽出したレコード毎に、終了時刻から開始時刻を減算して実行時間を算出する。さらに、実行時間は入力データ量に比例するため、算出部１４は、抽出したレコード毎に、算出した実行時間を入力データ量に基づいて補正し、所定のデータ量当たりの実行時間を算出する。そして、算出部１４は、所定のデータ量当たりの平均実行時間を算出する。そして、算出部１４は、対応するジョブ用の平均実行時間テーブル２０の当該実行ノードの平均実行時間を、算出した平均実行時間で更新する。
【００４１】
以上説明した本実施形態のバッチジョブ制御システムでは、複数のバッチジョブを複数の実行ノードで実行させる際に、あらかじめ各バッチジョブをどの実行ノードで実行させるかを割り当てることなく、各実行ノードの状況に応じてバッチジョブを実行する実行ノードを動的に決定し、実行ノードをより効率的に使用することができる。すなわち、バッチジョブの起動条件が満たされたタイミングで、各実行ノードの状態を考慮して、当該バッチジョブを実行する実行ノードを効率よく柔軟に決定することができる。
【００４２】
また、本実施形態では、上記のように各バッチジョブと当該バッチジョブを実行する実行ノードとをあらかじめ対応付けてスケジューリングする必要がないため、スケジュールを作成する負荷を軽減することができる。
【００４３】
また、本実施形態では、ジョブの実行開始時および実行終了時に各実行ノードからメッセージを受信し、ノード情報テーブル等を更新する。これにより、各テーブルを常に最新状態に保つことができ、より最適な実行ノードを選択することができる。
【００４４】
また、本実施形態では、実行ノードを決定する際に、実行ジョブ数が最も少ない実行ノード、または、実行時間が最も短くなると推定される実行ノードを決定する。これにより、各実行ノードにかかる負荷を分散させ、または、バッチジョブをより短い時間で実行させることができる。また、本実施形態では、全ての実行ノードが実行中の場合、実行ノード毎の平均実行時間に基づいて実行中のバッチジョブが最も早く終了する実行ノードを推定し、当該実行ノードを決定する。これにより、各実行ノードの実行状況を考慮して、バッチジョブをより早く起動させることができる。
【００４５】
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態に係るバッチジョブ制御システムの全体構成図である。
【図２】スケジュール情報テーブルの一例を示すものである。
【図３】ジョブ情報テーブルの一例を示すものである。
【図４】ノード情報テーブルの一例を示すものである。
【図５】履歴情報テーブルの一例を示すものである。
【図６】平均実行時間テーブルの一例を示すものである。
【図７】バッチジョブ制御システムのフローチャートである。
【符号の説明】
【００４７】
１    スケジュール管理ノード
１１  制御部
１２  ノード決定部
１３  情報管理部
１４  算出部
１５  通信制御部
１６  スケジュール情報テーブル
１７  ジョブ情報テーブル
１８  ノード情報テーブル
１９  履歴情報テーブル
２０  平均実行時間テーブル
２    実行ノード
２１  ジョブ実行部
２１  通信制御部
【図１】
2009230581.tif 000003
【図２】
2009230581.tif 000004
【図３】
2009230581.tif 000005
【図４】
2009230581.tif 000006
【図５】
2009230581.tif 000007
【図６】
2009230581.tif 000008
【図７】
2009230581.tif 000009