(57)【要約】【課題】パラメトリックジョブのタスクを実行するときに、タスクの処理対象であるデータの存在場所に依存する性能低下を抑制すること。【解決手段】ジョブ処理システム８のスケジュールサーバ１は、新たなタスクを実行するときのデータの取得先について、処理対象のデータセット２４が割り当て対象の実行サーバ２内のデータ配置領域２１にすでに配置されているときには、その配置されているデータセット２４をデータの取得先とし、処理対象のデータセット２４がどの実行サーバ２内のデータ配置領域２１にも配置されていないときには、外部記憶装置９３ｂ内のデータセット２４をデータの取得先とし、処理対象のデータセット２４が割り当て対象の実行サーバ２とは別の実行サーバ２内のデータ配置領域２１にすでに配置されているときには、別の実行サーバ２に配置されているデータセット２４をデータの取得先とする。【選択図】図１
2010231502.tif 000002
【特許請求の範囲】
【請求項１】
パラメトリックジョブの各タスクを実行する実行サーバと、パラメトリックジョブから各タスクを抽出して各前記実行サーバに実行を依頼するスケジュールサーバとを含めて構成されるジョブ処理システムによるジョブ処理方法であって、
前記スケジュールサーバは、スケジューラと、データ配置管理テーブルと、を有し、
前記実行サーバは、データ配置領域と、データ処理部と、データ配置部と、外部記憶装置とを有し、
前記データ配置部は、各タスクの処理対象のデータセットを自装置の前記データ配置領域に読み込むとともに、その前記データセットと自装置である前記実行サーバとの対応情報を、前記スケジューラに通知し、
前記スケジューラは、
通知される前記データセットと前記実行サーバとの対応情報について、さらに、その前記データセットを処理対象として実行中のタスクとを対応づけて前記データ配置管理テーブルに格納し、
タスクの実行可能な前記実行サーバを割り当て対象の前記実行サーバとして選択して新たなタスクを割り当てるときに、新たなタスクの処理対象である前記データセットを、前記データ配置管理テーブルから検索し、割り当て対象の前記実行サーバの前記データ処理部に新たなタスクを実行するときのデータの取得先について、
前記処理対象のデータセットが割り当て対象の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、その配置されている前記データセットをデータの取得先とし、
前記処理対象のデータセットが割り当て対象の前記実行サーバとは別の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、別の前記実行サーバに配置されている前記データセットをデータの取得先とすることを特徴とする
ジョブ処理方法。
【請求項２】
前記スケジューラは、前記処理対象のデータセットが複数の割り当て対象の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、複数の配置されている前記実行サーバのうちの障害が発生していない前記実行サーバの前記データセットを、障害が発生した前記実行サーバの前記データセットよりも優先して、データの取得先として選択することを特徴とする
請求項１に記載のジョブ処理方法。
【請求項３】
前記スケジューラは、前記処理対象のデータセットが割り当て対象の前記実行サーバとは別の複数の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、複数の前記実行サーバのうちのタスクの割当率がもっとも少ない前記実行サーバ内の前記データ配置領域をデータの取得先とすることを特徴とする
請求項１または請求項２に記載のジョブ処理方法。
【請求項４】
前記データ処理部は、実行するタスクが異常終了することを検知して前記スケジューラに通知し、
前記スケジューラは、所定の前記実行サーバ内の前記データ処理部から複数のタスクについての異常終了の通知を受けると、その所定の前記実行サーバを、新たなタスクを割り当てるときの割り当て対象の前記実行サーバから除外することを特徴とする
請求項１から請求項３のいずれか１項に記載のジョブ処理方法。
【請求項５】
前記データ処理部は、実行するタスクが異常終了することを検知して前記スケジューラに通知し、
前記スケジューラは、異常終了の通知を受けたタスクを、前記データ配置管理テーブルの実行中のタスクから検索し、検索されたエントリの実行中のタスクをクリアすることを特徴とする
請求項１から請求項３のいずれか１項に記載のジョブ処理方法。
【請求項６】
前記スケジューラは、前記処理対象のデータセットがどの前記実行サーバ内の前記データ配置領域にも配置されていないときには、前記外部記憶装置内の前記データセットをデータの取得先とすることを特徴とする
請求項１から請求項５のいずれか１項に記載のジョブ処理方法。
【請求項７】
請求項１から請求項６のいずれか１項に記載のジョブ処理方法を、前記ジョブ処理システムの各サーバに実行させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項８】
パラメトリックジョブの各タスクを実行する実行サーバと、パラメトリックジョブから各タスクを抽出して各前記実行サーバに実行を依頼するスケジュールサーバとを含めて構成されるジョブ処理システムであって、
前記スケジュールサーバは、スケジューラと、データ配置管理テーブルと、を有し、
前記実行サーバは、データ配置領域と、データ処理部と、データ配置部と、外部記憶装置とを有し、
前記データ配置部は、各タスクの処理対象のデータセットを自装置の前記データ配置領域に読み込むとともに、その前記データセットと自装置である前記実行サーバとの対応情報を、前記スケジューラに通知し、
前記スケジューラは、
通知される前記データセットと前記実行サーバとの対応情報について、さらに、その前記データセットを処理対象として実行中のタスクとを対応づけて前記データ配置管理テーブルに格納し、
タスクの実行可能な前記実行サーバを割り当て対象の前記実行サーバとして選択して新たなタスクを割り当てるときに、新たなタスクの処理対象である前記データセットを、前記データ配置管理テーブルから検索し、割り当て対象の前記実行サーバの前記データ処理部に新たなタスクを実行するときのデータの取得先について、
前記処理対象のデータセットが割り当て対象の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、その配置されている前記データセットをデータの取得先とし、
前記処理対象のデータセットがどの前記実行サーバ内の前記データ配置領域にも配置されていないときには、前記外部記憶装置内の前記データセットをデータの取得先とし、
前記処理対象のデータセットが割り当て対象の前記実行サーバとは別の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、別の前記実行サーバに配置されている前記データセットをデータの取得先とすることを特徴とする
ジョブ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ処理方法、ジョブ処理プログラムを格納したコンピュータ読み取り可能な記録媒体、および、ジョブ処理システムの技術に関する。
【背景技術】
【０００２】
複数の計算機から構成されるシステムに対して、一定量のデータをまとめて一括処理を行うバッチジョブのスケジューリングを行う方法が、多数開示されている。
特許文献１には、パラメトリックジョブのスケジューリングを行う方法が、開示されている。パラメトリックジョブとは、バッチジョブのうちジョブ定義が同一でパラメタを変更して繰り返し実行するタイプのジョブである。
【０００３】
従来のジョブスケジュール方法では、パラメトリックジョブからパラメタを変更して実行されるそれぞれのジョブであるタスクを実行する計算機を選択する方法として、計算機の負荷状態、ジョブの予測実行時間、電力またはリソースの予測消費量を基準としている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２７２６５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ジョブの実行時間は、ＣＰＵ性能のほかに、通信や入出力による待ち時間にも大きく影響される。これらの通信や入出力の発生頻度は、ジョブで実行されるプログラムがアクセスするデータの存在場所に依存する。
しかし、従来のジョブスケジュール方法では、データの存在場所を基準としたスケジュールが組まれていないため、データ転送待ちや入出力待ちの発生による余分な処理時間が発生する可能性がある。また、ジョブスケジュールにおいて、計算機障害やタスク異常終了発生後の再実行時の性能最適化が考慮されていない。
【０００６】
そこで、本発明は、前記した問題を解決し、パラメトリックジョブのタスクを実行するときに、タスクの処理対象であるデータの存在場所に依存する性能低下を抑制することを、主な目的とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するために、本発明は、パラメトリックジョブの各タスクを実行する実行サーバと、パラメトリックジョブから各タスクを抽出して各前記実行サーバに実行を依頼するスケジュールサーバとを含めて構成されるジョブ処理システムによるジョブ処理方法であって、
前記スケジュールサーバが、スケジューラと、データ配置管理テーブルと、を有し、
前記実行サーバが、データ配置領域と、データ処理部と、データ配置部と、外部記憶装置とを有し、
前記データ配置部が、各タスクの処理対象のデータセットを自装置の前記データ配置領域に読み込むとともに、その前記データセットと自装置である前記実行サーバとの対応情報を、前記スケジューラに通知し、
前記スケジューラが、
通知される前記データセットと前記実行サーバとの対応情報について、さらに、その前記データセットを処理対象として実行中のタスクとを対応づけて前記データ配置管理テーブルに格納し、
タスクの実行可能な前記実行サーバを割り当て対象の前記実行サーバとして選択して新たなタスクを割り当てるときに、新たなタスクの処理対象である前記データセットを、前記データ配置管理テーブルから検索し、割り当て対象の前記実行サーバの前記データ処理部に新たなタスクを実行するときのデータの取得先について、
前記処理対象のデータセットが割り当て対象の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、その配置されている前記データセットをデータの取得先とし、
前記処理対象のデータセットが割り当て対象の前記実行サーバとは別の前記実行サーバ内の前記データ配置領域にすでに配置されているときには、別の前記実行サーバに配置されている前記データセットをデータの取得先とすることを特徴とする。
その他の手段は、後記する。
【発明の効果】
【０００８】
本発明によれば、パラメトリックジョブのタスクを実行するときに、タスクの処理対象であるデータの存在場所に依存する性能低下を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に関するジョブ処理システムを示す構成図である。
【図２】本発明の一実施形態に関するスケジュールサーバが扱う各データの一例として、タスク実行前（初期化後）の状態を示す構成図である。
【図３】本発明の一実施形態に関する図２のタスク実行前（初期化後）の状態に対応する、ジョブ処理システムにおけるタスク割当の一例を示す説明図である。
【図４】本発明の一実施形態に関するスケジュールサーバが扱う各データの一例として、タスク実行中の状態を示す構成図である。
【図５】本発明の一実施形態に関する図４のタスク実行中の状態に対応する、ジョブ処理システムにおけるタスク割当の一例を示す説明図である。
【図６】本発明の一実施形態に関するスケジュールサーバが扱う各データの一例として、タスク再実行の状態を示す構成図である。
【図７】本発明の一実施形態に関する図６のタスク再実行の状態に対応する、ジョブ処理システムにおけるタスク割当の一例を示す説明図である。
【図８】本発明の一実施形態に関するスケジューラが実行する、スケジュール処理を示すフローチャートである。
【図９】本発明の一実施形態に関するスケジューラが実行する、データ選択・タスク実行依頼処理を示すフローチャートである。
【図１０】本発明の一実施形態に関するスケジューラが実行する、タスク実行監視処理を示すフローチャートである。
【図１１】本発明の一実施形態に関するタスク管理部が実行する、タスクの実行処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００１１】
図１は、ジョブ処理システム８を示す構成図である。ジョブ処理システム８は、パラメトリックジョブをタスクに分割するスケジュールサーバ１と、スケジュールサーバ１からのタスクの割当を受けて実行する１台以上の実行サーバ２とが、通信路９で接続されて構成される。タスクは、パラメトリックジョブの実行単位である。
【００１２】
スケジュールサーバ１は、ハードウェア構成として、ＣＰＵ（Central Processing Unit）９１ａと、主記憶装置９２ａと、通信インタフェース９４ａと、入出力インタフェース９５ａとを有するコンピュータとして構成され、外部記憶装置９３ａと接続されている。
実行サーバ２は、ハードウェア構成として、ＣＰＵ９１ｂと、主記憶装置９２ｂと、通信インタフェース９４ｂと、入出力インタフェース９５ｂとを有するコンピュータとして構成され、外部記憶装置９３ｂと接続されている。
ＣＰＵ９１ａ，９１ｂは、それぞれ、主記憶装置９２ａ，９２ｂ上のプログラムを読み込んで実行する。
主記憶装置９２ａ，９２ｂには、各処理部を構成するためのプログラムおよびその各処理部が処理対象とする各データがそれぞれ格納されている。
なお、各処理部を構成するプログラムや各処理部が処理対象とする各データは、サーバに設けられたＨＤＤ、各種半導体メモリ及び光ディスク等の不揮発記憶媒体（不図示）に格納し、必要に応じて適宜読み出すようにしてよく又通信路を介して外部のサーバ装置からダウンロードするように構成してもよい。
外部記憶装置９３ａ，９３ｂには、それぞれ、各処理部が処理対象とする各データが格納されている。
通信インタフェース９４ａ，９４ｂは、それぞれ、通信路９と接続して、相手側の装置との通信を中継するためのネットワークインタフェースである。
入出力インタフェース９５ａ，９５ｂは、それぞれ、外部記憶装置９３ａ，９３ｂのデータアクセスを実行するための、ローカルのインタフェースである。
【００１３】
スケジュールサーバ１は、スケジューラ１０と、データ配置管理テーブル１１と、タスク管理テーブル１２と、実行サーバ管理テーブル１３とを有し、データ配置情報１４にアクセス可能である。
実行サーバ２は、タスク管理部２０と、データ配置領域２１と、データ処理部２２と、データ配置部２３とを有し、データセット２４にアクセス可能である。
【００１４】
スケジューラ１０は、データ配置情報１４が与えられると、そのデータ配置情報１４をもとに、各実行サーバ２へのタスクの割り当てをスケジューリングする。
データ配置管理テーブル１１は、データ配置情報１４をもとに、データごとにそのデータの配置先の実行サーバ２と、そのデータを実行しているタスクと、を示す情報を格納する。
タスク管理テーブル１２は、タスクごとに、そのタスクの割り当てに関する情報を格納する。
実行サーバ管理テーブル１３は、タスクの割当が可能な実行サーバ２を選択するときに参照されるデータとして、実行サーバ２ごとの稼動状態を格納する。
データ配置情報１４は、外部記憶装置９３ａに格納されており、データ配置領域２１に配置されているデータセット２４のデータと、そのデータ配置部２３が属する実行サーバ２との対応情報を格納する。
【００１５】
なお、スケジューラ１０は、データ配置管理テーブル１１を参照して、以下の（１）〜（４）の優先順位で、各実行サーバ２に各タスクを割り当てることで、実行サーバ２間でのデータ転送がなるべく少なくなるようにする。つまり、データの配置状況を参照したスケジューリングの最適化により転送待ちや入出力待ちを削減するので、ＣＰＵ利用率は向上する。このため、ＣＰＵ負荷を基準としたスケジュールと比べてもＣＰＵ利用率は遜色なく、転送待ちや入出力待ちが発生しない分だけ処理時間が短縮される。
【００１６】
（１）自計算機の配置データ：割り当て対象の実行サーバ２（自計算機）内のデータ配置領域２１にすでに配置されているデータセット２４である。このデータを用いることで、他装置との通信（データコピー処理）が発生しないため、性能劣化を抑制することができる。
（２）障害サーバのデータ：割り当て対象の実行サーバ２内のデータ配置領域２１にすでに配置されているデータセット２４である。前記（１）との違いは、（１）はデータＩＤが示すデータの全部が配置済みであるのに対し、（２）はデータＩＤが示すデータの全部が配置済みとは限らず、障害サーバのデータコピーなどの一時的な位置不定の配置データである点である。このデータを用いることで、他装置との通信（データコピー処理）をある程度少なくできるため、（１）ほどではないものの性能劣化を抑制することができる。
（３）非配置データ：割り当て対象の実行サーバ２（自計算機）にも、その他の実行サーバ２（他計算機）にも、まだ配置されていないデータセット２４である。このデータを用いることで、データ処理部２２は、外部記憶装置９３ｂから入出力インタフェース９５ｂ経由でデータセット２４を読み込むため、他装置との通信（データコピー処理）が発生しないため、性能劣化を抑制することができる。
（４）他計算機の配置データ：割り当て対象の実行サーバ２とは別の実行サーバ２（他計算機）内のデータ配置領域２１にすでに配置されているデータセット２４である。このデータを用いるときには、他計算機のデータ配置領域２１から自計算機のデータ配置領域２１への通信（データコピー処理）が発生してしまうため、性能劣化がある程度発生してしまう。
【００１７】
タスク管理部２０は、スケジューラ１０からのタスクの割り当ての指示を受け、データ処理部２２に対してそのタスクの実行を指示する。
データ配置領域２１は、データセット２４が配置される記憶領域である。
データ処理部２２は、割り当てられたタスクの処理対象のデータセット２４をデータ配置領域２１から読み出して、割り当てられたタスクを処理する。なお、データ処理部２２は、処理済みのデータセット２４を、データ配置領域２１に残しておいてもよいし、データ配置領域２１から削除してもよい。
データ配置部２３は、データ処理部２２が処理するタスクの処理対象としてのデータセット２４を、データ配置領域２１に配置する。そして、データ配置部２３は、データセット２４の配置結果を、データ配置情報１４としてスケジュールサーバ１に通知する。スケジュールサーバ１は、受信したデータ配置情報１４を、外部記憶装置９３ａに格納してもよいし、データ配置情報１４を要求したスケジューラ１０に直接通知してもよい。
データセット２４は、外部記憶装置９３ｂに格納されており、一定のレコード数やバイト数ごとのデータに分割可能なデータである。なお、パラメトリックジョブを構成する複数のタスク間では、そのタスクを実行するデータ処理部２２は互いに同じであるものの、そのデータ処理部２２の処理対象であるデータセット２４が互いに異なる。
【００１８】
図２は、スケジュールサーバ１が扱う各データの一例として、タスク実行前（初期化後）の状態を示す構成図である。
【００１９】
データ配置管理テーブル１１は、データＩＤ１０１と、サーバＩＤ１０２と、タスクＩＤ１０３とを対応づけて格納する。
データＩＤ１０１は、データセット２４の各データのＩＤである。
サーバＩＤ１０２は、データＩＤ１０１が示すデータの配置先であるデータ配置領域２１が含まれる実行サーバ２のＩＤである。サーバＩＤ１０２の空欄「−」は、データＩＤ１０１が示すデータの配置先が存在しないことを示す。
タスクＩＤ１０３は、データＩＤ１０１が示すデータを処理するタスクのＩＤである。タスクＩＤ１０３の空欄「−」は、データＩＤ１０１が示すデータを処理するタスクが存在しないことを示す。
なお、図２のタスク実行前の状態では、スケジューラ１０が、後記するデータ配置情報１４に含まれるデータＩＤおよびサーバＩＤの組を、データ配置管理テーブル１１に書き込む。
【００２０】
タスク管理テーブル１２は、タスクＩＤ１１１と、タスク状態１１２と、データＩＤ１１３と、サーバＩＤ１１４とを対応づけて格納する。
タスクＩＤ１１１は、実行中または実行したタスクのＩＤである。
タスク状態１１２は、タスクＩＤ１１１が示すタスクの状態である。タスク状態１１２には、例えば、実行中、正常終了、異常終了、および、中断（実行サーバ２の障害などが原因である）という値が設定される。
データＩＤ１１３は、タスクＩＤ１１１が示すタスクの処理対象であるデータのＩＤである。
サーバＩＤ１１４は、タスクＩＤ１１１が示すタスクを実行する実行サーバ２のＩＤである。
なお、図２のタスク実行前の状態では、どのタスクも処理されていないので、エントリが存在しない。
【００２１】
実行サーバ管理テーブル１３は、サーバＩＤ１２１と、サーバ状態１２２と、実行可能タスク数１２３と、を対応づけて格納する。
サーバＩＤ１２１は、実行サーバ２のＩＤである。
サーバ状態１２２は、サーバＩＤ１２１が示す実行サーバ２の状態である。サーバ状態１２２には、例えば、「正常」、「障害」、および、「実行依頼禁止」という値が設定される。
実行可能タスク数１２３は、サーバＩＤ１２１が示す実行サーバ２の現在における同時実行可能なタスク数の上限値である。
なお、図２のタスク実行前の状態では、各実行サーバ２についての静的な情報（設定ファイルなどから収集した情報など）や、動的な情報（ベンチマークプログラムの実行結果や、ＯＳのタスクマネージャの情報など）をスケジュールサーバ１が収集して、実行サーバ管理テーブル１３に設定する。
【００２２】
データ配置情報１４は、全データ数、ならびに、データＩＤおよびサーバＩＤの対応情報を格納する。
全データ数＝ｎは、データセット２４の分割数である。
「データＩＤ」は、データセット２４の各データのＩＤである。
「サーバＩＤ」は、「データＩＤ」が示すデータの配置先であるデータ配置領域２１が含まれる実行サーバ２のＩＤである。「サーバＩＤ」の空欄「−」は、「データＩＤ」が示すデータの配置先が存在しないことを示す。
ただし、データＩＤが数字の場合は全データ数ｎからデータＩＤを類推できるので、どの実行サーバ２のデータ配置領域２１にも存在しないデータのデータＩＤはデータ配置情報１４に記述しなくてもよい。
【００２３】
図３は、図２のタスク実行前（初期化後）の状態に対応する、ジョブ処理システム８におけるタスク割当の一例を示す説明図である。
以下、実行サーバ２の符号とそのサーバＩＤとの対応について、実行サーバ２ａのサーバＩＤを「サーバＡ」とし、実行サーバ２ｂのサーバＩＤを「サーバＢ」とし、実行サーバ２ｃのサーバＩＤを「サーバＣ」とし、実行サーバ２ｄのサーバＩＤを「サーバＤ」とする。
そして、図２および図３において、データ配置部２３は、各データセット２４（「データ１」〜「データ６」）を、外部記憶装置９３ｂからデータ配置領域２１に読み込むとともに、その読み込み処理により配置されたデータの配置情報をデータ配置情報１４（図２）として書き出す。
【００２４】
図４は、スケジュールサーバ１が扱う各データの一例として、タスク実行中の状態を示す構成図である。この図４の状態は、図２の状態から時間が経過した後の状態を示す。
図５は、図４のタスク実行中の状態に対応する、ジョブ処理システム８におけるタスク割当の一例を示す説明図である。なお、実行サーバ２ｂ内の「データ３」は、（４）他計算機の配置データとして実行サーバ２ａからコピーされた仮配置のデータであるため、図５では外枠を破線で示している。
【００２５】
まず、スケジューラ１０は、「サーバＡ」を自計算機として、タスクの割当を実行する。
「サーバＡ」の１つめに割り当てるタスク「タスク１」は、（１）自計算機の配置データである「データ１」を実行対象とするように、割り当てられる。このタスク割当結果が、データＩＤ１０１＝「データ１」のレコード、および、タスクＩＤ１１１＝「タスク１」のレコードに書き込まれる。
ここで、「サーバＡ」の実行可能タスク数１２３は「１」であり（図２）、１つのタスクを割り当てた結果、「サーバＡ」の実行可能タスク数１２３は「０」になる（図４）。
【００２６】
次に、スケジューラ１０は、「サーバＢ」を自計算機として、タスクの割当を実行する。
「サーバＢ」の１つめに割り当てるタスク「タスク２」は、（１）自計算機の配置データである「データ４」を実行対象とするように、割り当てられる。このタスク割当結果が、データＩＤ１０１＝「データ４」のレコード、および、タスクＩＤ１１１＝「タスク２」のレコードに書き込まれる。
「サーバＢ」の２つめに割り当てるタスク「タスク６」は、（４）他計算機の配置データである「データ３」を実行対象とするように、割り当てられる。このタスク割当結果が、タスクＩＤ１１１＝「タスク６」のレコードに書き込まれる。このように、（３）非配置データ、または、（４）他計算機の配置データを使用するときには、タスク管理テーブル１２への反映を行うものの、データ配置管理テーブル１１への反映は行わない。
ここで、「サーバＢ」の実行可能タスク数１２３は「２」であり（図２）、２つのタスクを割り当てた結果、「サーバＢ」の実行可能タスク数１２３は「０」になる（図４）。
【００２７】
そして、スケジューラ１０は、「サーバＣ」を自計算機として、タスクの割当を実行する。
「サーバＣ」の１つめに割り当てるタスク「タスク４」は、（１）自計算機の配置データである「データ５」を実行対象とするように、割り当てられる。このタスク割当結果が、データＩＤ１０１＝「データ５」のレコード、および、タスクＩＤ１１１＝「タスク４」のレコードに書き込まれる。
「サーバＣ」の２つめに割り当てるタスク「タスク３」は、（３）非配置データである「データ７」を実行対象とするように、割り当てられる。このタスク割当結果が、データＩＤ１０１＝「データ７」のレコード、および、タスクＩＤ１１１＝「タスク３」のレコードに書き込まれる。
ここで、「サーバＣ」の実行可能タスク数１２３は「２」であり（図２）、２つのタスクを割り当てた結果、「サーバＣ」の実行可能タスク数１２３は「０」になる（図４）。
【００２８】
さらに、スケジューラ１０は、「サーバＤ」を自計算機として、タスクの割当を実行する。
「サーバＤ」の１つめに割り当てるタスク「タスク５」は、（１）自計算機の配置データである「データ６」を実行対象とするように、割り当てられる。このタスク割当結果が、データＩＤ１０１＝「データ６」のレコード、および、タスクＩＤ１１１＝「タスク５」のレコードに書き込まれる。
ここで、「サーバＤ」の実行可能タスク数１２３は「１」であり（図２）、１つのタスクを割り当てた結果、「サーバＤ」の実行可能タスク数１２３は「０」になる（図４）。
【００２９】
以上説明した各タスク（タスクＩＤ＝１〜６）は、データ処理部２２によって、その実行に関する状態が、タスク状態１１２に更新され続ける。
【００３０】
図６は、スケジュールサーバ１が扱う各データの一例として、タスク再実行の状態を示す構成図である。この図６の状態は、図４の状態から時間が経過した後の状態を示す。この図６の状態は、障害サーバとして実行サーバ２ｄ（サーバＤ）に障害が発生したことを想定している。
図７は、図６のタスク再実行の状態に対応する、ジョブ処理システム８におけるタスク割当の一例を示す説明図である。
【００３１】
「タスクＩＤ＝１」、「タスクＩＤ＝３」、および、「タスクＩＤ＝６」のタスクは、それぞれ図４の状態と同じように実行中である。
「タスクＩＤ＝２」、「タスクＩＤ＝４」、および、「タスクＩＤ＝５」のタスクは、それぞれ中断または終了したため、データ配置管理テーブル１１およびタスク管理テーブル１２から該当する情報が削除される。
「タスクＩＤ＝７」のタスクは、中断した「タスクＩＤ＝５」のタスクを再実行するタスクである。「タスク７」は、（２）障害サーバのデータである「データ６」を実行対象とするように、割り当てられる。このタスク割当結果が、タスクＩＤ１１１＝「タスク７」のレコードに書き込まれる。また、データＩＤ１０１＝「データ４」のレコードは、そのサーバＩＤが、「データ６」を格納していた「サーバＤ」の障害により「不定」に書き換わっており、そのタスクＩＤは、「−（空欄）」になる。
なお、（２）障害サーバのデータを利用するときには、実行サーバ２ｃは、実行サーバ２ａ上に存在する「データ６」の一部を通信処理により読み込むとともに、「データ６」の残りを外部記憶装置９３ｂから読み込む。
【００３２】
図８（ａ）は、スケジューラ１０が実行する、スケジュールのメイン処理を示すフローチャートを示す。
【００３３】
Ｓ１０１として、タスクスケジュール初期化処理（図８（ｂ）参照）を呼び出す。
Ｓ１０２として、実行サーバ管理テーブル１３から、タスク割当が可能な実行サーバ２を検索し、その実行サーバ２が発見できたか否かを判定する。タスク割当が可能な実行サーバ２とは、実行サーバ管理テーブル１３におけるサーバ状態が「正常」、かつ、実行可能タスク数が「１」以上のサーバＩＤに対応する実行サーバ２である。Ｓ１０２でＹｅｓならＳ１０３へ進み、ＮｏならＳ１０４へ進む。
【００３４】
Ｓ１０３として、データ選択・タスク実行依頼処理（図９参照）を呼び出す。
Ｓ１０４として、タスク実行監視処理を呼び出し（図１０参照）、実行依頼したタスクの終了を待つ。
Ｓ１０５として、タスク未割当のデータも実行中のタスクも存在しないか否かを判定する。この判定条件は、タスクＩＤ１１１が「（−）未設定」のエントリが存在しないこと、かつ、タスク状態１１２が「実行中」であるエントリが存在しないことの両方を同時に満たす旨の条件である。Ｓ１０５でＹｅｓなら終了し、ＮｏならＳ１０２へ進む。
【００３５】
図８（ｂ）は、スケジューラ１０が実行する、タスクスケジュール初期化処理（Ｓ１０１）のフローチャートを示す。
【００３６】
Ｓ２０１として、パラメトリックジョブの再実行か否かを判定する。Ｓ２０１でＹｅｓならＳ２０５へ進み、ＮｏならＳ２０２へ進む。
具体的には、パラメトリックジョブを一度実行して、異常終了したタスクが存在した場合は、スケジューラ１０が主記憶装置９２ａまたは外部記憶装置９３ａにパラメトリックジョブに異常終了したタスクが含まれていたことを示す情報を記録してパラメトリックジョブ実行時にこの情報の有無を調べるか、ユーザがパラメトリックジョブを実行する時に再実行であることを指定する。
【００３７】
Ｓ２０２として、データ配置情報１４を読み込み、データ配置情報１４に記載されたデータ数分のエントリを有するデータ配置管理テーブル１１を割り当て、データ配置情報１４に記載されたデータＩＤとサーバＩＤとを代入する。
Ｓ２０３として、タスク管理テーブル１２を初期化する。
Ｓ２０４として、実行サーバ管理テーブル１３を初期化し、そのサーバごとのエントリを代入する。サーバＩＤ１２１と実行可能タスク数１２３は、例えば設定ファイルから取得する。サーバ状態１２２は、例えば各実行サーバ２のタスク管理部２０に問い合わせて取得する。
【００３８】
Ｓ２０５として、異常終了したタスクで処理していたデータを処理可能とするため、タスク状態１１２が「異常終了」であるエントリのタスクＩＤ１１１を求め、そのタスクＩＤ１１１と一致するタスクＩＤ１０３をクリアする。
【００３９】
図９は、スケジューラ１０が実行する、データ選択・タスク実行依頼処理（Ｓ１０３）のフローチャートを示す。
【００４０】
Ｓ３０１として、（１）自計算機の配置データが存在するか否かを判定する。具体的には、タスクを実行する実行サーバ２のサーバＩＤと一致するサーバＩＤ１０２が存在するか否かを判定する。Ｓ３０１でＹｅｓなら、そのエントリのデータＩＤ１０１が示すデータをタスクで処理するデータとして選択し、Ｓ３０６に進む。Ｓ３０１でＮｏなら、Ｓ３０２に進む。
【００４１】
Ｓ３０２として、（２）障害サーバのデータが存在するか否かを判定する。つまり、サーバＩＤ１０２が「不定」のエントリが存在するか否かを判定する。Ｓ３０２でＹｅｓなら、そのエントリのデータＩＤ１０１が示すデータをタスクで処理するデータとして選択し、Ｓ３０６に進む。Ｓ３０２でＮｏなら、Ｓ３０３に進む。
【００４２】
Ｓ３０３として、（３）非配置データが存在するか否かを判定する。つまり、サーバＩＤ１０２が空欄のエントリが存在するか否かを判定する。Ｓ３０３でＹｅｓなら、そのエントリのデータＩＤ１０１が示すデータをタスクで処理するデータとして選択し、Ｓ３０６に進む。Ｓ３０３でＮｏなら、Ｓ３０４に進む。
【００４３】
Ｓ３０４として、（４）他計算機の配置データを選択するため、データ配置管理テーブル１１のエントリを、タスクＩＤ１０３が空欄でないタスク割当済エントリとタスクＩＤ１０３が空欄のタスク未割当エントリに分類し、さらに、タスク割当済エントリ数とタスク未割当エントリ数をサーバＩＤ１０２が異なるエントリごとにカウントする。その後、タスク割当済エントリ数を全エントリ数で割ったタスク割当率をサーバＩＤ１０２ごとに求める。
Ｓ３０５として、タスク割当率がもっとも小さいサーバＩＤ１０２を求め、そのサーバＩＤ１０２のエントリのうちタスクＩＤ１０３が空欄のエントリのデータを、（４）他計算機の配置データとして１つ選択する。
【００４４】
Ｓ３０６として、タスク実行に伴う状態変化を各テーブルに反映する。
まず、タスク管理テーブル１２に新規エントリを割り当て、直前に割り当てたエントリのタスクＩＤ１１１の値に１を加えた値を新規エントリのタスクＩＤ１１１に代入し、「実行中」を新規エントリのタスク状態１１２に代入し、タスクを実行する実行サーバ２のサーバＩＤを新規エントリのサーバＩＤ１１３に代入する。
次に、Ｓ３０１〜Ｓ３０５で求めたデータ配置管理テーブル１１のエントリのデータＩＤ１０２をデータＩＤ１１４に代入する。
【００４５】
Ｓ３０７として、タスクＩＤ１０３に割り当てたデータ配置管理テーブル１１の新規エントリのタスクＩＤ１１１を代入し、サーバＩＤ１０２にタスクを実行する実行サーバ２のサーバＩＤを代入する。この代入処理は、タスク実行により、データがデータ配置領域２１にロードまたは転送されることで、データの配置状態が変化するためである。これにより、タスクが途中で異常終了した後に再実行する場合、再実行前と同じサーバに実行依頼されるようになり、再実行時の性能が向上する。
【００４６】
Ｓ３０８として、タスクを実行する実行サーバ２のサーバＩＤと一致するエントリをサーバＩＤ１２１から求め、そのエントリの実行可能タスク数１２３を１つ減らす。
Ｓ３０９として、タスクを実行する実行サーバ２のタスク管理部２０に、実行サーバで処理するデータ処理部２２の名称とともに、Ｓ３０１〜Ｓ３０５で選択したエントリのデータＩＤ１０１と、Ｓ３０６で割り当てたエントリのタスクＩＤ１１１とを転送し、タスク実行を依頼する。
【００４７】
図１０は、スケジューラ１０が実行する、タスク実行監視処理（Ｓ１０４）のフローチャートを示す。
【００４８】
Ｓ４０１として、ヘルスチェックなどにより実行サーバ２の状態を監視するとともに、タスクを実行依頼した実行サーバ２のタスク管理部２０からの応答を待つことでタスク状態を監視する。
Ｓ４０２として、タスク管理部２０からの応答により、タスクが終了したか否かを判定する。Ｓ４０２でＹｅｓならＳ４０３へ進み、ＮｏならＳ４０９へ進む。
Ｓ４０３として、終了したタスクのタスクＩＤとタスク終了状態とを受信する。
Ｓ４０４として、受信したタスク終了状態が「正常終了」か否かを判定する。Ｓ４０４でＹｅｓならＳ４０５へ進み、ＮｏならＳ４０６へ進む。
Ｓ４０５として、受信したタスクＩＤと一致するタスクＩＤ１１１を求め、そのエントリのタスク状態１１２を「正常終了」に変更する。そして、処理をＳ４１３へ進める。
【００４９】
Ｓ４０６として、タスク状態１１２を「異常終了」にする。なお、データ処理部２２実行中に実行サーバ２が障害となったときは、スケジューラ１０は、新たなタスクを生成し、処理していたデータの処理を、スケジューラ１０が障害となった実行サーバ２以外の実行サーバ２に依頼する。
Ｓ４０７として、「異常終了」したタスクのサーバＩＤ１１３を求め、そのサーバＩＤ１１３のエントリにおいてタスク状態１１２が「異常終了」である他のタスクが存在するか否かを判定する。Ｓ４０７でＹｅｓならＳ４０８へ進み、ＮｏならＳ４１３へ進む。
Ｓ４０８として、サーバ状態１２２を「実行依頼禁止」にする。そして、処理をＳ４１３へ進める。
これにより、実行サーバ２を実行依頼対象から除外することで、実行サーバ２での新規タスク投入を抑止し、異常終了の原因解析を省力化することができる。
なお、処理するデータが異なるだけで、実行するプログラムなどの他のアプリケーション実行条件が同じタスクが同じ実行サーバ２で複数異常終了した場合は、実行サーバ２に要因があると推定される。
【００５０】
Ｓ４０９として、実行サーバ２の障害を検出したか否かを判定する。以下、障害を検出したサーバを「障害サーバ」とする。
なお、実行サーバ２の障害は、スケジューラ１０またはスケジュールサーバ１またはスケジュールサーバ１に接続された装置が、一定時間ごとに実行サーバ２と通信して実行サーバ２の生存を確認するヘルスチェックなどで検出する。データ配置部２３は、サーバ障害に備えてデータのコピーを１つないし複数のサーバに分散して保持している場合があり、データのコピーの配置場所(サーバ）はわからない場合がある。データのコピーが他の実行サーバ２に存在すれば、データ処理部２２を実行するときにデータ配置部２３によってデータが転送される。Ｓ４０９でＹｅｓならＳ４１０へ進み、ＮｏならＳ４０１へ進む。
Ｓ４１０として、障害サーバのサーバ状態１２２を「障害」に変更する。
Ｓ４１１として、障害サーバのタスク状態１１２を「中断」に変更する。
Ｓ４１２として、障害サーバのタスクＩＤ１０３を空欄に変更し、サーバＩＤ１０２を「不定」に変更する。これにより、Ｓ３０２で選択されるので、そのデータをすぐに他のサーバで実行することで、障害実行サーバ２や交代サーバの再起動をまたずにデータを処理することができる。
なお、データ配置部２３の設定情報の１つであるデータ冗長度をスケジューラ１０があらかじめ取得しておき、データ冗長度が０であれば、データが他のどの実行サーバ２にも存在しないとみなし、Ｓ４１２において、サーバＩＤ１０２を「不定」にするかわりにクリアしてもよい。
【００５１】
Ｓ４１３として、タスクが実行されていた（現在は、正常終了または異常終了またはサーバ障害により中断している）実行サーバ２の実行可能タスク数１２３を＋１する。
【００５２】
図１１（ａ）は、タスク管理部２０が実行する、タスクの実行処理を示すフローチャートである。
【００５３】
Ｓ５０１として、スケジュールサーバ１のスケジューラ１０から、実行するデータ処理部２２の名称とデータＩＤとタスクＩＤとを受信する。
Ｓ５０２として、受信したデータＩＤを環境変数またはデータ処理部２２の引数に設定し、データ処理部２２からデータＩＤを参照可能な状態にする。
Ｓ５０３として、データ処理部２２を実行する。
例えば、「タスク１」は、「データ１」をデータ配置領域２１から読み込み、処理している。
一方、「タスク３」は、「データ７」が「サーバＢ」にないので、外部記憶装置９３ｂからロードしている。
または、「タスク７」は、「データ６」が「サーバＣ」にないので、「サーバＡ」および外部記憶装置９３ｂから、それぞれロードしている。
Ｓ５０４として、データ処理部２２が終了したか否かを判定する。なお、タスク管理部２０は状態（正常終了または異常終了）をスケジューラ１０に通知する。Ｓ５０４でＹｅｓならＳ５０５へ進み、ＮｏならＳ５０４を繰り返す（つまり、データ処理部２２によるタスクの終了を待つ）。
Ｓ５０５として、スケジューラ１０に、タスクＩＤとタスク終了状態とを転送する。
【００５４】
図１１（ｂ）は、タスク管理部２０が実行する、タスクの実行処理を示すフローチャートである。図１１（ａ）との違いは、データ選択をスケジューラ１０に要求する点である。
【００５５】
Ｓ５１１として、スケジュールサーバ１のスケジューラ１０から、実行するデータ処理部２２の名称とタスクＩＤとを受信する。
Ｓ５１２として、データ処理部２２を起動する。
スケジューラ１０は、タスクを実行依頼する前は、Ｓ３０６およびＳ３０８〜Ｓ３０９を行う。ただし、Ｓ３０６でのデータＩＤは、代入しない。
Ｓ５１３として、スケジューラ１０にデータ選択を要求して、処理するデータのデータＩＤを受信する。
スケジューラ１０は、実行サーバ２からデータ選択を依頼されたときは、Ｓ３０１〜Ｓ３０５とＳ３０７を実行する。そして、スケジューラ１０は、Ｓ３０１〜Ｓ３０５にて選択したデータ配置管理テーブル１１のエントリのタスクＩＤ１０３を代入し、そのエントリのデータＩＤ１０１をデータＩＤ１１３に代入する。
【００５６】
Ｓ５１４として、受信したデータＩＤをデータ処理部２２に通知する。
Ｓ５１５として、データ処理部２２からの通知などにより、データ処理部２２で受信したデータＩＤのデータの処理の終了を待つ。
Ｓ５１６として、全データが処理されるか他の実行サーバ２で処理されているか否かを、スケジューラ１０からデータＩＤがないという情報を受信することで、判定する。Ｓ５１６でＹｅｓならＳ５１７へ進み、ＮｏならＳ５１３へ進む。
Ｓ５１７として、スケジュールサーバ１のスケジューラ１０に、タスク終了状態とタスクＩＤを転送する。
【００５７】
以上説明した本実施形態は、スケジューラ１０が、データＩＤとデータを格納した計算機のＩＤとから構成されるデータ配置情報を参照し、タスク同時実行数が上限未満の計算機に割り当てるデータとして、自計算機の配置データ、障害サーバのデータ、非配置データ、他計算機の配置データの順に選択し、データＩＤを転送して、そのデータを処理するタスクをスケジュールする。
これにより、再実行時も含めて、データ転送待ちや入出力待ちの発生による処理時間低下を低減させることができる。
【符号の説明】
【００５８】
１      スケジュールサーバ
２      実行サーバ
８      ジョブ処理システム
９      通信路
１０    スケジューラ
１１    データ配置管理テーブル
１２    タスク管理テーブル
１３    実行サーバ管理テーブル
１４    データ配置情報
２０    タスク管理部
２１    データ配置領域
２２    データ処理部
２３    データ配置部
２４    データセット
９１ａ，９１ｂ  ＣＰＵ
９２ａ，９２ｂ  主記憶装置
９３ａ，９３ｂ  外部記憶装置
９４ａ，９４ｂ  通信インタフェース
９５ａ，９５ｂ  入出力インタフェース
【図１】
2010231502.tif 000003
【図２】
2010231502.tif 000004
【図３】
2010231502.tif 000005
【図４】
2010231502.tif 000006
【図５】
2010231502.tif 000007
【図６】
2010231502.tif 000008
【図７】
2010231502.tif 000009
【図８】
2010231502.tif 000010
【図９】
2010231502.tif 000011
【図１０】
2010231502.tif 000012
【図１１】
2010231502.tif 000013