(57)【特許請求の範囲】
【請求項１】
ジョブの実行順番を示すバッチジョブ情報に基づき前記ジョブの実行を制御するジョブ実行制御部と、前記ジョブの実行用に予め設定された実行用リソースの動作を監視すると共に前記実行用リソースの使用状況を示すリソース使用状況情報を生成するリソース監視部とを備えたジョブ実行管理システムであって、
前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出する先行実行ジョブ抽出手段と、
前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定する先行実行順序設定手段と、
前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定する遊休リソース特定手段と、
前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行う投機実行制御手段とを備えたことを特徴とするジョブ実行管理システム。
【請求項２】
請求項１に記載のジョブ実行管理システムにおいて、
前記ジョブ実行制御部による前記ジョブの実行進捗状態に基づき前記先行実行ジョブが投機実行可能な実行タイミングを示す先行実行条件を設定する先行実行条件設定手段と、
前記先行実行条件に基づき前記先行実行順序に設定された前記先行実行ジョブの投機実行順序を更新設定する先行実行順序更新手段とを備えたことを特徴とするジョブ実行管理システム。
【請求項３】
請求項２に記載のジョブ実行管理システムにおいて、
先行実行順序更新手段が、前記リソース使用状況情報に基づいて設定された前記先行実行ジョブの投機実行順序を更新設定するリソース実行順序更新機能を備えたことを特徴とするジョブ実行管理システム。
【請求項４】
請求項１に記載のジョブ実行管理システムにおいて、
前記投機実行制御手段は、前記先行実行ジョブの投機実行回数をカウントすると共に、当該投機実行回数が予め設定された上限実行回数に達した場合に、前記先行実行ジョブの投機実行を抑制する実行回数抑制手段を備えたことを特徴とするジョブ実行管理システム。
【請求項５】
請求項１に記載のジョブ実行管理システムにおいて、
前記ジョブ実行制御部による前記ジョブの実行進捗状態に基づき前記投機実行制御手段による前記先行実行ジョブの投機実行をキャンセルする先行実行キャンセル手段を備え、
前記投機実行制御手段は、先行実行キャンセル手段にアクセスを行い、前記先行実行ジョブのキャンセルがないことが確認された場合に、前記先行実行ジョブの投機実行を行うキャンセル確認機能を備えたことを特徴とするジョブ実行管理システム。
【請求項６】
ジョブの実行順番を示すバッチジョブ情報に基づき前記ジョブの実行を制御するジョブ実行制御部と、前記ジョブの実行用に予め設定された実行用リソースの動作を監視すると共に前記実行用リソースの使用状況を示すリソース使用状況情報を生成するリソース監視部とを備えたジョブ実行管理システムにあって、前記ジョブの実行を行うジョブ実行管理方法であって、
前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出し、前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定し、前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定し、前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行うことを特徴としたジョブ実行管理方法。
【請求項７】
ジョブの実行順番を示すバッチジョブ情報に基づき前記ジョブの実行を制御するジョブ実行制御部と、前記ジョブの実行用に予め設定された実行用リソースの動作を監視すると共に前記実行用リソースの使用状況を示すリソース使用状況情報を生成するリソース監視部とを備えたジョブ実行管理システムにあって、前記ジョブの実行を行うためのジョブ実行管理プログラムであって、
前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出する先行実行ジョブ抽出機能と、
前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定する先行実行順序設定機能と、
前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定する遊休リソース特定機能と、
前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行う投機実行制御機能とを予め設定されたコンピュータに実行させることを特徴としたジョブ実行管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータなどのジョブ実行環境におけるジョブの実行を迅速化するジョブ実行管理システムに関する。
【背景技術】
【０００２】
コンピュータシステムで実行処理される複数の異なるジョブの処理順序（実行順序）が記述されたバッチジョブファイルに基づいてジョブの実行順序を制御するバッチジョブでは、一般に、バッチジョブファイル内で予め設定された実行順がきたときに、対応するジョブの実行が行われる。
【０００３】
また、このコンピュータシステムにおいては、ジョブの実行処理に利用されるＣＰＵ（中央演算装置）の処理速度が高速化し、メモリ、ＨＤＤ（ハードディスクドライブ）などの記憶装置に対する迅速なアクセスが可能となり、更には、通信速度が向上したことにより、プリンタなどを含むコンピュータシステムのリソースで処理速度が向上している。
このため、ジョブ実行処理時に処理待機状態やアイドル状態となってしまうリソース（以下「遊休リソース」という）が生じてしまい、これら遊休リソースを有効に利用することができないという不都合が生じてきている。
【０００４】
上記バッチジョブの処理迅速化にかかる関連技術として、異なる複数のジョブスケジューリングシステムで管理されているジョブ同士に実行順序の関連を持たせて実行し、これを統一された操作で一元管理すると共に、同一のジョブスケジューリングシステムで管理される異なるジョブグループ間のジョブネット同士に関連を持たせて実行するジョブの連携運用管理システムが開示されている（特許文献１）。
【０００５】
また、上記リソースの使用状況や他のバッチジョブの実行状況に基づいて遊休リソースを有効活用することに対する関連技術として、並列実行される異なる複数のジョブネットに対して、各ジョブネットに関するスクリプトデータの入力を受付け、ジョブネットの実行に利用される資源ノードの割当てを行うことにより、ジョブネットごとの資源ブローカリングを行う並列実行装置が開示されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１５７１３４号公報
【特許文献２】特開２００８−２２６１８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に開示された関連技術では、予め設定されたバッチジョブに基づく順番でしかジョブの実行を行うことができないため、予め設定されたリソース（遊休リソース）を効率的に利用することができないという不都合があった。
【０００８】
また、上記特許文献２に開示された関連技術では、ジョブネットの実行を行うリソースの使用状況に基づき、ジョブネットごとにリソース（資源ノード）を割当てているが、割当てを行うのに先立ちジョブネットの実行スケジューリングを設定することができず、このため、実際にリソースによる実行が行われるまで、ジョブネットの実行に対して、そのリソースで足りるか否かがわからないという不都合がある。
【０００９】
［発明の目的］
本発明は、上記関連技術の有する不都合を改善し、コンピュータシステムにおけるバッチジョブを迅速に処理し得るジョブ実行管理システム、ジョブ実行管理方法、ジョブ実行管理プログラムを提供することを、その目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係るジョブ実行管理システムは、ジョブの実行順番を示すバッチジョブ情報に基づき前記ジョブの実行を制御するジョブ実行制御部と、前記ジョブの実行用に予め設定された実行用リソースの動作を監視すると共に前記実行用リソースの使用状況を示すリソース使用状況情報を生成するリソース監視部とを備えたジョブ実行管理システムであって、前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出する先行実行ジョブ抽出手段と、前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定する先行実行順序設定手段と、前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定する遊休リソース特定手段と、前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行う投機実行制御手段とを備えた構成をとっている。
【００１１】
また、本発明にかかるジョブ実行管理方法は、ジョブの実行順番を示すバッチジョブ情報に基づき前記ジョブの実行を制御するジョブ実行制御部と、前記ジョブの実行に利用される実行用リソースの動作を監視すると共に前記実行用リソースの使用状況を示すリソース使用状況情報を生成するリソース監視部とを備えたジョブ実行管理システムにあって、前記ジョブの実行を行うジョブ実行管理方法であって、前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出し、前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定し、前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定し、前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行うことを特徴としている。
【００１２】
又、本発明にかかるジョブ実行管理プログラムは、ジョブの実行順番を示すバッチジョブ情報に基づき前記ジョブの実行を制御するジョブ実行制御部と、前記ジョブの実行に利用される実行用リソースを監視すると共に前記実行用リソースの使用状況を示すリソース使用状況情報を生成するリソース監視部とを備えたジョブ実行管理システムにあって、前記ジョブの実行を行うためのジョブ実行管理プログラムであって、前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出する先行実行ジョブ抽出機能と、前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定する先行実行順序設定機能と、前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定する遊休リソース特定機能と、前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行う投機実行制御機能とを予め設定されたコンピュータに実行させることを特徴としている。
【発明の効果】
【００１３】
本発明は、以上のように構成され機能するので、これによると、バッチジョブ情報に基づき実行順番に依らず実行可能な先行実行ジョブを抽出する手段と、抽出された各先行実行ジョブの実行タイミングが予め前記バッチジョブ情報で設定された実行タイミングより早く設定された先行実行順序を決定する手段とを備えた構成としたことにより、実行待機状態にある遊休リソースを利用した実行を行い、コンピュータシステムにおける遊休リソースを利用してバッチジョブを迅速に処理することを可能としたジョブ実行管理システム、ジョブ実行管理方法、ジョブ実行管理プログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明によるジョブ実行管理システムにおける一実施形態を示す概略ブロック図である。
【図２】図１に開示したジョブ実行管理システムにおける実行順序予測手段の動作処理ステップを示すフローチャートである。
【図３】図１に開示したジョブ実行管理システムにおける実行順序補正手段の動作処理ステップを示すフローチャートである。
【図４】図１に開示したジョブ実行管理システムにおける実行手段の動作処理ステップを示すフローチャートである。
【図５】図１に開示したジョブ実行管理システムにおけるバッチジョブ定義の一例を示す説明図である。
【図６】図１に開示したジョブ実行管理システムにおけるジョブフローの一例を示す説明図である。
【図７】図１に開示したジョブ実行管理システムにおけるジョブ定義の一例を示す説明図である。
【図８】図１に開示したジョブ実行管理システムにおける投機実行条件の一例を示す説明図である。
【図９】図１に開示したジョブ実行管理システムにおける予測情報テーブルの一例を示す説明図である。
【図１０】図１に開示したジョブ実行管理システムにおける実行順序テーブルの一例を示す説明図である。
【図１１】本発明によるジョブ実行管理システムにおける一実施形態を示す概略ブロック図である。
【発明を実施するための形態】
【００１５】
［実施形態］
次に、本発明の実施形態について、その基本的構成内容を説明する。
【００１６】
本実施形態であるジョブ実行管理システムは、図１に示すように、業務の基幹システムとして運用されるジョブの実行に利用される、コンピュータリソース（以下「リソース」という）の監視を行うリソース管理部１１と、予め設定されたバッチジョブの通常の実行を制御する正規実行部１３と、リソース管理部１１により通知されたリソースの利用状況を示す情報と正規実行部１３から取得したバッチジョブの実行進捗を示す情報とに基づいて、先行実行可能なジョブの投機実行を行う投機実行部１２を備えた構成を有するコンピュータシステムである。
これにより、本実施形態では、ジョブの中で先行実行できる部分があれば、遊休リソースを利用して、投機的に先行実行を行う。
【００１７】
また、投機実行部１２は、正規実行部１３のバッチジョブ定義格納部１３１からバッチジョブ定義情報を取得し、このバッチジョブ定義情報に基づきジョブ実行順序を予測決定する実行順序予測手段１２１と、リソース管理部１１で生成されたリソースの使用状況を示すリソース使用状況情報と、正規実行部１３のバッチジョブ実行部１３２におけるジョブ実行進捗状況を示す情報（実行状況情報）とに基づいて投機実行順序を補正する実行順序補正手段１２２と、実行順序補正手段１２２により更新（補正）された投機実行順序に基づき先行実行可能なジョブの実行を行う投機実行手段１２３を有している。
【００１８】
また、投機実行部１２は、実行順序予測手段１２１および実行順序補正手段１２２に接続して設けられ、実行順序を示す予測情報テーブルを記憶する予測情報テーブル記憶部１２４と、実行順序補正手段１２２および投機実行手段１２３に接続して設けられ、投機実行の順序を示す実行順序テーブルを記憶する実行順序テーブル記憶部１２５を備えている。
【００１９】
正規実行部１３は、バッチジョブの定義が格納されているバッチジョブ定義格納部１３１とバッチジョブを実行するバッチジョブ実行部１３２と、バッチジョブの実行結果が格納される実行結果テーブル記憶部１３３を備えている。
【００２０】
次に、投機実行部１２の内部構成要素である、実行順序予測手段１２１、実行順序補正手段１２２、投機実行手段１２３、それぞれについて詳説する。
実行順序予測手段１２１は、バッチジョブ定義格納部１３１を検索すると共に、予め設定されたバッチジョブ定義情報を選択し、そのバッチジョブ定義情報をバッチジョブ定義格納部１３１から読み込む。
【００２１】
ここで、図５にバッチジョブ定義情報の一例を示す。
ここで、バッチジョブ定義情報には、バッチジョブ名、実行開始時刻、投機実行開始時刻、バッチフローが定義されているものとする。
【００２２】
ここで、バッチジョブ定義情報に含まれ設定されたジョブフローの一例を図６に示す。
このジョブフローは、図６では、ジョブの実行順序を示したフローであって、ジョブ（ＪＯＢ  Ａ〜Ｇ）、並列分岐(図６の中ではｐと表記)、条件分岐(図６の中ではｃと表記)を含み構成されている。
【００２３】
実行順序予測手段１２１は、取得したバッチジョブ定義情報のジョブフローを、木構造に変換し、幅優先探索によりジョブフローを直列化する（直列化機能）。
ここで、上記直列化により生成された、ジョブの実行順序を示す情報を直列化情報という。本実施形態では、この直列化情報を投機実行における予測順序情報とする。
【００２４】
尚、本実施形態では、直列化処理の例として、バッチジョブ定義情報を木構造に変換後、幅優先探索によりジョブフローを直列化しているが、直列化自体のアルゴリズムは、他のアルゴリズムを用いて直列化を行う設定としてもよい。
【００２５】
実行順序予測手段１２１は、上記直列化情報を、バッチ時刻の投機実行開始時刻順に序列した予測情報テーブルとして予測情報テーブル記憶部１２４に格納する。
【００２６】
ここで、図９に予測情報テーブルの一例を示す。
この予測情報テーブルでは、図９に示すように、バッチジョブＡ（バッチジョブ定義情報に対応）の直列化情報としてジョブＡ、ジョブＣ、ジョブＤという直列化された実行順序が設定されている。
また、図９に示すように、バッチジョブＣの直列化情報としてジョブＡ、ジョブＤ、ジョブＧ、ジョブＣという実行順序が直列化情報として設定され、更に、バッチジョブＤの直列化情報としては、ジョブＤ、ジョブＡ、ジョブＧ、ジョブＣという実行順序が設定されている。
【００２７】
実行順序補正手段１２２は、実行順序予測手段１２１により設定された予測情報テーブルからバッチジョブ名および直列化情報を取得し、直列化情報内に設定されたジョブを順次選択する（対象ジョブ選択機能）。
また、実行順序補正手段１２２は、対象ジョブのジョブ定義情報にコンテキスト非依存部分が含まれている場合に、バッチジョブ実行部１３２対してアクセスを行い、予め設定された投機実行条件の内容を調べる投機実行条件参照機能を備えている。
【００２８】
ここで、投機実行条件は、例えば図８に示すように、バッチジョブ実行部１３２によって、依存性条件とリソース条件を含む形式で、バッチジョブ実行部１３２内に設定されるものとする。
【００２９】
依存性条件の内容は、バッチジョブの通常実行の進捗状況（ジョブ実行進捗状況）に応じて更新設定され、投機実行がバッチジョブ実行部１３２で行われるバッチジョブ通常実行に対して影響を及ぼすタイミングなどを示す。
例えば、「バッチジョブＤのジョブＢの実行完了後」は、バッチジョブ実行部１３２でバッチジョブＤのジョブＢの実行（通常実行）が完了するまでは、バッチジョブＤのジョブの投機実行を行うと通常実行に影響が及ぶことを示す。
これにより、実行順序補正手段１２２は、バッチジョブ実行部１３２における通常実行に影響が出ないように、投機実行を行うべき適切なタイミングや投機実行順序を設定することができる。
【００３０】
実行順序補正手段１２２は、依存性条件に基づき、対象ジョブの投機実行が通常実行に影響を及ぼすか否かの判定を行い、対象ジョブの投機実行が通常実行に対して許容されるか否かの判定を行う（投機通常実行比較判定機能）。
また、実行順序補正手段１２２は、対象ジョブの投機実行が通常実行に対して許容される場合に、リソース条件に基づきリソース管理部１１からリソース情報を取得する（リソース情報取得機能）
ここでは、実行順序補正手段１２２は、リソース（遊休リソース）の利用率や占有率などを示すリソース情報を取得する。
実行順序補正手段１２２は、このリソース情報に基づき、このリソースの利用状態がリソース条件を満たしているか否か判定する（リソース条件判定機能）。
【００３１】
実行順序補正手段１２２は、投機実行条件に含まれる依存性条件およびリソース条件の全てを満たしている場合に、対象ジョブ（非依存部分）を実行順序テーブル（図１０）に登録する実行順序テーブル設定機能を有する。このとき、実行順序補正手段１２２は、予測順序テーブルの直列化情報から対象ジョブを削除し登録を解除する。
【００３２】
これにより、実行順序補正手段１２２は、投機実行条件を満たすタイミング、および順序でジョブ（先行実行可能ジョブ）が序列された、投機実行の実行順序テーブルを設定することができる。
【００３３】
この実行順序テーブルには、図１０に示すように、投機実行される順番にジョブ（対象ジョブ）が登録されていくものとする。また、各ジョブの所属するバッチジョブ名が各ジョブに対応して示されるものとする。
【００３４】
尚、実行順序補正手段１２２は、定期的に投機実行条件に基づく判定を実行し、実行順序テーブルの登録内容の更新を行う設定としてもよい。
【００３５】
これにより、実行順序補正手段１２２は、遊休状態にあるリソースを利用して、通常実行に影響を与えないタイミングで投機実行を行うための投機実行スケジュール（投機実行タイミング）を示す、実行順序テーブルを更新設定することができる。
【００３６】
尚、実行結果テーブルは、実行結果を格納するためのもので、正規実行部１３の実行結果テーブル記憶部１３３内に設定されているものとする。
【００３７】
投機実行手段１２３は、当該投機実行手段１２３が投機実行を行った回数（投機実行数）をカウントする投機実行回数カウント機能と、カウントした投機実行数を記憶保持する投機実行数記憶機能を備えている。
また、投機実行手段１２３は、投機実行数が予め設定された最大投機実行数を超えているか否かの判定を行う投機実行数比較判定機能を有する。
【００３８】
ここで、投機実行処理数が最大投機実行数以下である場合に、投機実行手段１２３は、実行順序テーブル記憶部１２５に記憶された実行順序テーブルからジョブ（「対象ジョブ」という）を取得すると共に、実行順序テーブルに基づき各ジョブのコンテキスト非依存部分の投機実行を順次行う（投機実行機能）。この際、投機実行手段１２３は、投機実行数の設定値に１加算（カウントアップ）するものとする。
【００３９】
更に、投機実行手段１２３は、投機実行機能の実行に先立ち、バッチジョブ実行部１３２に実行状況（実行進捗状況）に基づき、ジョブフローにおける分岐または正規実行内容に基づいて、投機実行がキャンセルされていないかを確認する投機実行キャンセル確認機能を備えている。
【００４０】
ここで、バッチジョブ実行部１３２における通常実行内で投機実行処理がキャンセルされていた場合は、投機実行を行わない。
【００４１】
投機実行手段１２３は、バッチジョブ実行部１３２に対して、対象ジョブの投機実行を開始したことを示す投機実行開始情報を通知する投機実行開始通知機能と、実行順序テーブル記憶部１２５から投機実行を行ったジョブエントリを削除する実行ジョブエントリ削除機能を有する。
【００４２】
更に、投機実行手段１２３は、投機実行処理が完了した対象ジョブがある場合、バッチジョブ実行部１３２に対して投機実行が完了したことを示す投機実行完了情報を通知する投機実行完了情報通知機能を備えている。
ここで、異なる複数のジョブ（対象ジョブ）の投機実行が完了している場合は、投機実行手段１２３は、各対象ジョブに対応した投機実行完了情報を、バッチジョブ実行部１３２に通知するものとする。
【００４３】
また、投機実行手段１２３は、対象ジョブの投機実行結果を実行結果テーブル記憶部１３３に格納すると共に、投機実行数（実行可能数）を投機実行が完了した数だけ下げる投機実行数減数設定機能を有する。
【００４４】
以上のような構成とすることにより、本実施形態では、ジョブの中で先行実行できる部分（コンテキスト非依存部分）があれば、遊休リソースを利用して投機的に先行実行する。これにより、バッチジョブ全体の実行を迅速化し、さらには、システムのリソース使用のピークを分散させることができるので、システム全体の処理キャパシティを向上させることができる。
【００４５】
尚、本実施形態の変形例として、図１１に示すように、上記実施形態における投機実行部１２を構成する実行順序予測手段１２１、実行順序補正手段１２２、および予測情報テーブル記憶部１２４と、正規実行部１３を含むジョブ実行制御装置２と、実行順序補正手段１２２に対して通信ネットワークを介して接続された投機実行手段３３１および実行順序テーブル記憶部３３２を備え、ジョブ実行制御装置２とは異なるプログラムに基づく実行処理が行われるコンピュータ装置であるジョブ実行制御装置３と、実行順序補正手段１２２に対してリソース情報の提供を行うリソース管理部１１を備えた構成としてもよい。
尚、上記実施形態と同一の部分は同一の符号を付するものとする。
【００４６】
ここで、ジョブ実行制御装置３内に設定された投機実行手段３３１と実行順序テーブル記憶部３３２は、投機実行手段１２３と実行順序テーブル記憶部１２５に対応する構成である。
【００４７】
この場合、ジョブ実行制御装置３内に設けられた投機実行手段３３１は、実行順序補正手段１２２、バッチジョブ実行部１３２、および実行結果テーブル記憶部１３３に対してネットワーク通信回線を介して接続され、実行順序テーブル記憶部３３２は、実行順序補正手段１２２に対してネットワーク通信回線を介して接続された構成とする。
【００４８】
また、実行順序テーブル記憶部３３２は、ネットワーク通信回線を介して、実行順序補正手段１２２および投機実行手段３３１により共有され、実行結果テーブル記憶部１３３もバッチジョブ実行部１３２および投機実行手段３３１により共有された構成となる。
【００４９】
この様に構成することにより、投機実行手段３３１と正規実行部１３のバッチジョブ実行部１３２とが、それぞれ異なるプログラム（ＯＳなど）により制御されるコンピュータ（ジョブ実行制御装置２および３）上に設置されることにより、正規実行部１３での動作や処理負荷による影響を抑制した状態で、投機実行部１２における投機実行が可能となる。
また、リソース管理部１１を、ジョブ実行制御装置２および３とは異なるコンピュータ（外部コンピュータ）内に設けたことにより、リソース管理部１１、ジョブ実行制御装置２および３を含むネットワーク全体のリソースを考慮して、投機実行の制御を行うことが可能になる。
【００５０】
［実施形態の動作説明］
次に、本実施形態の動作について、その概略を説明する。
まず、実行順序予測手段１２１が、前記バッチジョブ情報内に予め設定されたジョブ定義情報に基づき前記実行順番に依らず投機実行可能な先行実行ジョブを抽出し（先行実行ジョブ抽出行程）、実行順序補正手段１２２が、前記抽出された各先行実行ジョブの実行タイミングが前記バッチジョブ情報に予め設定された実行タイミングより早い実行タイミングを先行実行順序として設定し（先行実行順序設定行程）、前記実行用リソースのうちの実行待機状態にある遊休リソースを前記リソース使用状況情報に基づき特定し（遊休リソース特定手段）、次いで、投機実行手段１２３が、前記先行実行順序に基づき前記遊休リソースを利用して前記先行実行ジョブの投機実行を行う（投機実行制御手段）。
【００５１】
ここで、上記先行実行ジョブ抽出行程、先行実行順序設定行程、遊休リソース特定行程、および投機実行制御行程については、その実行内容をプログラム化し、コンピュータに実行させるように構成してもよい。
【００５２】
次に、ジョブ実行制御システム１における実行順序予測手段１２１の動作について、図２のフローチャートに基づいて説明する。
【００５３】
まず、実行順序予測手段１２１は、バッチジョブ定義格納部１３１を検索すると共に、予め設定されたバッチジョブ定義情報を選択し（ステップＳ１０１）、そのバッチジョブ定義情報をバッチジョブ定義格納部１３１から読み込む（ステップＳ１０２）。
【００５４】
ここで、図５にバッチジョブ定義情報の一例を示す。
ここで、バッチジョブ定義情報には、バッチジョブ名、実行開始時刻、投機実行開始時刻、バッチフローが定義されているものとする。
【００５５】
次に、実行順序予測手段１２１は、取得したバッチジョブ定義情報のジョブフローを、木構造に変換し、幅優先探索によりジョブフローを直列化する（ステップＳ１０３：直列化処理）。ここで、上記直列化により生成された、ジョブの実行順序を示す情報を直列化情報という。本実施形態では、この直列化情報を投機実行における予測順序情報とする。
【００５６】
これにより、実行順序予測手段１２１は、コンテキスト非依存部分を先行して投機実行できるように予測順序情報を設定することができる。
また、実行順序予測手段１２１が、実行される順番を一定の割合で予測して、投機実行順番を設定することにより、例えば、全てのバッチジョブのコンテキスト非依存部分を一度に実行しようとした場合にシステム内のリソースを使い切ってしまうといった状態が生じるのを抑制することができる。
【００５７】
尚、本実施形態では、直列化処理の例として、バッチジョブ定義情報を木構造に変換後、幅優先探索によりジョブフローを直列化しているが、直列化自体のアルゴリズムは、他のアルゴリズムを用いて直列化を行う設定としてもよい。
【００５８】
次いで、実行順序予測手段１２１は、上記直列化情報を、バッチ時刻の投機実行開始時刻順に序列した予測情報テーブルとして予測情報テーブル記憶部１２４に格納する（ステップＳ１０４）。
【００５９】
ここで、図９に予測情報テーブルの一例を示す。
この予測情報テーブルでは、図９に示すように、バッチジョブＡ（バッチジョブ定義情報に対応）の直列化情報としてジョブＡ、ジョブＣ、ジョブＤという直列化された実行順序が設定されている。
また、図９に示すように、バッチジョブＣの直列化情報としてジョブＡ、ジョブＤ、ジョブＧ、ジョブＣという実行順序が直列化情報として設定され、更に、バッチジョブＤの直列化情報としては、ジョブＤ、ジョブＡ、ジョブＧ、ジョブＣという実行順序が設定されている。
【００６０】
次に、ジョブ実行制御システム１における実行順序補正手段（実行順序更新手段）１２２の動作について、図３のフローチャートに基づき説明する。
【００６１】
まず、実行順序補正手段１２２は、上記設定された予測情報テーブルからバッチジョブ名および直列化情報を取得し（ステップＳ２０１）、直列化情報内に設定されたジョブ（例えば、ジョブＡ）を先頭側から順次選択する（ステップＳ２０２）。以下、選択されたジョブを対象ジョブという。
次に、実行順序補正手段１２２は、選択した対象ジョブのジョブ定義情報がコンテキスト非依存部分を含むか否かの判定を行い（ステップＳ２０３：ジョブがコンテキスト非依存部分を持っている？）、対象ジョブのジョブ定義情報にコンテキスト非依存部分が含まれていなければ（ＮＯ：ステップＳ２０３）、直列化情報内における次のジョブを順次選択する（ステップＳ２０２に戻る）。
【００６２】
ここで、対象ジョブのジョブ定義情報にコンテキスト非依存部分が含まれている場合（ＹＥＳ：ステップＳ２０３）、実行順序補正手段１２２は、バッチジョブ実行部１３２内に設定された投機実行条件の内容を調べる（ステップＳ２０４）。
【００６３】
ここで、投機実行条件は、例えば図８に示すように、バッチジョブ実行部１３２によって、依存性条件とリソース条件を含む形式で、バッチジョブ実行部１３２内に設定されるものとする。
【００６４】
依存性条件の内容は、バッチジョブの通常実行の進捗状況（ジョブ実行進捗状況）に応じて更新設定され、投機実行がバッチジョブ実行部１３２で行われるバッチジョブ通常実行に対して影響を及ぼすタイミングなどを示す。
例えば、「バッチジョブＤのジョブＢの実行完了後」は、バッチジョブ実行部１３２でバッチジョブＤのジョブＢの実行（通常実行）が完了するまでは、バッチジョブＤのジョブの投機実行を行うと通常実行に影響が及ぶことを示す。
これにより、実行順序補正手段１２２は、バッチジョブ実行部１３２における通常実行に影響が出ないように、投機実行を行うべき適切なタイミングや投機実行順序を設定することができる。
【００６５】
ここで、実行順序補正手段１２２は、依存性条件の内容を満たしており、投機実行が行われてもよいタイミングである、つまり通常実行に影響を及ぼさない場合に（ＹＥＳ：ステップＳ２０５）、実行順序補正手段１２２は、投機実行条件のリソース条件の内容を確認する（ステップＳ２０６）。
【００６６】
ここで、実行順序補正手段１２２は、リソース条件の内容（例えば、リソースＡの占有率５０％：図８）に基づきリソース管理部１１からリソース情報を取得する（ステップＳ２０６）。例えば、ここでは、実行順序補正手段１２２は、リソース管理部１１からリソースＡの占有率を示すリソース情報を取得する。
【００６７】
また、実行順序補正手段１２２は、このリソース情報に基づき、このリソース（遊休リソースに対応：リソースＡ）の利用状態がリソース条件を満たしているか否か判定する（ステップＳ２０７：リソース条件判定機能）。例えば、リソースＡの占有率が５０％未満であるか否かの判定を行う。
【００６８】
次に、実行順序補正手段１２２は、投機実行条件に含まれる依存性条件およびリソース条件の全てを満たされている場合（Ｙｅｓ：ステップＳ２０７：リソース条件を満たしている？）、対象ジョブ（非依存部分）を実行順序テーブル（図１０）に登録する（ステップＳ２０８）。
【００６９】
ここで、リソース条件を満たしていない場合（例えば、リソースＡの占有率が６０％である場合など：図８）、このジョブの投機実行は行われないので、このジョブを実行順序テーブルには登録せず、直列化情報内のジョブ全てについて、リソース条件判定処理を完了したか否かの判定を行う（ステップＳ２０９へ移行）。
【００７０】
一方、リソース条件を満たしていた場合、実行順序補正手段１２２は、このジョブを予測順序テーブルの直列化情報から登録を解除すると共に、このジョブを実行順序テーブルに登録する（ステップＳ２０８：実行順序テーブルに登録）。
【００７１】
ここで、実行順序テーブルには、図１０に示すように、投機実行される順番にジョブ（対象ジョブ）が登録されていくものとする。また、各ジョブの所属するバッチジョブ名が各ジョブに対応して示されるものとする。
【００７２】
尚、実行順序補正手段１２２は、定期的に投機実行条件に基づく判定（ステップＳ２０４〜２０７）を実行し、実行順序テーブルの登録内容の更新を行う設定としてもよい。
【００７３】
これにより、実行順序補正手段１２２は、遊休状態にあるリソースを利用して、通常実行に影響を与えないタイミングで投機実行を行うための投機実行スケジュール（投機実行タイミング）を示す、実行順序テーブルを更新設定することができる。
【００７４】
また、本実施形態では、投機実行条件のリソース条件に基づいて、ジョブ実行制御システム１における遊休リソースを利用したジョブ（先行実行可能ジョブ）の実行を行う設定としたことにより、例えば、コンテキスト非依存部分の実行のために遊休リソースを使い切ってしまうといったことを回避することができる。
【００７５】
次に、実行順序補正手段１２２は、ジョブフロー内のジョブが全て処理されたか否かの判定を行い、全てのジョブの処理が完了されていなければ（ＮＯ：ステップＳ２０９）、直列化情報のジョブを順次選択する（ステップＳ２０２へ）。
また、ジョブフロー内の全てのジョブの処理が完了している場合、実行順序補正手段１２２は、直列化情報内にジョブが残っていない場合に、予測情報テーブル記憶部１２４に格納された予測情報テーブルからバッチジョブ定義情報の登録解除を行い（ステップＳ２１０）、次に、ステップＳ２０１に戻る。
【００７６】
次に、ジョブ実行制御システム１における投機実行手段１２３（３３１）の動作について、図４のフローチャートに基づき説明する。
【００７７】
まず、投機実行手段１２３は、投機実行を行った回数を示す投機実行数をチェックし（ステップＳ３０１）、この投機実行数が予め設定された最大投機実行数を超えているか否かの比較判定を行う（ステップＳ３０２）。
ここで、投機実行処理数が予め設定された最大投機実行数を超えている場合は、再び上記チェック及び比較判定を行う（ステップＳ３０１に戻る）。
【００７８】
ここで、投機実行処理数が最大投機実行数を超えていない場合、（最大投機実行数以下である場合に）、投機実行手段１２３は、実行順序テーブル記憶部１２５（３３２）に記憶された実行順序テーブルからジョブ（「対象ジョブ」という）を取得する（ステップＳ３０３）。
【００７９】
次に、投機実行手段１２３は、バッチジョブ実行部１３２の実行状況（実行進捗状況）に基づき、ジョブフローにおける分岐または正規実行内容に基づいて、投機実行がキャンセルされていないかを確認する（ステップＳ３０４）。
【００８０】
ここで、バッチジョブ実行部１３２における通常実行内で投機実行処理がキャンセルされていた場合（ＮＯ：ステップＳ３０５）はステップＳ３０３に戻る。
また、投機実行処理がキャンセルされていない場合（ＹＥＳ：ステップＳ３０５）、投機実行手段１２３は、投機実行数の設定値に１加算（カウントアップ）すると共に、実行順序テーブルに基づき各ジョブのコンテキスト非依存部分の投機実行を順次行う（ステップＳ３０６）。
【００８１】
これにより、投機実行手段１２３（３３１）は、先行実行可能なコンテキスト非依存部分を予め設定された実行タイミングより早く実行することができるので、正規実行部１３で実行されるバッチ処理時間を有効に短縮化することができ、更には、遊休リソースを有効活用することができる。
【００８２】
次に、投機実行手段１２３は、バッチジョブ実行部１３２に対して、対象ジョブの投機実行を開始したことを示す投機実行開始情報を通知する（ステップＳ３０７）と共に、実行順序テーブル記憶部１３３から投機実行を行ったジョブエントリを削除する（ステップＳ３０８）。
これにより、投機実行手段１２３およびバッチジョブ実行部１３２それぞれで同一のジョブが２重に実行されるのを抑制することができる。
【００８３】
更に、投機実行手段１２３は、対象ジョブの投機実行が完了した場合に（投機実行処理が完了した対象ジョブがある場合）、バッチジョブ実行部１３２に対して投機実行が完了したことを示す投機実行完了情報を通知する（ステップＳ３０９）。
ここで、異なる複数のジョブ（対象ジョブ）の投機実行が完了している場合には、投機実行手段１２３は、バッチジョブ実行部１３２に対して各対象ジョブに対応した投機実行完了情報を通知すると共に、投機実行完了情報に基づき、実行順序テーブル記憶部１２５から投機実行が完了したジョブエントリを削除する。
【００８４】
また、投機実行手段１２３は、対象ジョブの投機実行結果を実行結果テーブル記憶部１３３に格納すると共に、投機実行数（実行可能数）を投機実行が完了した数だけ下げる（ステップＳ３０９）。
次いで、投機実行手段１２３は、再び、投機実行数が予め設定された最大投機実行数を超えているか否かの判定を行う（ステップＳ３０１に戻る）。
【００８５】
以上のように、先行実行可能なコンテキスト非依存部分と先行実行不可能なコンテキスト依存部分とを分けて定義することで、コンテキスト非依存部分を投機実行できるため、遊休リソースを有効活用でき、システム全体のバッチ処理を迅速化することができる。
時間を短縮することができる。
【００８６】
また、投機実行により、実際のバッチジョブの開始時刻よりも早くリソース使用ができる機会が回ってくるので、全体としてリソースの利用効率が向上し、リソース使用のピークを分散させることができ、これにより、システムの処理キャパシティを向上させることが可能となる。
【００８７】
投機実行により、リソース使用を分散させ、投機実行条件を指定することにより、依存関係やリソースの条件を指定できるため、負荷やリソース使用を考慮した柔軟なバッチジョブ設計が可能となり、バッチジョブの設計の柔軟性を向上させることができる。
【産業上の利用可能性】
【００８８】
本発明は、ネットワークを介して接続されたコンピュータにより異なる複数のバッチジョブの処理を行うネットワーク分散型コンピュータシステムに対して有用に適用することができる。
【符号の説明】
【００８９】
１  ジョブ実行制御システム（コンピュータシステム）
２，３  ジョブ実行制御装置
１１  リソース管理部
１２  投機実行部
１３  正規実行部
１２１  実行順序予測手段
１２２  実行順序補正手段
１２３，３３１  投機実行手段
１２４  予測情報テーブル記憶部
１２５，３３２  実行順序テーブル記憶部
１３１  バッチジョブ定義格納部
１３２  バッチジョブ実行部
１３３  実行結果テーブル記憶部
【図１】
0005444900.tif 000002
【図２】
0005444900.tif 000003
【図３】
0005444900.tif 000004
【図４】
0005444900.tif 000005
【図５】
0005444900.tif 000006
【図６】
0005444900.tif 000007
【図７】
0005444900.tif 000008
【図８】
0005444900.tif 000009
【図９】
0005444900.tif 000010
【図１０】
0005444900.tif 000011
【図１１】
0005444900.tif 000012