(57)【要約】【課題】複数の計算機を用いてバッチ処理を行うバッチ処理システム全体で計算機資源を効率良く使用すること。【解決手段】ジョブステップ実行プログラム２０ａの実行ジョブ情報取得部２１がジョブ実行依頼とともにスケジューリングプログラム１０ａの実行ジョブ情報送信部１４が生成したジョブの実行状況を示す実行ジョブ情報を取得し、ジョブステップ実行部２２が実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新した後、ジョブの実行が終了したか否かを判定し、ジョブの実行が終了していない場合には、最適サーバ選定部２３が次のジョブステップを実行する最適な実行サーバを選定し、選定した実行サーバが自サーバでない場合には、実行ジョブ情報転送部２４がジョブの実行依頼とともに実行ジョブ情報を最適サーバ選定部２３により選定された実行サーバに送信するよう構成する。【選択図】        図２
2007041720.tif 000002
【特許請求の範囲】
【請求項１】
バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバで実行させるジョブステップ実行プログラムであって、
バッチジョブの実行依頼を受信し、該実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行するジョブステップ実行手順と、
前記ジョブステップ実行手順によりジョブステップが実行された後にバッチジョブの実行が終了したか否かを判定する実行終了判定手順と、
前記実行終了判定手順によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバにバッチジョブの実行依頼を送信する実行依頼手順と、
を実行サーバに実行させることを特徴とするジョブステップ実行プログラム。
【請求項２】
前記ジョブステップ実行手順は、ジョブステップの実行順序およびジョブステップごとの実行状況を示す実行ジョブ情報をバッチジョブの実行依頼とともに受信し、該受信した実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新し、
前記実行終了判定手順は、前記ジョブステップ実行手順により更新された実行ジョブ情報に基づいてバッチジョブの実行が終了したか否かを判定し、
前記実行依頼手順は、実行依頼とともに前記ジョブステップ実行手順により更新された実行ジョブ情報を送信することを特徴とする請求項１に記載のジョブステップ実行プログラム。
【請求項３】
前記実行依頼手順は、選定した実行サーバが他の実行サーバであるときに実行依頼とともに前記ジョブステップ実行手順により更新された実行ジョブ情報を送信し、選定した実行サーバが自サーバであるときは、該実行ジョブ情報を送信することなく、次のジョブステップを自サーバで実行するよう制御することを特徴とする請求項２に記載のジョブステップ実行プログラム。
【請求項４】
前記ジョブステップ実行手順は、ジョブステップを実行した後に該実行したジョブステップの実行状況を示すジョブステップ終了情報に終了を示す値を設定し、
前記実行終了判定手順は、ジョブステップ終了情報のうち終了を示す値が設定されていないジョブステップがある場合にバッチジョブの実行が終了していないと判定することを特徴とする請求項２または３に記載のジョブステップ実行プログラム。
【請求項５】
バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバのジョブステップ実行方法であって、
バッチジョブの実行依頼を受信し、該実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行するジョブステップ実行工程と、
前記ジョブステップ実行工程によりジョブステップが実行された後にバッチジョブの実行が終了したか否かを判定する実行終了判定工程と、
前記実行終了判定工程によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバにバッチジョブの実行依頼を送信する実行依頼工程と、
を含んだことを特徴とするジョブステップ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバで実行させるジョブステップ実行プログラムおよびジョブステップ実行方法に関し、特に、特定の計算機に負荷が集中することを防ぎ、もってバッチ処理システム全体として計算機資源を効率良く利用することを可能とするジョブステップ実行プログラムおよびジョブステップ実行方法に関するものである。
【背景技術】
【０００２】
コンピュータのデータ処理方式には、データを一定期間あるいは一定量まとめてから一括して処理を行うバッチ処理という方式がある。このバッチ処理は、従来はメインフレームによって行われてきたが、近年オープンサーバによっても行われるようになってきている。
【０００３】
図１０は、メインフレームによるバッチ処理を説明するための説明図である。同図に示すように、メインフレームによるバッチ処理では、一つの計算機上にジョブ（バッチジョブ）ごとにイニシエータ空間を生成し、イニシエータ空間内でジョブステップを順次実行することによってジョブを実行している。
【０００４】
図１１は、オープンサーバによるバッチ処理を説明するための説明図である。同図に示すように、オープンサーバを用いる場合には、各ジョブステップで実行するプログラムを順次呼び出すようなシェルスクリプトをジョブごとに作成する必要がある。しかし、シェルスクリプトをジョブの数だけ用意することとすると、使われる資源が膨大となりサーバにかかる負担が大きくなる。
【０００５】
このため、オープンサーバでは、複数のサーバを用いてジョブを分散実行することが行われている。図１２は、オープンサーバによるジョブ分散実行方式を説明するための説明図である。同図に示すように、このジョブ分散実行方式では、スケジュールサーバがジョブごとに実行サーバを割り当て、ジョブの分散処理を行っている。
【０００６】
しかし、このようなジョブごとの分散処理では、複数のジョブステップから構成されるジョブの負荷分散をきめ細かく行うことができず、実行サーバ間の負荷にばらつきが生じ、計算機資源を効率良く使用することができない。
【０００７】
そこで、各実行サーバ間の処理負荷をより均等化させるために、特許文献１には、ジョブ単位ではなく、ジョブステップ単位で処理を実行サーバに割り振るジョブステップ分散実行方式が記載されている。
【０００８】
図１３は、かかる従来のジョブステップ分散実行方式によるバッチ処理の概念を説明するための説明図である。同図に示すように、従来のジョブステップ分散実行方式によるバッチ処理では、ジョブをスケジュールするスケジュールサーバ１１０が、各実行サーバの負荷情報に基づいて、ジョブを依頼する最適なサーバを選定する。そして、最適なサーバとして、例えば実行サーバ１２０を選定したとすると、スケジュールサーバ１１０は実行サーバ１２０へジョブを依頼する（１）。
【０００９】
そして、実行サーバ１２０はジョブステップを実行すると、負荷状態に基づいて次のジョブステップの実行が適当であるか否かを判断し、適当でないと判断した場合には、制御を一旦スケジュールサーバ１１０へ返す（２）。そして、スケジュールサーバ１１０が再び各実行サーバの負荷情報に基づき最適サーバを選定し、最適サーバとして、例えば実行サーバ１３０を選定したとすると、選定した実行サーバ１３０へジョブを再依頼する（３）。
【００１０】
このように、従来のジョブステップ分散実行方式によるバッチ処理では、（１）〜（３）の処理、すなわち、スケジュールサーバ１１０によって選定された最適な実行サーバへのジョブ実行依頼と実行サーバからスケジュールサーバ１１０への制御の戻しを全てのジョブステップが終了するまで繰り返すことによって、各実行サーバがジョブステップ単位でジョブを分散実行し、各実行サーバ間の処理負荷の均等化を図っている。
【００１１】
【特許文献１】特開２００１−１６６９５６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、かかる従来のジョブステップ分散実行方式には、各実行サーバが次のジョブステップを他の実行サーバが実行することが最適であると判断するごとにスケジュールサーバ１１０へ制御を返すため、スケジュールサーバ１１０だけが最適サーバの選定処理を行うなどスケジュールサーバ１１０へ負荷が集中し、システム全体として計算機資源を効率良く使用することができないという問題がある。
【００１３】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スケジュールサーバなど特定の計算機に負荷が集中することを防ぎ、もってバッチ処理システム全体として計算機資源を効率良く利用することを可能とするジョブステップ実行プログラムおよびジョブステップ実行方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、請求項１の発明に係るジョブステップ実行プログラムは、バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバで実行させるジョブステップ実行プログラムであって、バッチジョブの実行依頼を受信し、該実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行するジョブステップ実行手順と、前記ジョブステップ実行手順によりジョブステップが実行された後にバッチジョブの実行が終了したか否かを判定する実行終了判定手順と、前記実行終了判定手順によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバにバッチジョブの実行依頼を送信する実行依頼手順と、を実行サーバに実行させることを特徴とする。
【００１５】
この請求項１の発明によれば、バッチジョブの実行依頼を受信し、実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行し、ジョブステップを実行した後にバッチジョブの実行が終了したか否かを判定し、バッチジョブの実行が終了していないと判定した場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、選定した実行サーバにバッチジョブの実行依頼を送信するよう構成したので、スケジュールサーバなど特定の計算機に負荷が集中することを防ぐことができる。
【００１６】
また、請求項２の発明に係るジョブステップ実行プログラムは、請求項１の発明において、前記ジョブステップ実行手順は、ジョブステップの実行順序およびジョブステップごとの実行状況を示す実行ジョブ情報をバッチジョブの実行依頼とともに受信し、該受信した実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新し、前記実行終了判定手順は、前記ジョブステップ実行手順により更新された実行ジョブ情報に基づいてバッチジョブの実行が終了したか否かを判定し、前記実行依頼手順は、実行依頼とともに前記ジョブステップ実行手順により更新された実行ジョブ情報を送信することを特徴とする。
【００１７】
この請求項２の発明によれば、ジョブステップの実行順序およびジョブステップごとの実行状況を示す実行ジョブ情報をバッチジョブの実行依頼とともに受信し、受信した実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新し、更新した実行ジョブ情報に基づいてバッチジョブの実行が終了したか否かを判定し、実行依頼とともに、更新した実行ジョブ情報を送信するよう構成したので、実行サーバ間で転送される実行ジョブ情報を用いて実行すべきジョブステップを特定することができ、スケジュールサーバなど特定のサーバからの実行すべきジョブステップの指示を不要とすることができる。
【００１８】
また、請求項３の発明に係るジョブステップ実行プログラムは、請求項２の発明において、前記実行依頼手順は、選定した実行サーバが他の実行サーバであるときに実行依頼とともに前記ジョブステップ実行手順により更新された実行ジョブ情報を送信し、選定した実行サーバが自サーバであるときは、該実行ジョブ情報を送信することなく、次のジョブステップを自サーバで実行するよう制御することを特徴とする。
【００１９】
この請求項３の発明によれば、選定した実行サーバが他の実行サーバであるときに実行依頼とともに、更新した実行ジョブ情報を送信し、選定した実行サーバが自サーバであるときは、実行ジョブ情報を送信することなく、次のジョブステップを自サーバで実行するよう制御する構成としたので、無駄な実行ジョブ情報の送信をなくすことができる。
【００２０】
また、請求項４の発明に係るジョブステップ実行プログラムは、請求項２または３の発明において、前記ジョブステップ実行手順は、ジョブステップを実行した後に該実行したジョブステップの実行状況を示すジョブステップ終了情報に終了を示す値を設定し、前記実行終了判定手順は、ジョブステップ終了情報のうち終了を示す値が設定されていないジョブステップがある場合にバッチジョブの実行が終了していないと判定することを特徴とする。
【００２１】
この請求項４の発明によれば、ジョブステップを実行した後に実行したジョブステップの実行状況を示すジョブステップ終了情報に終了を示す値を設定し、ジョブステップ終了情報のうち終了を示す値が設定されていないジョブステップがある場合にバッチジョブの実行が終了していないと判定するよう構成したので、各実行サーバは容易にバッチジョブの終了を判定することができる。
【００２２】
また、請求項５の発明に係るジョブステップ実行方法は、バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバのジョブステップ実行方法であって、バッチジョブの実行依頼を受信し、該実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行するジョブステップ実行工程と、前記ジョブステップ実行工程によりジョブステップが実行された後にバッチジョブの実行が終了したか否かを判定する実行終了判定工程と、前記実行終了判定工程によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバにバッチジョブの実行依頼を送信する実行依頼工程と、を含んだことを特徴とする。
【００２３】
この請求項５の発明によれば、バッチジョブの実行依頼を受信し、実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行し、ジョブステップを実行した後にバッチジョブの実行が終了したか否かを判定し、バッチジョブの実行が終了していないと判定した場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、選定した実行サーバにバッチジョブの実行依頼を送信するよう構成したので、スケジュールサーバなど特定の計算機に負荷が集中することを防ぐことができる。
【発明の効果】
【００２４】
請求項１および５の発明によれば、スケジュールサーバなど特定の計算機に負荷が集中することを防ぐので、バッチ処理システム全体として計算機資源を効率良く利用することができるという効果を奏する。
【００２５】
また、請求項２の発明によれば、スケジュールサーバなど特定のサーバからの実行すべきジョブステップの指示を不要とするので、特定のサーバに負荷が集中することを防ぐことができるという効果を奏する。
【００２６】
また、請求項３の発明によれば、無駄な実行ジョブ情報の送信をなくすので、バッチ処理システムの性能を向上させることができるという効果を奏する。
【００２７】
また、請求項４の発明によれば、各実行サーバが容易にバッチジョブの終了を判定することができるので、スケジュールサーバなど特定の計算機に制御を戻すことなくバッチジョブの終了を判定することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２８】
以下に添付図面を参照して、この発明に係るジョブステップ実行プログラムおよびジョブステップ実行方法の好適な実施例を詳細に説明する。
【実施例】
【００２９】
まず、本実施例に係るジョブステップ分散実行方式によるバッチ処理の概念について説明する。図１は、本実施例に係るジョブステップ分散実行方式によるバッチ処理の概念を説明するための説明図である。同図に示すように、本実施例に係るジョブステップ分散実行方式では、スケジュールサーバ１０が、ジョブの実行に最適な実行サーバを選定し、最適な実行サーバとして、例えば実行サーバ２０を選定したとすると、実行サーバ２０へジョブの実行を依頼する（１）。
【００３０】
そして、実行サーバ２０は、依頼されたジョブのジョブステップを一つ実行すると、次のジョブステップを実行する最適な実行サーバを選定し、最適な実行サーバとして、例えば実行サーバ３０を選定したとすると、実行サーバ３０にジョブの実行を依頼する（２）。そして、この（２）の処理は、（１）で依頼されたジョブにおける全てのジョブステップが終了するまで繰り返され、全てのジョブステップが終了すると、そのジョブが終了したことをスケジュールサーバ１０に通知する。
【００３１】
このように、本実施例に係るジョブステップ分散実行方式では、各実行サーバは、ジョブステップを実行すると、次のジョブステップを実行する最適な実行サーバを選定し、選定した実行サーバに直接ジョブの実行を依頼する。このため、スケジュールサーバ１０における処理は、各ジョブにおける最初のジョブステップを実行する実行サーバの選定および選定した実行サーバへのジョブ実行依頼と、該ジョブの終了通知の受信のみであり、その間の最適サーバの選定、最適サーバへのジョブの実行依頼およびジョブステップの実行はスケジュールサーバ１０を介さずに各実行サーバ間でのみ行う。したがって、最適サーバ選定に伴う処理負荷などスケジュールサーバ１０の負荷を各実行サーバに分散することができ、スケジュールサーバ１０に負荷が集中することを避けることができる。
【００３２】
次に、本実施例に係るバッチ処理システムのシステム構成について説明する。図２は、本実施例に係るバッチ処理システムのシステム構成を示す機能ブロック図である。同図に示すように、このバッチ処理システムは、ジョブキューからジョブを取得し、ジョブの実行を実行サーバに依頼するスケジュールサーバ１０と、各ジョブにおけるジョブステップを実行する任意の台数の実行サーバ２０，３０，．．．と、実行サーバの負荷状況を監視する監視装置４０とが、ネットワーク５０を介して接続されて構成される。
【００３３】
スケジュールサーバ１０は、ジョブキューから取得したジョブの実行を各実行サーバへ割り振るスケジューリングプログラム１０ａを実行するコンピュータであり、スケジューリングプログラム１０ａは、ジョブ取得部１１と、最適サーバ選定部１２と、ポリシ記憶部１３と、実行ジョブ情報送信部１４と、終了通知取得部１５とを有する。
【００３４】
ジョブ取得部１１は、ジョブキューから順にジョブを取得する処理部である。最適サーバ選定部１２は、ジョブ取得部１１が取得したジョブの実行を依頼する最適な実行サーバをポリシ記憶部１３に記憶された負荷定義ポリシおよび各実行サーバの負荷情報に基づいて選定する処理部である。
【００３５】
ポリシ記憶部１３は、実行サーバ選定にあたって使用される負荷定義ポリシを記憶する記憶部であり、負荷定義ポリシはユーザによって定義される。なお、「負荷定義ポリシ」は、実行サーバの負荷情報に基づいて定義されるポリシであることを意味する。
【００３６】
図３は負荷情報の一例を示す図である。同図に示すように、負荷情報としては、実行サーバのＣＰＵ使用率、メモリ使用率、ＩＯ負荷率を用いる。同図において、例えば、「サーバ１」については、ＣＰＵ使用率「１０％」、メモリ使用率「２０％」、ＩＯ負荷率「１５％」が負荷情報として用いられる。
【００３７】
図４は、負荷定義ポリシの一例を示す図である。同図に示すように、この負荷定義ポリシは、メモリ使用率が５０％未満の実行サーバの中でＣＰＵ使用率が最も低い実行サーバを最適サーバとし（条件１）、メモリ使用率が５０％未満の実行サーバが存在しない場合には、メモリ使用率が最も低いサーバを最適サーバとする（条件２）ポリシを定義している。
【００３８】
実行ジョブ情報送信部１４は、ジョブの実行状況を示す実行ジョブ情報をジョブ取得部１１が取得したジョブの情報に基づいて生成し、最適サーバ選定部１２によって選定された実行サーバへジョブの実行依頼とともに送信する処理部である。なお、実行ジョブ情報の詳細については後述する。
【００３９】
終了通知取得部１５は、実行を依頼したジョブの全てのジョブステップが終了したときに、最後のジョブステップを実行した実行サーバから送信されるジョブ終了通知を受信する処理部である。
【００４０】
実行サーバ２０，３０，．．．は、スケジュールサーバ１０から受け取った実行ジョブ情報に基づいて各ジョブステップを実行するジョブステプ実行プログラムを実行するコンピュータである。なお、各実行サーバで実行されるジョブステップ実行プログラムは同様の構成を有するので、ここでは実行サーバ２０で実行されるジョブステップ実行プログラム２０ａを例にとって説明する。
【００４１】
ジョブステップ実行プログラム２０ａは、実行ジョブ情報取得部２１と、ジョブステップ実行部２２と、最適サーバ選定部２３と、実行ジョブ情報転送部２４と、終了通知部２５と、ポリシ記憶部２６とを有する。
【００４２】
実行ジョブ情報取得部２１は、スケジュールサーバ１０または他の実行サーバからのジョブ実行依頼を実行ジョブ情報とともに取得する処理部である。図５は、実行ジョブ情報の一例を示す図である。同図に示すように、この実行ジョブ情報には、ジョブの名前を示すジョブ名と、ジョブを構成するジョブステップに関する情報とが含まれ、各ジョブステップに関する情報には、ジョブステップの名前を示すステップ名と、実行するプログラムの名前を示すプログラム名と、入力ファイルと、出力ファイルと、ジョブステップの実行が終了したか否かを示すジョブステップ終了フラグが含まれる。
【００４３】
例えば、ジョブ名“JOB1”の最初のジョブステップである“Step1”は、プログラム名が“PROGRAM1”、入力ファイルが“IN1”、出力ファイルが“OUT1”であることを示し、ステップ終了フラグには、ジョブステップの処理が終了したことを示す「済」となっている。
【００４４】
ジョブステップ実行部２２は、実行ジョブ情報取得部２１が取得した実行ジョブ情報に基づいてジョブステップを実行する処理部である。具体的には、このジョブステップ実行部２２は、実行すべきジョブステップを実行ジョブ情報に基づいて選定し、選定したジョブステップを実行後、当該ジョブステップのステップ終了フラグを「済」に設定する。なお、実行すべきジョブステップの選定は、実行ジョブ情報のジョブステップに関する情報を順に調べ、ステップ終了フラグが「済」でない最初のジョブステップを特定することによって行う。
【００４５】
また、このジョブステップ実行部２２は、実行したジョブステップのステップ終了フラグを「済」に設定した後、ステップ終了フラグが「済」でないジョブステップがあるか否かを判定することによって、ジョブが終了したか否かを判定する。
【００４６】
最適サーバ選定部２３は、スケジュールサーバ１０の最適サーバ選定部１２と同様に、ジョブステップを実行する最適な実行サーバをポリシ記憶部２６に記憶した負荷定義ポリシに基づいて選定する処理部である。なお、この最適サーバ選定部２３は、ジョブステップ実行部２２によるジョブステップ実行後、全てのジョブステップが終了してはいないとジョブステップ実行部２２によって判定された場合に、そのジョブの次のジョブステップを依頼する最適な実行サーバを選定する。
【００４７】
この最適サーバ選定部２３が、ジョブステップの実行終了後に次のジョブステップを実行する最適サーバの選定を行うことによって、スケジュールサーバ１０に制御を返すことなく実行サーバ間で直接ジョブの実行依頼を行うことができる。
【００４８】
実行ジョブ情報転送部２４は、最適サーバ選定部２３で選定された実行サーバが自サーバ以外の実行サーバであるときに、選定された実行サーバへジョブ実行依頼とともに実行ジョブ情報を転送する処理部である。この実行ジョブ情報転送部２４が実行ジョブ情報を転送することによって、実行ジョブ情報を受け取った実行サーバは次に実行すべきジョブステップをステップ終了フラグを用いて選定することができる。
【００４９】
終了通知部２５は、ジョブステップ実行部２２によるジョブステップ実行によりジョブの全てのジョブステップが終了したときに、スケジュールサーバ１０にジョブ終了通知を送信する処理部である。
【００５０】
ポリシ記憶部２６は、負荷定義ポリシを記憶する記憶部である。なお、このポリシ記憶部２６に記憶される負荷定義ポリシは、スケジュールサーバ１０のポリシ記憶部１３に記憶される負荷定義ポリシと同じものであり、スケジュールサーバ１０から配信され、ポリシ記憶部２６に格納される。
【００５１】
監視装置４０は、各実行サーバから負荷情報を取得するとともに、各実行サーバからの要求に基づいて全ての実行サーバの負荷情報を送信する装置である。各実行サーバの最適サーバ選定部２３は、この監視装置４０から取得した負荷情報とポリシ記憶部２６に記憶された負荷定義ポリシに基づいて、次のジョブステップを実行する最適な実行サーバを選定する。
【００５２】
次に、本実施例に係るスケジューリングプログラム１０ａの処理手順について説明する。図６は、本実施例に係るスケジューリングプログラム１０ａの処理手順を示すフローチャートである。
【００５３】
同図に示すように、このスケジューリングプログラム１０ａは、ジョブ取得部１１がジョブキューの中にジョブが存在するか否かを判定し（ステップＳ１０１）、ジョブキューの中にジョブが存在しない場合は、ジョブがジョブキューに投入されるまで待つ。
【００５４】
一方、ジョブキューの中にジョブが存在する場合は、ジョブ取得部１１がジョブキューの中からジョブを１つ取得し（ステップＳ１０２）、最適サーバ選定部１２が監視装置４０から取得した負荷情報とポリシ記憶部１３に記憶された負荷定義ポリシに基づき、ジョブを依頼する実行サーバを選定する最適サーバ選定処理を行う（ステップＳ１０３）。この最適サーバ選定処理については後述する。
【００５５】
そして、実行ジョブ情報送信部１４が、ジョブの情報にステップ終了フラグを加えて実行ジョブ情報を生成し、最適サーバ選定部１２が選定した実行サーバにジョブ実行依頼とともに送信する（ステップＳ１０４）。
【００５６】
そして、実行サーバ間で実行ジョブ情報が受け渡されることによってジョブが実行され、最後のジョブステップを実行した実行サーバから送信されたジョブ終了通知を終了通知取得部１５が取得する（ステップＳ１０５）と、ステップＳ１０１に戻り、ジョブ取得部１１が次のジョブの処理を行う。
【００５７】
このように、実行ジョブ情報送信部１４が、実行ジョブ情報を生成し、生成した実行ジョブ情報を最適サーバ選定部１２が選定した実行サーバにジョブ実行依頼とともに送信することによって、各実行サーバは、実行ジョブ情報を実行サーバ間で転送することで、ジョブステップの実行ごとに制御をスケジュールサーバ１０に戻すことなく、次に実行すべきジョブステップを特定することができる。
【００５８】
次に、本実施例に係るジョブステップ実行プログラム２０ａの処理手順について説明する。図７は、本実施例に係るジョブステップ実行プログラム２０ａの処理手順を示すフローチャートである。
【００５９】
同図に示すように、このジョブステップ実行プログラム２０ａは、実行ジョブ情報取得部２１が、スケジュールサーバ１０または他の実行サーバ３０から実行ジョブ情報を取得したか否かを判定し（ステップＳ２０１）、実行ジョブ情報を取得していない場合は、実行ジョブ情報が送られてくるのを待つ。
【００６０】
そして、実行ジョブ情報取得部２１が実行ジョブ情報を取得すると、ジョブステップ実行部２２が次に実行すべきジョブステップを一つ実行する（ステップＳ２０２）。具体的には、図５に示した実行ジョブ情報におけるステップ終了フラグを参照し、ステップ終了フラグが「済」でないジョブステップのうち一番先頭のジョブステップを実行する。
【００６１】
そして、ジョブステップ実行部２２は、実行したジョブステップに対応するステップ終了フラグを「済」に変更し（ステップＳ２０３）、他のステップ終了フラグを参照して全てのジョブステップが終了したか否かを判定する（ステップＳ２０４）。
【００６２】
その結果、終了していないジョブステップがあると判定した場合、すなわちステップ終了フラグが「済」でないジョブステップが存在する場合は、最適サーバ選定部２３が最適サーバ選定処理を行う（ステップＳ２０５）。
【００６３】
そして、実行ジョブ情報転送部２４が、最適サーバ選定部２３が選定した実行サーバが自サーバであるか否かを判定し（ステップＳ２０６）、最適サーバ選定部２３が選定した実行サーバが自サーバではない場合は、最適サーバ選定部２３が選定した実行サーバに実行ジョブ情報を転送し（ステップＳ２０７）、ステップＳ２０１に戻って実行ジョブ情報取得部２１が実行ジョブ情報を取得するまで待つ。
【００６４】
一方、最適サーバ選定部２３が選定した実行サーバが自サーバである場合は、実行ジョブ情報を転送する必要がないので、ステップＳ２０２に戻り、ジョブステップ実行部２２が次に処理すべきジョブステップを実行する。
【００６５】
また、ステップＳ２０４で全てのジョブステップが終了したと判定されたとき、すなわち全てのジョブステップのステップ終了フラグが「済」であるときは、終了通知部２５がスケジュールサーバ１０に全てのジョブの処理が完了したことを通知し（ステップＳ２０８）、ステップＳ２０１に戻って実行ジョブ情報取得部２１が実行ジョブ情報を取得するまで待つ。
【００６６】
このように、最適サーバ選定の処理を各実行サーバで行うとともに、実行サーバ間で実行ジョブ情報を転送することにより、スケジュールサーバ１０を介することなく各実行サーバ間でジョブの実行依頼が可能となり、スケジュールサーバ１０はジョブを一度実行サーバに依頼すれば、ジョブが終了するまでジョブの制御が戻されることがなくなり、スケジュールサーバ１０の処理負荷を低減することができる。
【００６７】
次に、ジョブステップ実行プログラム２０ａの最適サーバ選定部２３による最適サーバ選定処理の処理手順について説明する。なお、スケジューリングプログラム１０ａの最適サーバ選定部１２も同様の処理手順によって最適サーバ選定処理を実行する。
【００６８】
図８は、ジョブステップ実行プログラム２０ａの最適サーバ選定部２３による最適サーバ選定処理の処理手順を示すフローチャートである。同図に示すように、最適サーバ選定部２３は、監視装置４０から各実行サーバの負荷情報を取得する（ステップＳ３０１）。
【００６９】
そして、最適サーバ選定部２３は、ポリシ記憶部２６から負荷定義ポリシを読み出し（ステップＳ３０２）、負荷情報と負荷定義ポリシに基づき、各実行サーバの中から最適サーバを選定する（ステップＳ３０３）。
【００７０】
例えば、三つの実行サーバの負荷情報が図３に示したような場合には、各実行サーバのメモリ使用率は、「サーバ１」が「２０％」、「サーバ２」が「５％」、「サーバ３」が「２０％」であり、全て５０％未満なので、負荷定義ポリシの「条件１」が適用され、全実行サーバの中でＣＰＵ使用率が最も低い実行サーバが最適サーバと選定される。ここでは、各実行サーバのＣＰＵ使用率は、「サーバ１」が「１０％」、「サーバ２」が「２０％」、「サーバ３」が「３０％」なので、「サーバ１」が最適サーバとして選定される。
【００７１】
このように、最適サーバ選定部２３が次のジョブステップを実行する最適な実行サーバを、監視装置４０から取得した負荷情報、および予め記憶した負荷定義ポリシに基づいて選定することによって、より負荷の小さい実行サーバへの処理の移行を可能とし、バッチ処理システム全体として計算機資源を効率良く使用することができる。
【００７２】
次に、本実施例に係るジョブステップ実行プログラム２０ａを実行する実行サーバ２０のハードウェア構成について説明する。図９は、本実施例に係るジョブステップ実行プログラム２０ａを実行する実行サーバ２０のハードウェア構成を示す機能ブロック図である。
【００７３】
同図に示すように、この実行サーバ２０は、ＲＡＭ２１０と、ＣＰＵ２２０と、ＨＤＤ２３０と、ＬＡＮインタフェース２４０と、入出力インタフェース２５０と、ＤＶＤドライブ２６０とを有する。
【００７４】
ＲＡＭ２１０は、プログラムやプログラムの実行途中結果などを記憶するメモリであり、ＣＰＵ２２０は、ＲＡＭ２１０からプログラムを読み出して実行する中央処理装置である。
【００７５】
ＨＤＤ２３０は、プログラムやデータを格納するディスク装置であり、ＬＡＮインタフェース２４０は、実行サーバ２０をＬＡＮ経由で他の実行サーバやスケジュールサーバなどに接続するためのインタフェースである。
【００７６】
入出力インタフェース２５０は、マウスやキーボードなどの入力装置および表示装置を接続するためのインタフェースであり、ＤＶＤドライブ２６０は、ＤＶＤの読み書きを行う装置である。
【００７７】
そして、この実行サーバ２０において実行されるジョブステップ実行プログラム２０ａは、ＤＶＤに記憶され、ＤＶＤドライブ２６０によってＤＶＤから読み出されて実行サーバ２０にインストールされる。
【００７８】
あるいは、このジョブステップ実行プログラム２０ａは、ＬＡＮインタフェース２４０を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されて実行サーバ２０にインストールされる。
【００７９】
そして、インストールされたジョブステップ実行プログラム２０ａは、ＨＤＤ２３０に記憶され、ＲＡＭ２１０に読み出されてＣＰＵ２２０によってジョブステップ実行プロセス２２１として実行される。
【００８０】
上述してきたように、本実施例では、ジョブステップ実行プログラム２０ａの実行ジョブ情報取得部２１がジョブ実行依頼とともにスケジューリングプログラム１０ａの実行ジョブ情報送信部１４が生成したジョブの実行状況を示す実行ジョブ情報を取得し、ジョブステップ実行部２２が実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新した後、ジョブの実行が終了したか否かを判定し、ジョブの実行が終了していない場合には、最適サーバ選定部２３が次のジョブステップを実行する最適な実行サーバを選定し、選定した実行サーバが自サーバでない場合には、実行ジョブ情報転送部２４がジョブの実行依頼とともに実行ジョブ情報を最適サーバ選定部２３により選定された実行サーバに送信することとしたので、一度スケジュールサーバ１０側でジョブの処理を依頼すると、ジョブが終了するまでは各実行サーバでのみ処理が実行され、スケジュールサーバ１０に制御が戻されることがなく、スケジュールサーバ１０の処理負荷を軽減することができる。
【００８１】
なお、本実施例では、実行ジョブ情報を実行サーバ間で転送することによってジョブの実行依頼を受けた実行サーバがジョブステップの実行状況や次に実行すべきジョブステップを特定する場合について説明したが、本発明はこれに限定されるものではなく、例えば、実行ジョブ情報を実行サーバ間で転送することなく、ジョブの実行依頼を受けた実行サーバがスケジューリングサーバ１０に次に実行すべきジョブステップやそのジョブステップがジョブの最後であるか否かを問い合わせる場合にも同様に適用することができる。この場合、本実施例と比較してスケジューリングサーバ１０の負荷は高くなるが、最適サーバ選定処理はスケジューリングサーバ１０で行う必要がないため、最適サーバ選定処理を常にスケジューリングサーバ１０が行う従来のジョブステップ分散実行方式と比較して、スケジューリングサーバ１０の負荷を低減することができる。
【００８２】
また、本実施例では、スケジューリングサーバ１０がバッチジョブの受け付け、実行ジョブ情報の生成および最初のジョブステップを実行する実行サーバの選定を行う場合について説明したが、本発明はこれに限定されるものではなく、バッチジョブの受け付け機能や実行ジョブ情報の生成機能を全ての実行サーバに備えさせ、各実行サーバが受け付けたバッチジョブについて実行ジョブ情報を生成し、最初のジョブステップを実行する実行サーバの選定を行い、選定した実行サーバに実行ジョブ情報とともにジョブ実行依頼を送信することによって、スケジューリングサーバ１０を不要とする場合にも同様に適用することができる。
【００８３】
（付記１）バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバで実行させるジョブステップ実行プログラムであって、
バッチジョブの実行依頼を受信し、該実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行するジョブステップ実行手順と、
前記ジョブステップ実行手順によりジョブステップが実行された後にバッチジョブの実行が終了したか否かを判定する実行終了判定手順と、
前記実行終了判定手順によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバにバッチジョブの実行依頼を送信する実行依頼手順と、
を実行サーバに実行させることを特徴とするジョブステップ実行プログラム。
【００８４】
（付記２）前記ジョブステップ実行手順は、ジョブステップの実行順序およびジョブステップごとの実行状況を示す実行ジョブ情報をバッチジョブの実行依頼とともに受信し、該受信した実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新し、
前記実行終了判定手順は、前記ジョブステップ実行手順により更新された実行ジョブ情報に基づいてバッチジョブの実行が終了したか否かを判定し、
前記実行依頼手順は、実行依頼とともに前記ジョブステップ実行手順により更新された実行ジョブ情報を送信することを特徴とする付記１に記載のジョブステップ実行プログラム。
【００８５】
（付記３）前記実行依頼手順は、選定した実行サーバが他の実行サーバであるときに実行依頼とともに前記ジョブステップ実行手順により更新された実行ジョブ情報を送信し、選定した実行サーバが自サーバであるときは、該実行ジョブ情報を送信することなく、次のジョブステップを自サーバで実行するよう制御することを特徴とする付記２に記載のジョブステップ実行プログラム。
【００８６】
（付記４）前記ジョブステップ実行手順は、ジョブステップを実行した後に該実行したジョブステップの実行状況を示すジョブステップ終了情報に終了を示す値を設定し、
前記実行終了判定手順は、ジョブステップ終了情報のうち終了を示す値が設定されていないジョブステップがある場合にバッチジョブの実行が終了していないと判定することを特徴とする付記２または３に記載のジョブステップ実行プログラム。
【００８７】
（付記５）前記実行終了判定手順によりバッチジョブの実行が終了したと判定された場合に、バッチジョブを受け付けたコンピュータに該バッチジョブの実行終了を通知する終了通知手順をさらに実行サーバに実行させることを特徴とする付記１〜４のいずれか一つに記載のジョブステップ実行プログラム。
【００８８】
（付記６）前記実行依頼手順は、次に実行すべきジョブステップを実行する実行サーバを実行サーバの負荷情報を用いて定義されるポリシに基づいて選定することを特徴とする付記１〜５のいずれか一つに記載のジョブステップ実行プログラム。
【００８９】
（付記７）前記負荷情報には、ＣＰＵ使用率、メモリ使用率およびＩＯ負荷率が含まれることを特徴とする付記１〜６のいずれか一つに記載のジョブステップ実行プログラム。
【００９０】
（付記８）バッチジョブを複数の実行サーバで分散処理するバッチ処理システムであって、
前記バッチジョブを構成するジョブステップのうちの先頭のジョブステップを実行する実行サーバを選定する選定手段と、
前記選定手段により選定された実行サーバにジョブステップの実行順序およびジョブステップごとの実行状況を示す実行ジョブ情報を送信してバッチジョブの実行を依頼する初期実行依頼手段と、
を備えたスケジュールサーバを有し、
前記実行サーバは、
前記スケジュールサーバまたは他の実行サーバから前記実行ジョブ情報をジョブの実行依頼とともに受信する実行ジョブ情報受信手段と、
前記実行ジョブ情報受信手段により受信された実行ジョブ情報で指定された実行順序に基づいてジョブステップを実行し、実行ジョブ情報を更新してバッチジョブの実行が終了したか否かを判定するジョブステップ実行手段と、
前記ジョブステップ実行手段によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバに実行ジョブ情報を送信してジョブの実行を依頼する実行依頼手段と、
を備えたことを特徴とするバッチ処理システム。
【００９１】
（付記９）バッチジョブを複数の実行サーバで分散処理するバッチ処理システムの各実行サーバのジョブステップ実行方法であって、
バッチジョブの実行依頼を受信し、該実行依頼を受信したバッチジョブにおいて次に実行すべきジョブステップを実行するジョブステップ実行工程と、
前記ジョブステップ実行工程によりジョブステップが実行された後にバッチジョブの実行が終了したか否かを判定する実行終了判定工程と、
前記実行終了判定工程によりバッチジョブの実行が終了していないと判定された場合に、次に実行すべきジョブステップを実行する実行サーバを選定し、該選定した実行サーバにバッチジョブの実行依頼を送信する実行依頼工程と、
を含んだことを特徴とするジョブステップ実行方法。
【００９２】
（付記１０）前記ジョブステップ実行工程は、ジョブステップの実行順序およびジョブステップごとの実行状況を示す実行ジョブ情報をバッチジョブの実行依頼とともに受信し、該受信した実行ジョブ情報に基づいてジョブステップを実行して実行ジョブ情報を更新し、
前記実行終了判定工程は、前記ジョブステップ実行工程により更新された実行ジョブ情報に基づいてバッチジョブの実行が終了したか否かを判定し、
前記実行依頼工程は、実行依頼とともに前記ジョブステップ実行工程により更新された実行ジョブ情報を送信することを特徴とする付記９に記載のジョブステップ実行方法。
【産業上の利用可能性】
【００９３】
以上のように、本発明に係るジョブステップ実行プログラムおよびジョブステップ実行方法は、バッチジョブを処理するバッチ処理システムに有用であり、特に、多数の実行サーバを用いてジョブを分散実行する場合に適している。
【図面の簡単な説明】
【００９４】
【図１】本実施例に係るジョブステップ分散実行方式によるバッチ処理の概念を説明するための説明図である。
【図２】本実施例に係るバッチ処理システムのシステム構成を示す機能ブロック図である。
【図３】負荷情報の一例を示す図である。
【図４】負荷定義ポリシの一例を示す図である。
【図５】実行ジョブ情報の一例を示す図である。
【図６】本実施例に係るスケジューリングプログラムの処理手順を示すフローチャートである。
【図７】本実施例に係るジョブステップ実行プログラムの処理手順を示すフローチャートである。
【図８】ジョブステップ実行プログラムの最適サーバ選定部による最適サーバ選定処理の処理手順を示すフローチャートである。
【図９】本実施例に係るジョブステップ実行プログラムを実行する実行サーバのハードウェア構成を示す機能ブロック図である。
【図１０】メインフレームによるバッチ処理を説明するための説明図である。
【図１１】オープンサーバによるバッチ処理を説明するための説明図である。
【図１２】オープンサーバによるジョブ分散実行方式を説明するための説明図である。
【図１３】従来のジョブステップ分散実行方式によるバッチ処理の概念を説明するための説明図である。
【符号の説明】
【００９５】
１０，１１０    スケジュールサーバ
１０ａ    スケジューリングプログラム
１１    ジョブ取得部
１２    最適サーバ選定部
１３    ポリシ記憶部
１４    実行ジョブ情報送信部
１５    終了通知取得部
２０，３０，１２０，１３０    実行サーバ
２０ａ    ジョブステップ実行プログラム
２１    実行ジョブ情報取得部
２２    ジョブステップ実行部
２３    最適サーバ選定部
２４    実行ジョブ情報転送部
２５    終了通知部
２６    ポリシ記憶部
４０    監視装置
５０，１５０    ネットワーク
２１０    ＲＡＭ
２２０    ＣＰＵ
２２１    ジョブステップ実行プロセス
２３０    ＨＤＤ
２４０    ＬＡＮインタフェース
２５０    入出力インタフェース
２６０    ＤＶＤドライブ
【図１】
2007041720.tif 000003
【図２】
2007041720.tif 000004
【図３】
2007041720.tif 000005
【図４】
2007041720.tif 000006
【図５】
2007041720.tif 000007
【図６】
2007041720.tif 000008
【図７】
2007041720.tif 000009
【図８】
2007041720.tif 000010
【図９】
2007041720.tif 000011
【図１０】
2007041720.tif 000012
【図１１】
2007041720.tif 000013
【図１２】
2007041720.tif 000014
【図１３】
2007041720.tif 000015