(57)【特許請求の範囲】
【請求項１】
所定期間毎に、スケジュールに沿って複数のジョブをジョブ実行エージェントで実行させるジョブ実行管理システムであって、
複数の集約元ジョブ実行エージェントで実行していた複数のジョブを１つの集約先ジョブ実行エージェントに集約する指示を入力する手段と、
該集約する指示が入力されたとき、前記複数の集約元ジョブ実行エージェントの中から、前記集約先ジョブ実行エージェントに置き換える１つの集約元ジョブ実行エージェントを決定する手段と、
決定された１つの集約元ジョブ実行エージェントで実行していたジョブを集約先ジョブ実行エージェントで実行するようにジョブ実行のスケジュールを作成するとともに、前記決定された１つの集約元ジョブ実行エージェントで実行していた複数のジョブのうち同時に実行していたジョブについてはその中の１つのジョブのみを前記集約先ジョブ実行エージェントで実行するようにスケジュールを作成する手段と、
前記集約先ジョブ実行エージェントに置き換える集約元ジョブ実行エージェントの決定と前記スケジュールの作成を繰り返して、前記複数の集約元ジョブ実行エージェントで実行していた複数のジョブが少なくとも１回は前記集約先ジョブ実行エージェントで実行されるようなジョブの実行スケジュールを生成する手段と、
前記生成したジョブの実行スケジュールに沿って所定期間の間ジョブの実行を行い、前記集約先のジョブ実行エージェントで実行したジョブに関して負荷情報を収集する手段と
を備えることを特徴とするジョブ実行管理システム。
【請求項２】
請求項１に記載のジョブ実行管理システムにおいて、さらに、
前記収集した負荷情報に基づいて、前記集約先ジョブ実行エージェントで実行した場合にリソース枯渇が発生する期間があるかどうかを判定する手段と、
リソース枯渇が発生する期間があった場合、その期間に実行される複数のジョブのうち開始時刻が変更可能なジョブの開始時刻を調整して、その期間にリソース枯渇が起こらないようにスケジュールを変更する手段と
を備えることを特徴とするジョブ実行管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを使用したジョブ実行管理システムに関し、詳しくは、複数台のコンピュータに分散して実行させている多くのコマンドやアプリケーション（以下、ジョブ）を１台の後継のコンピュータに集約して実行させようとする場合に、ジョブスケジューリングにより過大な負荷による業務遅延を発生させないように集約できるようにするジョブ実行管理技術に関するものである。
【背景技術】
【０００２】
ジョブ実行管理システムを使用したシステムでは、リソース制限等により複数台（多数）のコンピュータを使用して運用するのが一般的である。例えば、下記特許文献１には、与えられたジョブを複数の計算機４１〜４３に負荷が分散するように実行させるシステムが開示されている（特許文献１の段落００２２〜００２４、図２など参照）。
【０００３】
昨今、コンピュータの性能向上やマルチコアＣＰＵの登場により、複数台のコンピュータで実行していたジョブを少数のコンピュータに集約してシステム構築するケースが増加してきている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−６７２３７
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数台のコンピュータで行っていた業務を少数（例えば１台）のコンピュータで行うようにする場合、単純に集約すると、特定の時間帯にジョブの実行が集中して業務の遅延につながる恐れがある。性能の高いコンピュータを導入しても、ジョブ実行のピークが集中すると、一時的にコンピュータの負荷が高くなり、リソース限界に達し、期待した時間どおりにジョブが開始しなかったり、ジョブが期限までに終了しなかったりする恐れがある。
【０００６】
このような課題は、リソース枯渇が発生するピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの実行開始時刻を調整して、並行実行していたジョブを時間帯により分散することで回避可能である。しかし、業務のピーク時間帯を指定したり、手動ですべてのジョブを再スケジュールすることは非常に手間のかかる作業である。また、手動でジョブのスケジュールを調整するため、設定ミスやジョブ特性の考慮漏れなどが発生し、集約後に問題が摘出されることも考えられる。
【０００７】
本発明は、複数台のコンピュータで行っていたジョブを１台のコンピュータに集約する場合、集約元のコンピュータで実行されていたすべてのジョブを集約先のコンピュータで段階的に自動代行実行して負荷情報の収集を行い、収集した情報を元にリソース限界となるピーク時間帯を洗い出し、そのピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整することで、処理量あふれによるリソース不足を発生させずに業務を遅延なく運用できるジョブ実行管理システムの集約におけるスケジュール調整機能を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明では、コンピュータを使用したジョブ実行管理システムにおいて、例えば複数台のコンピュータを１台のコンピュータに集約する場合、同一ネットワーク上に集約先のコンピュータを接続し、集約元のコンピュータで実行していたジョブをリソース枯渇が発生しないように集約先のコンピュータで段階的に実行し、集約元のコンピュータで実行していたすべてのジョブの負荷情報を収集する。そして、ジョブ単位に指定された終了期限・開始時刻の変更可否設定とジョブ単位の負荷情報をもとにスケジュール調整する。
【発明の効果】
【０００９】
本発明によれば、ジョブを集約する際に、処理量あふれにより顕在化するリソース枯渇が発生したり、期待した時刻どおりにジョブが開始しなかったり、ジョブが期限までに終了しなかったりする問題が発生しないようなスケジュールを自動生成することができる。従って、例えば複数台のコンピュータで実行していたジョブを１台のコンピュータに集約する場合、集約元のコンピュータで実行されていたすべてのジョブの負荷情報を収集し、収集した情報を元にリソース限界となるピーク時間帯を検出し、ジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの実行開始時刻を調整することで、すべての業務の遅延をなくすようなスケジュールを自動作成できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施の形態例を示すシステム構成図
【図２】ジョブ管理マネージャーの構成図
【図３】ジョブ実行エージェントの構成図
【図４】ジョブ定義データベースに格納されるデータの構成図
【図５】ジョブスケジュールデータベースに格納されるデータの構成図
【図６】ジョブ履歴データベースに格納されるデータの構成図
【図７】エージェント集約情報データベースに格納されるデータの構成図
【図８】複数のジョブ実行エージェントを少数のジョブ実行エージェントへ集約する旨の依頼を受けた後のジョブスケジュールデータベースのデータ例を示す図
【図９】エージェント負荷情報データベースに格納されるデータ構成図
【図１０】エージェント負荷予測データベースに格納されるデータの構成図とＣＰＵ使用率を示すイメージ図
【図１１】ピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整した後のエージェント負荷予測データベースのデータ例とＣＰＵ使用率を示すイメージ図
【図１２】ピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整した後のジョブ定義データベースのデータ例を示す図
【図１３】複数のジョブ実行エージェントを１台のジョブ実行エージェントへ集約する旨の指示を受けたときのジョブスケジュールデータベースの更新処理を示すフローチャート
【図１４】リソース限界となるピーク時間帯を洗い出し、そのピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整することで、処理量あふれによるリソース不足を発生させないスケジュールを作成する処理のフローチャート
【発明を実施するための形態】
【００１１】
以下、図面を用いて本発明の実施の形態を説明する。
【００１２】
図１は、本発明を適用したジョブ実行管理システムの構成例を示す。この実施形態のジョブ実行管理システムは、ジョブを配信するジョブ管理マネージャーA101と実際にジョブを実行する複数台のジョブ実行エージェントB102およびC103とがネットワーク105で相互に接続されて構成されている。また、ジョブ実行を集約するためのコンピュータであるジョブ実行エージェントD104がネットワーク105に接続されている。
【００１３】
図２は、ジョブ管理マネージャーA101の構成を示す。ジョブ管理マネージャーA101は、データの格納先として、ジョブ定義データベース207、ジョブスケジュールデータベース208、ジョブ履歴データベース209、エージェント集約情報データベース210、および、エージェントの負荷予測データベース211を備える。また、ジョブ管理マネージャーA101は、端末201からジョブ定義データベース207の更新を行うジョブ定義データベース参照更新部202、ジョブ定義データベース207に格納されている情報から実際のジョブのスケジュールを作成してジョブスケジュールデータベース208を更新するジョブ実行スケジュール作成部203、ジョブ実行エージェントにジョブを配信してジョブ終了後にジョブ履歴データベース211を更新するジョブ実行管理部204、複数台のジョブ実行エージェントを１台のジョブ実行エージェントへ集約する処理を行うエージェント入れ替え時設定処理部205、および、集約先のジョブ実行エージェントで収集した負荷情報から負荷予測データを作成し、エージェントの負荷予測データベース211に格納するエージェント負荷予測データ作成部206を備える。これらの各部の機能は、コンピュータ上でそれぞれ所定のプログラムを実行することにより実現される。
【００１４】
図３は、ジョブ実行エージェントB102およびジョブ実行エージェントD104の構成を示した図である。ジョブ実行エージェントB102は、ジョブの実行を行うジョブ実行部301を備える。なお、ジョブ実行エージェントC103も同様の構成である。集約先のジョブ実行エージェントD104は、データの格納先としてエージェント負荷情報データベース303を備えるとともに、ジョブ実行部301と、ジョブ実行時の負荷情報をエージェント負荷情報データベース303に格納し、ジョブ実行マネージャーA101に送信するジョブ実行時の負荷情報収集送信部302を備える。
【００１５】
図４は、ジョブ定義データベース207のデータ構造を示す。ジョブ定義データベース207は、ジョブ名401、ジョブ実行エージェント名402、ジョブ実行内容403、スケジュール情報404、ジョブ終了期限405、および開始時刻変更可否406の各フィールドを備える。スケジュール情報404には、ジョブを開始する時刻を格納する。ジョブ終了期限405には、該当するジョブをいつまでに終了させる必要があるかを示す値を格納する。開始時刻変更可否406には、該当するジョブの開始時刻を変更可能か否かを示す値を格納する。ジョブ管理マネージャーA101のジョブ実行スケジュール作成部203は、端末201から通常のスケジュール作成の指示が入力されたとき、図４の情報からジョブの実行スケジュールを作成して、後述する図５のジョブスケジュールデータベース208を更新する。
【００１６】
図５は、ジョブスケジュールデータベース208のデータ構造を示す。ジョブスケジュールデータベース208は、日付501、ジョブ実行開始時刻502、ジョブ名503、および実行エージェント名504の各フィールドを備える。ジョブ実行管理部204は、日付501とジョブ実行開始時刻502に該当する時刻になると、実行エージェント名504で指定されたジョブ実行エージェントにジョブ名503で指定されたジョブを配信する。例えば、2008/2/1の0:00にはJob1をジョブ実行エージェントBに配信し、Job2をジョブ実行エージェントCに配信する。図５に示したデータ例は、端末201から通常のスケジュール作成の指示が入力されたとき、ジョブ実行スケジュール作成部203が図４のジョブ定義データに基づいて作成したスケジュールである。図５から分かるように、ここでは日毎に繰り返し実行する同じスケジュールが作成されている。また、図５では省略したが、スケジュール作成時には作成期間も指定でき、2008/2/4以降の日毎のスケジュールも同様に作成されているものとする。
【００１７】
図６は、ジョブ管理マネージャーA101のジョブ履歴データベース209のデータ構造を示す。ジョブ履歴データベース209は、日付601、開始時刻602、終了時刻603、ジョブ名604、および実行エージェント名605の各フィールドを備える。ジョブ実行管理部204は、ジョブ実行エージェントからジョブの終了結果を受け取ると、その結果に応じてジョブ履歴データベース209を更新する。開始時刻602には、実際にジョブが開始した時刻が格納され、終了時刻603には、実際にジョブが終了した時刻が格納される。
【００１８】
図７は、エージェント集約情報データベース210のデータ構造を示す。エージェント集約情報データベース210は、集約先エージェント701、集約元エージェント702、および収集期間703の各フィールドを備える。端末201からエージェント入れ替え時設定処理部205に、ジョブ実行エージェントB102とジョブ実行エージェントC103で行っていたジョブをジョブ実行エージェントD104へ集約する旨の依頼が為されると、エージェント入れ替え時設定処理部205は、集約先エージェント701にジョブ実行エージェントD104を、集約元エージェント702に実行エージェントB102とジョブ実行エージェントC103を、それぞれ格納する。収集期間703には、負荷情報を収集する期間を設定する。
【００１９】
図８は、ジョブ実行エージェントB102とジョブ実行エージェントC103で行っていたジョブをジョブ実行エージェントD104へ集約する指示が端末201から入力されたとき、ジョブ実行スケジュール作成部203により作成されたジョブスケジュールデータベース208のデータ例を示す。ここでは、既にジョブスケジュールデータベース208上に図５のスケジュールが2008/2/11以降についても作成されている状態で、ジョブを集約する上述の指示が入力され、これによりジョブ実行スケジュール作成部203が当該2008/2/11以降のスケジュールを変更した例を示している。
【００２０】
ジョブ実行スケジュール作成部203は、後述する図１３の処理により、集約元のコンピュータB102，C103で実行されていたすべてのジョブを集約先のコンピュータD104で段階的に自動代行実行して負荷情報を収集するスケジュールを作成する。このとき、集約先のジョブ実行エージェントでジョブを１個ずつ実行でき、かつ処理量あふれによるリソース不足を発生させないように、スケジューリングする必要がある。
【００２１】
このため、ジョブ実行スケジュール作成部203は、１日毎に、集約先のジョブ実行エージェントが代行する集約元のジョブ実行エージェントを変更してスケジューリングしている。例えば、ジョブ実行スケジュール作成部203は、まず図８の第１日目（2008/2/11）のスケジュールを作成する際には、図５に示した１日分のスケジュールが設定されている2008/2/11のスケジュールデータの実行エージェント名504（804）の値のうち実行エージェントB102をジョブ実行エージェントD104に置き換え（ただし、Job4は後述する理由により置き換えない）、次の第２日目（2008/2/12）のスケジュール作成では、図５に示した１日分のスケジュールが設定されている2008/2/12のスケジュールデータの実行エージェント名504（804）の値のうちジョブ実行エージェントC103をジョブ実行エージェントD102に置き換える。すなわち、第１日目のスケジュール作成では集約先のジョブ実行エージェントD102に置き換える対象を実行エージェントB102とし、第２日目のスケジュール作成では置き換える対象を実行エージェントC103としているものである。
【００２２】
また、集約元の１つのジョブ実行エージェントで複数のジョブが同時に実行されている場合には、それらのジョブを日単位に１個ずつ実行してジョブ単位の負荷情報を取得する必要がある。このため、同時に実行されているジョブについては、集約先のジョブ実行エージェントで日単位に１個ずつ実行するようにスケジュールを変更している。例えば、図５に示した１日分のスケジュールにおいて、Job3とJob4はジョブ実行エージェントB102で同時実行されている。そこで、ジョブ実行スケジュール作成部203は、図８の第１日目（2008/2/11）のスケジュール作成では、Job3の実行エージェント名504（804）の値だけをジョブ実行エージェントD104に置き換えてジョブ実行エージェントD104で実行し、Job4の実行エージェント名504（804）の値は置き換えずにジョブ実行エージェントB102で実行するようにスケジューリングする。また、図８の第３日目（2008/2/13）のスケジュール作成では、Job3の実行エージェント名504（804）の値を置き換えずにジョブ実行エージェントB102で実行し、Job4の実行エージェント名504（804）の値をジョブ実行エージェントD104に置き換えて、ジョブ実行エージェントD104で実行するようにスケジューリングする。
【００２３】
なお、上述したように、ジョブ実行スケジュール作成部203は、第２日目のスケジュール作成では置き換える対象を実行エージェントC103としており、実行エージェントD104で代行する集約元のジョブ実行エージェントがジョブ実行エージェントB102ではないため、第２日目のJob3とJob4についてはジョブ実行エージェントB102で実行するスケジュールを変更しない。第１日目のスケジュール作成において、Job3の実行エージェント名504（804）の値だけをジョブ実行エージェントD104に置き換え、Job4の実行エージェント名504（804）の値は置き換えなかったので、第３日目のスケジュール作成において、Job3の実行エージェント名504（804）の値は置き換えず、Job4の実行エージェント名504（804）の値をジョブ実行エージェントD104に置き換えるスケジュールを作成している。
【００２４】
図９は、ジョブ実行エージェントD104のエージェント負荷情報データベース303のデータ構造を示す。エージェント負荷情報データベース303は、ジョブ名901、開始時刻902、実行時間903、および負荷情報（平均ＣＰＵ使用率）904の各フィールドを備える。実行時間903は、ジョブ実行エージェントD104によりジョブを実行したときの所要時間の平均値である。負荷情報（平均ＣＰＵ使用率）904は、ジョブを実行中のＣＰＵ使用率の平均値である。これらのデータは、エージェント集約情報データベース210の収集期間703に指定された期間収集して更新され、ジョブ実行マネージャーホストA101に送られ、エージェントの負荷予測データベース211の予測データの作成に使用される。なお、所要時間の平均値やＣＰＵ使用率の平均値を算出するために必要な情報は、ジョブ実行エージェントD104で各ジョブを代行実行したときに保持してあるものとする。
【００２５】
図１０は、エージェントの負荷予測データベース211のデータ構造を示す。エージェントの負荷予測データベース211は、期間1001、ジョブ名1002、および負荷情報（平均ＣＰＵ使用率）1003の各フィールドを備える。負荷情報（平均ＣＰＵ使用率）1003は、エージェント負荷予測データ作成部206が、エージェント集約情報データベース210の収集期間703に指定された期間を経過したときに、ジョブ実行エージェントD104からエージェント負荷情報データベース303の情報を取得して作成・設定する。期間1001は、ジョブの開始と終了ごとに区切るため、ジョブの開始時刻902または開始時刻902と実行時間903から求めたジョブの終了時刻ごとに区切る。ジョブの開始時刻902および実行時間903と負荷情報（平均ＣＰＵ使用率）904の値から、平均ＣＰＵ使用率1003を導き出す。負荷情報（平均ＣＰＵ使用率）1003は、期間1001の間にジョブが実行されていない場合は0%とし、期間1001の間に１個のジョブだけが実行されている場合はそのジョブの負荷情報（平均ＣＰＵ使用率）904の値を設定し、期間1001の間に複数のジョブが実行されている場合はそれら実行しているジョブの負荷情報（平均ＣＰＵ使用率）904の値の合計値を設定する。下段に示したイメージ図は、上述した負荷予測データベース211の内容を、横軸に時刻、縦軸にＣＰＵ使用率を採って、グラフで表したものである。これらのデータから、2:00〜3:00に平均ＣＰＵ使用率が100%を超えることが予測される。
【００２６】
図１１は、エージェント負荷予測データベース211において、ピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整した後のエージェント負荷予測データである。例えば、エージェント負荷予測データベース211において、100%を超える期間2:00〜3:00は、ピーク時間帯である。期間2:00〜3:00には、Job5とJob6があり、いずれかを移動させる必要があるが、Job5は開始時刻変更可否406が否となっているため、Job6を3:00〜4:00に移動させている。Job6を3:00〜4:00に移動させた本データを元にジョブ定義データベース207を更新する。
【００２７】
図１２は、ピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整した後のジョブ管理マネージャーA101のジョブ定義データベース207の値である。図１１のピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整した後のエージェントの負荷予測データベースを元にJob6のスケジュール情報404（1204）を開始時刻3:00に変更している。このような調整は、後述する図１４の処理により実現される。特に、ステップ1408により図１０→図１１の調整が行われ、ステップ1410でジョブ定義データベース207の更新が行われる。
【００２８】
図１３は、ジョブ実行エージェントB102とジョブ実行エージェントC103で行っていたジョブをジョブ実行エージェントD104へ集約する指示が端末201から入力されたときに、ジョブ実行スケジュール作成部203により実行されるスケジュール作成処理の手順を示す。作成するスケジュールは、集約元のコンピュータで実行されていたすべてのジョブを集約先のコンピュータで段階的に自動代行実行するためのスケジュールである。図１３の処理により、例えば図５に示した１日分のスケジュールに基づいて図８のスケジュールが作成される。
【００２９】
ジョブ管理マネージャーA101のジョブ実行スケジュール作成部203は、エージェント集約情報データベース210（図７）から集約先エージェント701と集約元エージェント702の情報を取得する（ステップ1301）。
【００３０】
ジョブ実行スケジュール作成部203は、１日毎に、集約元のジョブ実行エージェントが実行していたジョブを集約先のジョブ実行エージェントで代行して実行するように変更することで、集約先のジョブ実行エージェントでリソース不足が発生することなく、段階的に自動代行実行して負荷情報を収集できるようにする。このため、ジョブスケジュールデータベース208から翌日（集約の指示が入力された日の翌日）以降の１日分の予定を取得し（ステップ1302）、集約先のジョブ実行エージェントでジョブの実行を代行する集約元のジョブ実行エージェントを決定する（ステップ1303）。ステップ1303は、集約元のジョブ実行エージェントのうち、どの実行エージェントを集約先のジョブ実行エージェントに置き換えるかを決定する処理である。
【００３１】
集約元の１つのジョブ実行エージェントで複数のジョブが同時に実行されている場合、集約先のジョブ実行エージェントでは１個ずつジョブを実行して負荷情報を取得する必要がある。このため、ステップ1303で決定した集約元のジョブ実行エージェントのジョブ実行の履歴をジョブ履歴データベース209（図６）から取得し（ステップ1304）、開始時刻602と終了時刻603から同時に実行されているジョブがあるかを確認する（ステップ1305）。同時実行されているジョブがある場合は、それらのジョブのうち１個だけを集約先のジョブ実行エージェントで実行するようにするため、それらの同時実行しているジョブのうち当日に実行する１つのジョブを決定し、その他のジョブを置き換え対象から除く（ステップ1306）。その後、ステップ1306で決定された１つのジョブ（すなわち、前記同時実行しているジョブから、ステップ1306で置き換え対象から除くとされたジョブを除いたもの）の実行先エージェント名504の値を集約先のジョブ実行エージェントに変更する（ステップ1307）。ステップ1305で同時実行しているジョブが無いときは、ステップ1306をスキップし、ステップ1303で決定した集約元のジョブ実行エージェントで当日に実行予定のすべてのジョブの実行先エージェント名504の値を集約先のジョブ実行エージェントに変更する（ステップ1307）。
【００３２】
図５と図８の例で説明すると、以上のステップ1302〜1307の処理により、まず図８の第１日目（2008/2/11）のスケジュールが作成される。具体的には、ステップ1302で、2008/2/11の予定を取得し（この時点では図５の１日分の予定が取得される）、ステップ1303で、集約元のジョブ実行エージェントBを置き換えると決定する。ステップ1304と1305で、ジョブ実行エージェントBで同時実行されているジョブとしてJob3とJob4があるので、ステップ1306で、Job3を置き換えるものと決定しJob4を置き換え対象から除く。結果として、ステップ1307で、Job4を除きジョブ実行エージェントBで実行しているジョブの実行エージェントがジョブ実行エージェントDに置き換えられる。これにより、図８の第１日目のスケジュールが作成される。
【００３３】
次に、収集期間を過ぎるまでのスケジュール作成が済んだか判別する（ステップ1308）。これは、ジョブ実行エージェント名504の値を集約先のジョブ実行エージェントに置き換える処理を、収集期間703に指定された期間の間繰り返すためである。
【００３４】
上述した第１日目（2008/2/11）のスケジュールが作成された後は、ステップ1308からステップ1302に戻って、図８の第２日目（2008/2/12）のスケジュール作成を行う。具体的には、ステップ1302で、2008/2/12の予定を取得し（この時点では図５の１日分の予定が取得される）、ステップ1303で、集約元のジョブ実行エージェントCを置き換えると決定する。なお、ステップ1303では、集約情報データベース210（図７）の集約元エージェント702に登録されている集約元エージェントを１つ１つ順に置き換え対象として決定していくが、そのためには既に置き換え対象として処理済みの集約元エージェントを所定のワーク用記憶領域に記憶しておき、それら処理済みのもの以外の集約元エージェントを置き換え対象としていくものとする。従って、第２日目（2008/2/12）の処理におけるステップ1303では、集約元のジョブ実行エージェントCが置き換え対象とされる。集約元エージェント702に登録されている全ての集約元エージェントを処理したら、再び集約元エージェント702に登録されている全ての集約元エージェントを未処理の状態に戻して置き換えを続けるものとする。
【００３５】
第２日目の処理のステップ1304と1305では、置き換え対象のジョブ実行エージェントCで同時実行されているジョブは無いので、ステップ1307で、ジョブ実行エージェントCで実行している全てのジョブの実行エージェントがジョブ実行エージェントDに置き換えられる。これにより、図８の第２日目のスケジュールが作成される。
【００３６】
第２日目（2008/2/12）のスケジュールが作成された後は、ステップ1308からステップ1302に戻って、図８の第３日目（2008/2/13）のスケジュール作成を行う。具体的には、ステップ1302で、2008/2/13の予定を取得する（この時点では図５の１日分の予定が取得される）。既に第１，２日目の処理で集約元エージェント702に登録されている全ての集約元エージェントB，Cについて処理を終えているから、第３日目のステップ1303では、再び全ての集約元エージェントを未処理の状態に戻して置き換えを続ける。従って、ステップ1303では、実行エージェントBが置き換え対象とされる。
【００３７】
第３日目の処理のステップ1304と1305では、置き換え対象のジョブ実行エージェントBで同時実行されているジョブとしてJob3とJob4があるので、ステップ1306で、Job4を置き換えるものと決定しJob3を置き換え対象から除く。なお、このステップ1306の処理では、ステップ1305で検出された同時実行されているジョブのうち既に前回以前のステップ1305の処理で当日実行するジョブとして決定されたものについては除いて置き換えるジョブを決定するので、Job3とJob4のうち前回（第１日目の処理）のステップ1306で置き換えたJob3ではなく、Job4を置き換えるジョブとして決定している。同時実行されているジョブが３つ以上あった場合も同様であり、順に１つ１つ置き換えるジョブとして決定していく。そのために、ステップ1306で同時実行されているジョブのうち当日実行するジョブとして決定されたものについては所定のワーク用記憶領域に記憶しておくものとする。結果として、第３日目のステップ1307では、Job3を除きジョブ実行エージェントBで実行しているジョブの実行エージェントがジョブ実行エージェントDに置き換えられる。
【００３８】
なお、順次ステップ1306で置き換えるジョブとして決定して処理していくことで、同時実行されているジョブの全てが処理済みになったら、それらの同時実行されているジョブについては未処理の状態に戻して、以降のステップ1306の処理を行っていくものとする。
【００３９】
以上のようにして、ジョブの実行が代行される集約元のジョブ実行エージェントを１日毎に変更し、集約元のジョブ実行エージェントで同時実行していたジョブの中で集約先のジョブ実行エージェントで当日実行する１個のジョブは、集約元ジョブ実行エージェントのジョブを代行実行する日ごとに変更して、集約元エージェント702が指定されたジョブの実行エージェントを集約先の実行エージェントに置き換えたスケジュールを作成する。
【００４０】
図１４は、ジョブ管理マネージャーA101のエージェントの負荷予測データからリソース限界となるピーク時間帯を洗い出し、そのピーク時間帯に実行するジョブのうち、開始時刻の変更が可能で期限までに猶予があるジョブの開始時刻を調整することで、処理量あふれによるリソース不足を発生させないようなジョブ定義を作成する処理である。
【００４１】
ジョブ管理マネージャーA101のエージェント負荷予測データ作成部206は、エージェントの負荷予測データベース211（図１０）の内容を取得する（ステップ1401）。負荷情報（平均ＣＰＵ使用率）1003の値が100%を超えている期間1001がないかを確認する（ステップ1402）。全ての期間1001について負荷情報1003が100%以内であれば、現状のジョブ定義データベース207の定義データに基づくスケジュールのジョブ実行エージェントを全て集約先のジョブ実行エージェントに置き換えても問題は無いということであるから、ジョブ定義データベース207の実行エージェント名402の値を集約先のジョブ実行エージェント（ここではジョブ実行エージェントD104）に変更して、終了する（ステップ1410）。
【００４２】
ステップ1402で100%を超える期間1001があれば、その期間1001に対応するジョブ名1002に複数のジョブが指定されているかどうかを確認する（ステップ1403）。複数のジョブが指定されていたら、それらのジョブの定義をジョブ定義データベース207から取得し（ステップ1404）、開始時刻変更可否406が可となっているジョブを探す（ステップ1405）。開始時刻変更可否406が可であるジョブが存在したら、そのジョブの開始時刻をコンピュータの負荷が低くなってから開始するように調整する（ステップ1406）。ジョブの開始時刻を調整した後、そのジョブがジョブ終了期限405に指定された時刻までに終了可能であるかを確認する（ステップ1407）。終了可能であれば、そのジョブの開始時刻を調整した結果で負荷予測データを再作成して（例えば、図１０→図１１のように再作成する）、エージェントの負荷予測データベース211を更新する（ステップ1408）。次に、再度、負荷情報（平均ＣＰＵ使用率）1003の値が100%を超えているかを確認する（ステップ1402）。全ての期間1001について負荷情報1003が100%以内であれば、ジョブ定義データベース207の該当ジョブのスケジュールを変更し（上述したジョブの開始時刻の調整を行ったものについては、スケジュール情報404の開始時刻を変更する）、ジョブの実行エージェント名402を集約先のジョブ実行エージェントに変更して、終了する（ステップ1402）。
【００４３】
ステップ1403で複数のジョブが指定されていない場合、ステップ1405で開始時刻が変更可能なジョブが無い場合、および、ステップ1407でジョブ終了期限までに終了できない場合は、何れも、エージェント負荷情報データベース211は更新せず、負荷が高い時間帯が存在することを端末201に通知して終了する（ステップ1409）。なお、負荷が高い時間帯が存在することが端末201に通知された場合には、該当する期間に実行予定のジョブのジョブ定義データベース207のジョブ終了期限405を延ばすなどの対処を行った後、再び集約の指示を出せばよい。
【００４４】
上記の処理でジョブ定義データベース207が更新されたら、端末201から通常のスケジュール作成の指示を入力し、当該ジョブ定義データベース207の内容に基づくジョブスケジュールデータを作成してジョブスケジュールデータベース208に登録し、当該スケジュールに従ってジョブ実行を行えばよい。
【００４５】
なお、上記実施形態では、１日を単位として繰り返す処理について集約する例で説明したが、１日と限らず、任意の期間毎に繰り返す処理を集約する場合も同様である。また、上記実施形態では、図１３の処理により負荷情報を収集するスケジュールを作成したが、このようなスケジュールの作成方式はどのようなものでもよい。要するに、集約元ジョブ実行エージェントで実行していた複数のジョブが少なくとも１回は集約先ジョブ実行エージェントで実行されてその負荷情報が取得できるようなスケジュールを作成すればよい。
【符号の説明】
【００４６】
１０１：ジョブ管理マネージャーA、１０２：ジョブ実行エージェントB、１０３：ジョブ実行エージェントC、１０４：ジョブ実行エージェントD、１０５：ネットワーク、２０１：端末、２０２：ジョブ定義データベース参照更新部、２０３：ジョブ実行スケジュール作成部、２０４：ジョブ実行管理部、２０５：エージェント入れ替え時設定処理部、２０６：エージェント負荷予測データ作成部、２０７：ジョブ定義データベース、２０８：ジョブスケジュールデータベース、２０９：ジョブ履歴データベース、２１０：エージェント集約情報データベース、２１１：エージェントの負荷予測データベース、３０１：ジョブ実行部、３０２：ジョブ実行時の負荷情報収集送信部、３０３：エージェント負荷情報データベース。
【図１】
0005441179.tif 000002
【図２】
0005441179.tif 000003
【図３】
0005441179.tif 000004
【図４】
0005441179.tif 000005
【図５】
0005441179.tif 000006
【図６】
0005441179.tif 000007
【図７】
0005441179.tif 000008
【図８】
0005441179.tif 000009
【図９】
0005441179.tif 000010
【図１０】
0005441179.tif 000011
【図１１】
0005441179.tif 000012
【図１２】
0005441179.tif 000013
【図１３】
0005441179.tif 000014
【図１４】
0005441179.tif 000015