(57)【要約】  各実行計算機は、各実行計算機の負荷を測定し、測定した負荷を基に、単位時間に実行可能な分割ジョブの数の情報を含むジョブ要求を生成し、生成したジョブ要求を、各実行計算機を管理する管理計算機に送信する。管理計算機は、ジョブ要求を受け、ジョブ要求で指定された数の分割ジョブを各実行計算機に割り当てる。
2013076775.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機のうち、データと当該データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する管理計算機と、前記複数の分割ジョブのうち前記管理計算機により割り当てられる分割ジョブを実行する複数の実行計算機とを有する計算機システムにおいて、
前記各実行計算機は、
前記各実行計算機の負荷を基に、前記分割ジョブの数の情報を含むジョブ要求を生成し、前記生成したジョブ要求を前記管理計算機に送信し、
前記管理計算機は、
前記ジョブ要求を前記各実行計算機から受信した場合、ジョブ要求に含まれる分割ジョブの数に応じた分割ジョブを前記各実行計算機に割り当てることを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記各実行計算機は、
前記負荷として、負荷状況観測時間毎に、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、実行する分割ジョブの数を示す実行ジョブ数をそれぞれ測定し、前記測定したスループット値を基に、前記各実行計算機が、同時に実行可能な分割ジョブの数を示す多重度を決定し、前記決定した多重度と前記測定した実行ジョブ数との差を算出し、前記算出した差を、要求分割ジョブ数として前記ジョブ要求に付加し、前記要求分割ジョブ数が付加されたジョブ要求を一括して前記管理計算機に送信することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記各実行計算機は、
前記負荷状況観測時間毎に、前記スループット値を測定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも増加傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも増加させた値に決定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも減少させた値に決定することを特徴とする計算機システム。
【請求項４】
請求項１から３のいずれか一項に記載の計算機システムであって、
前記各実行計算機は、
前記負荷として、前記分割ジョブの処理を実行するＣＰＵが、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、前記ＣＰＵが、少なくとも前記分割ジョブの処理を実行する際の使用率を示すＣＰＵ使用率と、前記ＣＰＵが、前記分割ジョブの処理を実行する際にメモリを使用する使用率を示すメモリ使用率と、前記ＣＰＵが、データ入出力処理を実行する際の使用率を示すＩ/Ｏ使用率のうち、少なくとも一つを測定することを特徴とする計算機システム。
【請求項５】
請求項２に記載の計算機システムであって、
前記各実行計算機は、
前記負荷状況観測時間毎に測定したスループット値のうち最新のスループット値を前記ジョブ要求に付加し、
前記管理計算機は、
前記ジョブ要求に付加された最新のスループット値が、高い順に前記分割ジョブの割当先となる実行計算機を決定することを特徴とする計算機システム。
【請求項６】
請求項２に記載の計算機システムであって、
前記管理計算機は、
前記ジョブ要求に付加された要求分割ジョブ数に応じた数の分割ジョブを前記各実行計算機に割り当てることを特徴とする計算機システム。
【請求項７】
請求項１に記載の計算機システムであって、
前記各実行計算機は、
前記管理計算機から割り当てられた分割ジョブの実行を終了した場合、前記管理計算機に前記分割ジョブの終了通知を送信し、
前記管理計算機は、
前記分割ジョブの割当先となる実行計算機で、前記分割ジョブの実行が終了する終了予定時間と、前記いずれかの実行計算機に対する前記分割ジョブの割当ての有無を示すスケジュール状態を前記分割ジョブに対応づけて管理し、
前記各実行計算機から、前記終了予定時間までに、前記分割ジョブの終了通知を受信したことを条件に、前記スケジュール状態が、未割当を示す分割ジョブを前記分割ジョブの終了通知を送信した実行計算機に割り当て、
前記いずれかの実行計算機の中に、前記終了予定時間までに、前記分割ジョブの終了通知を送信できない実行計算機が存在する場合、当該実行計算機に割り当てるべき分割ジョブを、前記終了予定時間までに、前記分割ジョブの終了通知を送信した実行計算機に割り当てることを特徴とする計算機システム。
【請求項８】
請求項２に記載の計算機システムであって、
前記各実行計算機は、
前記管理計算機から割り当てられた分割ジョブを実行する過程で、前記測定した実行ジョブ数の推移を、前記分割ジョブを実行する実行時間に対応づけて監視画面上に表示すると共に、前記算出した要求分割ジョブ数と、前記測定したスループット値を前記各実行計算機に対応づけて前記監視画面上に表示することを特徴とする計算機システム。
【請求項９】
複数の計算機のうち、データと当該データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する管理計算機と、前記複数の分割ジョブのうち前記管理計算機により割り当てられる分割ジョブを実行する複数の計算機とを有する計算機システムにおける分割ジョブ処理方法において、
前記各実行計算機が、前記各実行計算機の負荷を基に、前記分割ジョブの数の情報を含むジョブ要求を生成する生成ステップと、
前記各実行計算機が、前記生成したジョブ要求を前記管理計算機に送信する送信ステップと、
前記管理計算機が、前記ジョブ要求を前記各実行計算機から受信した場合、前記受信したジョブ要求に応じた分割ジョブを前記各実行計算機に割り当てる割当てステップと、を含むことを特徴とする分割ジョブ処理方法。
【請求項１０】
請求項９に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記生成ステップでは、前記負荷として、負荷状況観測時間毎に、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、実行する分割ジョブの数を示す実行ジョブ数をそれぞれ測定し、前記測定したスループット値を基に、前記各実行計算機が、同時に実行可能な分割ジョブの数を示す多重度を決定し、前記決定した多重度と前記測定した実行ジョブ数との差を算出し、前記算出した差を、要求分割ジョブ数として前記ジョブ要求に付加し、
前記送信ステップでは、前記要求分割ジョブ数が付加されたジョブ要求を一括して前記管理計算機に送信することを特徴とする分割ジョブ処理方法。
【請求項１１】
請求項１０に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記生成ステップでは、前記負荷状況観測時間毎に、前記スループット値を測定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも増加傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも増加させた値に決定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも減少させた値に決定することを特徴とする分割ジョブ処理方法。
【請求項１２】
請求項９又は１０に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記生成ステップでは、前記負荷として、前記分割ジョブの処理を実行するＣＰＵが、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、前記ＣＰＵが、少なくとも前記分割ジョブの処理を実行する際の使用率を示すＣＰＵ使用率と、前記ＣＰＵが、前記分割ジョブの処理を実行する際にメモリを使用する使用率を示すメモリ使用率と、前記ＣＰＵが、データ入出力処理を実行する際の使用率を示すＩ/Ｏ使用率のうち、少なくとも一つを測定することを特徴とする分割ジョブ処理方法。
【請求項１３】
請求項１０に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記生成ステップでは、前記負荷状況観測時間毎に測定したスループット値のうち最新のスループット値を前記ジョブ要求に付加し、
前記管理計算機は、
前記割当てステップでは、前記ジョブ要求に付加された最新のスループット値が、高い順に前記分割ジョブの割当先となる実行計算機を決定することを特徴とする分割ジョブ処理方法。
【請求項１４】
請求項１０に記載の分割ジョブ処理方法であって、
前記管理計算機は、
前記割当てステップでは、前記ジョブ要求に付加された要求分割ジョブ数に応じた数の分割ジョブを前記各実行マシンに割り当てることを特徴とする分割ジョブ処理方法。
【請求項１５】
請求項９に記載の計算機システムであって、
前記各実行計算機は、
前記送信ステップでは、前記管理計算機から割り当てられた分割ジョブの実行を終了した場合、前記管理計算機に前記分割ジョブの終了通知を送信し、
前記管理計算機は、
前記割当てステップでは、前記分割ジョブの割当先となる実行計算機で、前記分割ジョブの実行が終了する終了予定時間と、前記いずれかの実行計算機に対する前記分割ジョブの割当ての有無を示すスケジュール状態を前記分割ジョブに対応づけて管理し、
前記各実行計算機から、前記終了予定時間までに、前記分割ジョブの終了通知を受信したことを条件に、前記スケジュール状態が、未割当を示す分割ジョブを前記分割ジョブの終了通知を送信した実行計算機に割り当て、
前記いずれかの実行計算機の中に、前記終了予定時間までに、前記分割ジョブの終了通知を送信できない実行計算機が存在する場合、当該実行計算機に割り当てるべき分割ジョブを、前記終了予定時間までに、前記分割ジョブの終了通知を送信した実行計算機に割り当てることを特徴とする分割ジョブ処理方法。
【請求項１６】
請求項１０に記載の分割ジョブ処理方法であって、
前記各実行計算機が、前記管理計算機から割り当てられた分割ジョブを実行する過程で、前記測定した実行ジョブ数の推移を、前記分割ジョブを実行する実行時間に対応づけて監視画面上に表示すると共に、前記算出した要求分割ジョブ数と、前記測定したスループット値を前記各実行計算機に対応づけて前記監視画面上に表示するステップを含むことを特徴とする分割ジョブ処理方法。
【請求項１７】
データと当該データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する管理計算機から割り当てられる分割ジョブを実行する複数の実行計算機に、
前記各実行計算機の負荷を測定する機能と、
前記測定された負荷を基に前記分割ジョブの数の情報を含むジョブ要求を生成する機能と、
前記生成したジョブ要求を前記管理計算機に送信する機能と、
前記ジョブ要求に応じて前記管理計算機から割り当てられた分割ジョブを実行する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する計算機システム、分割ジョブ処理方法及びプログラムに関する。
【背景技術】
【０００２】
金融機関などにおいて、日時処理・月次処理などを行う場合、大量のデータをオフラインでバッチ処理することがある。この際、コンピュータ機器のクラスタ上で、大量のデータを分散して並列処理する方法が提案されている（特許文献１参照）。【０００３】
特許文献１には、マスタプロセスが入力データを受信した場合、受信した入力データをより細かい単位に分割し、分割されたデータを複数のワーカープロセスに配置し、各ワーカープロセスが、より細かい単位に分割されたデータを処理し、処理結果をマスタプロセスに返却し、マスタプロセスが各ワーカープロセスの処理結果を集約することが記載されている。【０００４】
特許文献１に記載された方法によれば、複数のサーバやストレージなどの障害で、処理ができないワーカープロセスが発生した場合でも、障害の生じたワーカープロセスの代わりに、他のワーカープロセスに処理を再設定させることができる。【０００５】
また、データを処理するに際して、複数の分散処理装置（実行計算機）にデータを分散させて処理させ、各分散処理装置の処理状況を１台の分散処理制御装置（管理計算機）で管理する方法が提案されている（特許文献２参照）。特許文献２には、管理計算機が、各実行計算機の負荷を監視し、負荷の小さい実行計算機に対して優先的にジョブを分散させることが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許７,６５０,３３１号
【特許文献２】国際公開WO２００４/０８６２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、ジョブのスケジュールを１つのマスタプロセスが行っているため、多くのジョブを１度に各ワーカープロセスに分散させる場合には、マスタプロセスの負荷が非常に大きくなる。また、特許文献２では、ジョブの実行状況や各ジョブの負荷を管理計算機が行っているため、管理計算機が多くのジョブを１度に各実行計算機に分散させる場合には、管理計算機が、各実行計算機の状況を把握しなければならず、管理計算機の負荷が非常に大きくなる。【０００８】
本発明は、上述の課題に鑑みて為されたものであり、その目的の一つは、複数の実行計算機を管理する管理計算機の負荷を低減することができる計算機システムと分割ジョブ処理方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
前記目的を達成するために、本発明は、複数の計算機のうち、データと当該データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する計算機を管理計算機として用い、前記複数の分割ジョブのうち前記管理計算機により割り当てられる分割ジョブを実行する複数の実行計算機とを有する計算機システムにおいて、前記各実行計算機は、前記各実行計算機の負荷を基に前記分割ジョブの数の情報を含むジョブ要求を生成し、前記生成したジョブ要求を前記管理計算機に送信し、前記管理計算機は、前記ジョブ要求を前記各実行計算機から受信した場合、前記受信したジョブ要求に応じた分割ジョブを前記各実行計算機に割り当てることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、複数の実行計算機を管理する管理計算機の負荷を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明を適用した一実施形態である計算機システムの全体構成を説明するための構成図である。
【図２】管理計算機で管理されるジョブ情報テーブルの構成図である。
【図３】管理計算機で管理される実行状況テーブルの構成図である。
【図４】管理計算機で管理される要求応答テーブルの構成図である。
【図５】実行計算機で管理される実行状況テーブルの構成図である。
【図６】実行計算機で管理される計算機情報テーブルの構成図である。
【図７】実行計算機で管理される分割ジョブ要求テーブルの構成図である。
【図８】実行計算機全体の処理を説明するためのフローチャートである。
【図９】ジョブ要求部の処理を説明するためのフローチャートである。
【図１０】多重度測定部の処理を説明するためのフローチャートである。
【図１１】スループット値と多重度との関係を説明するための線図である。
【図１２】スループット値と多重度との関係を説明するための線図である。
【図１３】負荷状況測定部の処理を説明するためのフローチャートである。
【図１４】ジョブ実行部の処理を説明するためのフローチャートである。
【図１５】管理計算機の処理を説明するためのフローチャートである。
【図１６】ジョブ入力部の処理を説明するためのフローチャートである。
【図１７】データ分割部の処理を説明するためのフローチャートである。
【図１８】ジョブ入力部とデータ分割部の処理を説明するための図である。
【図１９】ジョブ監視部の処理を説明するためのフローチャートである。
【図２０】ジョブスケジュール部の処理を説明するためのフローチャートである。
【図２１】各実行計算機における分割ジョブの分散方法を説明するための図である。
【図２２】各実行計算機における同時実行ジョブ数の監視画面の表示例を示す図である。
【発明を実施するための形態】
【００１２】
本実施形態は、複数の計算機のうち、ジョブを複数の分割ジョブに分けて管理する管理計算機と、この管理計算機により割り当てられる分割ジョブを実行する２以上の実行計算機を有するシステムであって、各実行計算機は、自計算機の負荷を測定し、測定した負荷を基に実行可能な分割ジョブの数の情報を含むジョブ要求を生成し、生成したジョブ要求を管理計算機に送信し、管理計算機は、受信したジョブ要求で指定された数の分割ジョブを、要求先の実行計算機に割り当てるものである。
【００１３】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本発明を適用した計算機システムの一例を示す構成図である。
【００１４】
図１において、計算機システム１０は、管理計算機１２と、複数の実行計算機１４、１６、１８から構成され、管理計算機１０と、各実行計算機１４、１６、１８は、それぞれネットワーク２０を介して互いに接続される。
【００１５】
管理計算機１２は、例えば、CPU（Central  Processing  Unit）、記憶装置、メモリ、入出力装置（いずれも図示せず）等を有する計算機であって、記憶装置には、各種テーブル等が格納され、メモリには、各種プログラム等が格納される。
【００１６】
例えば、複数の記憶デバイスで構成される記憶装置には、ジョブ情報テーブル３０が格納され、メモリには、ジョブ入力部３２と、データ分割部３４と、ジョブ監視部３６と、ジョブスケジュール部３８が格納される。
【００１７】
ジョブ入力部３２は、CPUが、メモリに格納されたプログラム、例えば、ジョブ入力プログラムを起動することによって構成される。同様に、データ分割部３４、ジョブ監視部３６、ジョブスケジュール部３８は、CPUが、メモリに格納されたプログラム、例えば、データ分割プログラム、ジョブ監視プログラム、ジョブスケジュールプログラムをそれぞれ起動することによって構成される。
【００１８】
各実行マシン１４、１６、１８は、CPU、記憶装置、メモリ、入出力装置（いずれも図示せず）等を有する計算機であって、記憶装置には、各種テーブル等が格納され、メモリには、各種プログラム等が格納される。
【００１９】
例えば、複数の記憶デバイスで構成される記憶装置には、実行状況テーブル４０と、計算機情報テーブル４２が格納され、メモリには、ジョブ要求部４４と、多重度測定部４６と、負荷状況測定部４８と、ジョブ実行部５０が格納される。
【００２０】
ジョブ要求部４４は、CPUが、メモリに格納されたプログラム、例えば、ジョブ要求プログラムを起動することによって構成される。同様に、多重度測定部４６と、負荷状況測定部４８と、ジョブ実行部５０は、CPUが、多重度測定プログラム、負荷状況測定プログラム、ジョブ実行プログラムをそれぞれ実行することによって構成される。
【００２１】
管理計算機１２は、データと、このデータを処理するプログラムを含むジョブ、例えば、グリッドジョブを複数の分割ジョブに分けて管理する。この際、管理計算機１２は、各種テーブルを用いて分割ジョブを管理する。
【００２２】
次に、図２に、ジョブ情報テーブル３０の構成図を示す。
【００２３】
図２において、ジョブ情報テーブル３０は、グリッドジョブを複数の分割ジョブに分けて管理するためのテーブルであって、グリッドジョブ名フィールド３０Aと、分割数フィールド３０Bと、分割ジョブ名フィールド３０Cと、プログラム名フィールド３０Dと、分割データフィールド３０Eと、終了予定時間フィールド３０Fと、スケジュール状態フィールド３０Gから構成される。
【００２４】
グリッドジョブ名は、グリッドジョブを特定する名称である。グリッドジョブ名フィールド３０Aのエントリには、グリッド名として、例えば、「グリッドジョブA」が格納される。
【００２５】
分割数は、グリッドジョブを複数の分割ジョブに分割する際に用いる分割数である。分割数フィールド３０Bのエントリには、例えば、グリッドジョブを１００個の分割ジョブに分割する場合、「１００」が格納される。
【００２６】
分割ジョブ名は、各分割ジョブを特定する名称に関する情報である。分割ジョブ名フィールド３０Cのエントリには、例えば、分割ジョブの名称として、「ジョブ１」が格納される。
【００２７】
プログラム名は、各分割ジョブに用いられるプログラムの名称を特定する情報である。プログラム名フィールド３０Dのエントリには、各分割ジョブに用いられるプログラムの名称として、例えば、「プログラムA」が格納される。
【００２８】
分割データは、各分割ジョブに用いられる分割データを特定する名称に関する情報である。分割データフィールド３０Eのエントリには、各分割ジョブに用いられる分割データの名前が、プログラムに対応付けて格納される。例えば、ジョブ１に用いられる分割データが「データ１」である場合には、ジョブ１に用いられる分割データとして、「データ１」が、分割データフィールド３０Eのエントリに格納される。
【００２９】
ここで、分割ジョブとは、分割データと、分割データを処理するためのプログラムを含むジョブを意味する。また、各分割ジョブに含まれる分割データのデータ量は均一に設定されている。
【００３０】
終了予定時間は、各分割ジョブが実行計算機で実行される際に、その終了予定時間を示す情報である。終了予定時間フィールド３０Fのエントリには、各分割ジョブが実行計算機で実行される際の終了予定時間が格納される。
【００３１】
スケジュール状態は、各分割ジョブのスケジュール状態を示す情報である。スケジュール状態フィールド３０Eのエントリには、各分割ジョブが、実行計算機によって、その実行が終了した場合には、「TRUE」が格納され、各分割ジョブが、実行計算機で実行中である場合には、「RUN」が格納される。また、各分割ジョブが、まだ実行計算機で実行されない状態、即ち、未スケジュール状態である場合には、スケジュール状態フィールド３０Eのエントリには、「FALSE」が格納される。
【００３２】
次に、図３に、実行状況テーブル６０の構成図を示す。
【００３３】
図３において、実行状況テーブル６０は、ジョブ監視部３６が、各実行計算機１４、１６、１８から取得した情報を基に各実行計算機１４、１６、１８の実行状況を管理するためのテーブルであって、実行計算機名フィールド６０Aと、要求分割ジョブ数フィールド６０Bと、スループット値フィールド６０Cと、実行ジョブ数フィールド６０Dと、予定時間フィールド６０Eから構成される。
【００３４】
実行計算機名は、実行計算機１４、１６、１８を特定する名称である。実行計算機名フィールド６０Aのエントリには、例えば、実行計算機１４の名称を「実行計算機A」とした場合、第１のエントリには、「実行計算機A」が格納される。また、実行計算機１６の名称を「実行計算機B」とした場合、実行計算機名フィールド６０Aの第２のエントリには、「実行計算機B」が格納される。同様に、実行計算機１８の名称を「実行計算機C」とした場合、実行計算機名フィールド６０Aの第３のエントリには、「実行計算機C」が格納される。
【００３５】
要求分割ジョブ数は、各実行計算機１４、１６、１８が要求した分割ジョブの数を示す情報である。要求分割ジョブ数フィールド６０Bのエントリには、各実行計算機１４、１６、１８が要求した分割ジョブの数が格納される。例えば、実行計算機１４が、分割ジョブとして３個の分割ジョブを要求した場合、要求分割ジョブ数フィールド６０Bの第１のエントリには、「３」が格納される。
【００３６】
スループット値は、各実行計算機１４、１６、１８が、単位時間（sec）に処理できる分割ジョブの数を示す情報である。
【００３７】
スループット値フィールド６０Cのエントリには、各実行計算機１４、１６、１８が、単位時間（sec）に処理できる実行ジョブの数が格納される。例えば、実行計算機１４が、単位時間（sec）に６個の分割ジョブを処理できる場合には、スループット値フィールド６０Cの第１のエントリには、「６」が格納される。
【００３８】
実行ジョブ数は、各実行計算機１４、１６、１８が、実行中の分割ジョブの数を示す情報である。
【００３９】
実行ジョブ数フィールド６０Dのエントリには、各実行計算機１４、１６、１８が、実行中の分割ジョブの数が格納される。例えば、実行計算機１４が、３つの分割ジョブを処理する場合には、実行ジョブ数フィールド６０Dの第１のエントリには、「３」が格納される。
【００４０】
予定時間（sec）は、各実行計算機１４、１６、１８が、１つの分割ジョブを実行するのに要する予想時間（sec）を示す情報である。
【００４１】
予定時間フィールド６０Eのエントリには、各実行計算機１４、１６、１８が、１つの分割ジョブを実行するのに要する予想時間（sec）が格納される。例えば、実行計算機１４が、１つの分割ジョブを実行するに要する時間が、５秒であるとすると、予定時間フィールド６０Eの第１のエントリには、「５」が格納される。
【００４２】
次に、図４に、要求応答テーブル６２の構成図を示す。
【００４３】
図４において、要求応答テーブル６２は、ジョブスケジュール部３８が、各実行計算機１４、１６、１８に分割ジョブを割り当てる際に用いるテーブルであって、分散する実行計算機名フィールド６２Aと、プログラム名６２Bと、分割データフィールド６２Cから構成される。
【００４４】
分散する実行名計算機名は、ジョブスケジュール部３８が、分割ジョブを実行計算機に割り当てる際に、その割り当て先を特定するための実行計算機の名称に関する情報である。
【００４５】
分散実行計算機名フィールド６２Aのエントリには、ジョブスケジュール部３８が、各分割ジョブを実行計算機に割り当てる際に、その割り当て先を特定する実行計算機の名称が格納される。例えば、分割ジョブの割り当て先が、実行計算機１４である場合、分散する実行計算機名フィールド６２Aの第１のエントリには、「実行計算機A」が格納される。
【００４６】
プログラム名は、分割ジョブに用いるプログラムの名称に関する情報である。プログラム名フィールド６２Bのエントリには、分割ジョブが割り当てられる実行計算機で用いるプログラムの名称を特定する情報が格納される。例えば、実行計算機１４でプログラムとして、「プログラムA」を用いる場合は、プログラム名フィールド６２Bの第１のエントリには、「プログラムA」が格納される。
【００４７】
分割データは、各分割ジョブに用いられる分割データを特定する名称である。
【００４８】
分割データフィールド６２Cのエントリには、各分割ジョブで用いられる分割データが、プログラムに対応して格納される。例えば、実行計算機１４で用いられる分割データが、「データ３、データ４、データ５」である場合には、分割データフィールド６２Cの第１のエントリには、「データ３、データ４、データ５」が格納される。
【００４９】
次に、図５に、実行状況テーブル４０の構成図を示す。
【００５０】
図５において、実行状況テーブル４０は、各実行計算機１４、１６、１８が、各分割ジョブを実行する際に、その実行状況を管理するためのテーブルであって、ジョブIDフィールド４０Aと、分割ジョブ名フィールド４０Bと、ジョブ終了時間フィールド４０Cから構成される。なお、実行状況テーブル４０に、各実行計算機１４、１６、１８が、各分割ジョブの実行を開始する時間を特定するジョブ開始時間を付加することもできる。
【００５１】
ジョブIDは、各分割ジョブを一意に識別するための識別子である。
【００５２】
ジョブIDフィールド４０Aのエントリには、各分割ジョブを識別するための識別子が格納される。ジョブIDフィールド４０Aのエントリには、例えば、分割ジョブの識別子が、「１」である場合には、「１」の情報が格納される。
【００５３】
分割ジョブ名は、各分割ジョブを特定する名称に関する情報である。
【００５４】
分割ジョブ名フィールド４０Bのエントリには、各分割ジョブを特定する名称が格納される。例えば、分割ジョブの名称が、「ジョブ２」である場合には、「ジョブ２」が、ジョブ名フィールド４０Bのエントリに格納される。
【００５５】
ジョブ終了時間は、各実行計算機が、各分割ジョブを実行した際に、その終了時間を示す情報である。ジョブ終了時間フィールド４０Cのエントリには、各実行計算機が、各分割ジョブを実行した際の終了時刻が、年月日とともに格納される。
【００５６】
次に、図６に、計算機情報テーブル４２の構成図を示す。
【００５７】
図６において、計算機情報テーブル４２は、各実行計算機１４、１６、１８が、各分割ジョブを実行する際に用いる情報を管理するためのテーブルであって、多重度フィールド４２Aと、実行ジョブ数フィールド４２Bと、負荷状況観測時間フィールド４２Cと、前回のスループット値フィールド４２Dと、最新のスループット値フィールド４２Eから構成される。
【００５８】
多重度は、各実行計算機１４、１６、１８が、各分割ジョブを実行する際に、それぞれ同時に実行可能な分割ジョブの数を示す情報である。
【００５９】
各多重度フィールド４２Aのエントリには、各実行計算機１４、１６、１８が、それぞれ同時に実行可能な分割ジョブ数の数が格納される。例えば、実行計算機１４が、同時に９個の分割ジョブを実行可能である場合には、多重度フィールド４２Aのエントリには、「９」が格納される。
【００６０】
実行ジョブ数は、各実行計算機１４、１６、１８が、実行中の分割ジョブの数を示す情報である。
【００６１】
実行ジョブ数フィールド４２Bのエントリには、各実行計算機１４、１６、１８が、実行中の分割ジョブの数が格納される。例えば、実行計算機１４が、６個の分割ジョブを実行中である場合には、実行ジョブ数フィールド４２Bのエントリには、「６」が格納される。
【００６２】
負荷状況観測時間T（sec）は、負荷状況測定部４８が、負荷の状況を観測する時間（sec）である。例えば、負荷状況測定部４８が、１秒毎に負荷状況を観測する場合には、負荷状況観測時間フィールド４２Cのエントリには、「１」が格納される。
【００６３】
前回のスループット値は、各実行計算機１４、１６、１８が、前回の負荷状況観測時間T内の処理で、単位時間（sec）に実行した分割ジョブの数を示す情報である。前回のスループット値フィールド４２Dのエントリには、各実行計算機１４、１６、１８が、前回の処理で、単位時間（sec）に実行した分割ジョブの数を示す情報が、スループット値として格納される。
【００６４】
最新のスループット値は、各実行計算機１４、１６、１８が、単位時間（sec）に処理した分割ジョブの数を示す情報のうち、最新の情報である。最新のスループット値フィールド４２Eのエントリには、各実行計算機１４、１６、１８が、単位時間（sec）に処理した分割ジョブの数を示す情報のうち、最新の情報が、スループット値として格納される。
【００６５】
次に、図７に、分割ジョブ要求テーブル６４の構成図を示す。
【００６６】
図７において、分割ジョブ要求テーブル６４は、各実行計算機１４、１６、１８が、実行可能な分割ジョブを管理計算機１２に要求するための情報を管理するテーブルであって、実行計算機名フィールド６４Aと、要求分割ジョブ数フィールド６４Bと、スループット値フィールド６４Cと、実行ジョブ数フィールド６４Dと、予定時間フィールド６４Eから構成される。
【００６７】
実行計算機名は、実行計算機１４、１６、１８を特定する名称である。実行計算機名フィールド６４Aのエントリには、例えば、実行計算機１４の名称を「実行計算機A」とした場合、第１のエントリには、「実行計算機A」が格納される。
【００６８】
要求分割ジョブ数は、各実行計算機１４、１６、１８が要求する分割ジョブの数を示す情報である。要求分割ジョブ数フィールド６４Bのエントリには、各実行計算機１４、１６、１８が要求する分割ジョブの数が格納される。例えば、実行計算機１４が、分割ジョブとして３個の分割ジョブを要求する場合、要求分割ジョブ数フィールド６４Bの第１のエントリには、「３」が格納される。
【００６９】
スループット値は、各実行計算機１４、１６、１８が、単位時間（sec）に処理できる分割ジョブの数を示す情報である。
【００７０】
スループット値フィールド６４のエントリには、各実行計算機１４、１６、１８が、単位時間（sec）に処理できる実行ジョブの数が格納される。例えば、実行計算機１４が、単位時間（sec）に６個の分割ジョブを処理できる場合には、スループット値フィールド６４Cの第１のエントリには、「６」が格納される。
【００７１】
実行ジョブ数は、各実行計算機１４、１６、１８が、実行中の分割ジョブの数を示す情報である。
【００７２】
実行ジョブ数フィールド６４のエントリには、各実行計算機１４、１６、１８が、実行中（若しくは実行した）分割ジョブの数が格納される。例えば、実行計算機１４が、２の分割ジョブを処理中である場合には、実行ジョブ数フィールド６４Dの第１のエントリには、「３」が格納される。
【００７３】
予定時間（sec）は、各実行計算機１４、１６、１８が、分割ジョブを実行するのに要する予想時間（sec）を示す情報である。
【００７４】
予定時間フィールド６４Eのエントリには、各実行計算機１４、１６、１８が、分割ジョブを実行するのに要する予想時間（sec）が格納される。例えば、実行計算機１４が、分割ジョブを実行するに要する時間が、５秒であるとすると、予定時間フィールド６４Eの第１のエントリには、「５」が格納される。
【００７５】
（実行計算機の処理）
各実行計算機１４、１６、１８では、負荷状況測定部４８が、負荷状況観測時間Tが来る毎に、スループット値を測定し、その測定結果の履歴を基に、多重度測定部４６において、最も多くの分割ジョブを処理できる多重度を決定する。ジョブ要求部４４は、多重度測定部４６で決定された多重度と、実行されている分割ジョブ数との差を算出し、算出した差を、要求分割ジョブ数として分割ジョブ要求テーブル６４に記録し、記録された分割ジョブ要求テーブル６４の情報を管理計算機１２のジョブスケジュール部３８に送信する。ジョブ実行部５０は、ジョブスケジュール部３８から送信された分割ジョブを実行する。以下、具体的な内容について説明する。
【００７６】
次に、各実行計算機の処理を図８のフローチャートに従って説明する。
【００７７】
まず、実行計算機１４、１６、１８は、ジョブ要求部４４が、分割ジョブ要求テーブル６４に記録された情報を基に分割ジョブを管理計算機１２に要求する（S１１）。
【００７８】
この後、各実行計算機１４、１６、１８は、管理計算機１２から分割ジョブを受信したか否かを判定する（S１２）。
【００７９】
ステップS１２で肯定の判定結果を得た場合、各実行計算機１４、１６、１８は、ジョブ実行部５０が、管理計算機１２から送信された分割ジョブを実行し（S１３）、計算機情報テーブル４２の実行ジョブ数を＋１とし（S１４）、ステップS１５の処理に移行する。
【００８０】
各実行計算機１４、１６、１８は、ステップS１２で否定の判定結果を得た場合、または、ステップS１４の処理が終了した後、管理計算機１２から受信した分割ジョブの実行を終了したか否かを判定する（S１５）。
【００８１】
ステップS１５で肯定の判定結果を得た場合、各実行計算機１４、１６、１８は、分割ジョブの実行結果として、ジョブ終了時間を実行状況テーブル４０に登録し（S１６）、その後、計算機情報テーブル４２の実行ジョブ数を−１とし（S１７）、次に、分割ジョブの終了を管理計算機１２に送信し（S１８）、ステップS１１の処理に戻る。
【００８２】
一方、ステップS１５で否定の判定結果を得た場合、分割ジョブが終了していないので、各実行計算機１４、１６、１８は、ステップS１１の処理に戻る。
【００８３】
各実行計算機１４、１６、１８は、ステップS１１〜S１８の処理を繰り返すことで、最も多くの分割ジョブを処理できる多重度で、分割ジョブを実行することができる。
【００８４】
次に、各実行計算機におけるジョブ要求部の処理を図９のフローチャートに従って説明する。
【００８５】
この処理は、図８のステップS１１の具体的な内容であって、CPUが、ジョブ要求部４４を起動することによって開始される。
【００８６】
ジョブ要求部４４は、計算機情報テーブル４２を参照し、多重度と、実行ジョブ数と、最新のスループット値を計算機情報テーブル４２から取得する（S２１）。
【００８７】
次に、ジョブ要求部４４は、（多重度−実行ジョブ数）の値を、各実行計算機に対応づけて分割ジョブ要求テーブル６４の分割ジョブ数に設定する（S２２）。例えば、実行計算機１４について、多重度が、「９」であって、実行ジョブ数が、「６」である場合、実行計算機１４に対応した分割ジョブ要求テーブル６４の要求分割ジョブ数に、「３」を設定する。
【００８８】
次に、ジョブ要求部４４は、分割ジョブ要求テーブル６４の予定時間に、前回の実行時間の平均（平均時間）を設定する（S２３）。例えば、前回の処理で、複数の分割ジョブを処理した際に、実行時間の平均時間が５秒である場合には、分割ジョブ要求テーブル６４の予定時間に、「５」を設定する。
【００８９】
次に、ジョブ要求部４４は、計算機情報テーブル４２を参照し、最新のスループット値を、分割ジョブ要求テーブル６４のスループット値に設定する（S２４）。
【００９０】
次に、ジョブ要求部４４は、分割ジョブ要求テーブル６４に登録された情報をジョブ要求として生成し、生成したジョブ要求を一括して管理計算機１２のジョブスケジュール部３８に送信し（S２５）、このルーチンでの処理を終了する。
【００９１】
次に、各実行計算機における多重度測定部の処理を図１０のフローチャートに従って説明する。
【００９２】
この処理は、CPUが、多重度測定部４６を起動することによって開始される。
【００９３】
多重度測定部４６は、タイマーを起動し、その起動時間を実行時間として測定し（S３１）、負荷状況観測時間Tが、（現在の時間−前回負荷状況を観測した時間）よりも大きいか否かを判定する（S３２）。
【００９４】
多重度測定部４６は、ステップS３２で否定の判定結果を得た場合、即ち、タイマーの起動時間が、負荷状況観測時間Tを超えていない場合には、ステップS３１の処理に戻り、ステップS３１〜S３２の処理を繰り返し、ステップS３２で肯定の判定結果を得た場合には、即ち、タイマーの起動時間が、負荷状況観測時間Tを超えた場合には、ステップS３３の処理に移行する。
【００９５】
ステップS３３では、負荷状況測定部４８が、実行計算機の負荷状況を測定する。
【００９６】
この後、多重度測定部４６は、負荷状況測定部４８の測定結果を基に、前回よりもスループットが増加した場合、多重度を増加させる処理を実行し、前回よりもスループットが減少した場合には、多重度を減少させる処理を実行する（S３４）。
【００９７】
例えば、多重度測定部４６は、負荷状況観測時間T毎に、負荷状況測定部４８で測定したスループット値が、前回の負荷状況観測時間Tで測定されたスループット値よりも増加傾向にある場合には、今回の多重度を、前回の負荷状況観測時間Tで決定した多重度よりも増加させた値に決定し、負荷状況測定部４８で測定したスループット値が、前回の負荷状況観測時間Tで測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間Tで決定した多重度よりも減少させた値に決定する。
【００９８】
次に、多重度測定部４６は、ステップS３４で決定された多重度を計算機情報テーブル４２に登録し（S３５）、このルーチンでの処理を終了する。
【００９９】
なお、多重度測定部４６は、分割ジョブ等を実行するCPUが、単一のコア又は複数のコアで構成される場合でも、単一のコア又は複数のコアが、例えば、負荷状況観測時間T内にそれぞれ同時に実行可能な分割ジョブの数を測定することになる。
【０１００】
また、各分割データが均等なデータ量である場合、多重度の代わりに、データ量を分割ジョブの数を示すパラメータとして用いることができる。
【０１０１】
次に、図１１に、スループット値と多重度との関係を説明するための線図を示す。
【０１０２】
図１１において、各実行計算機で多重度を決定する場合、スループット値の変化を基に多重度が決定される。
【０１０３】
例えば、時間０〜ｔ６の間に、スループット値が、一定時間（sec）毎に、a、ｂ、ｃ、ｄ、e、ｆ、ｇと変化した場合、時間０と時間t１のスループット値を比較すると、スループット値は、a−bであって負となるので、時間ｔ１と時間ｔ２間における多重度を、時間０と時間t１における多重度Aよりも低い多重度Bに減少させる。
【０１０４】
一方、時間t１と時間t２のスループット値を比較すると、スループット値は、bからcに上昇し、時間t１と時間t２間のスループット値は、c−bであって、正となるので、時間t２と時間t３における多重度を、多重度Bよりも高い多重度Cに増加させる。
【０１０５】
即ち、一定時間（sec）毎にスループット値を測定し、測定したスループット値が減少傾向にあるときには、多重度を減少させ、測定したスループット値が増加傾向にある場合には、多重度を増加させることとしている。
【０１０６】
スループット値が減少傾向にある場合には、各実行計算機の処理能力が低下しているので、多重度を減少させ、逆に、スループット値が増加傾向にある場合には、各実行計算機の処理能力に余裕があるので、多重度を増加させることとしている。
【０１０７】
次に、図１２に、スループット最大値と多重度との関係を説明するための線図を示す。
【０１０８】
図１２において、多重度X１を増加させた場合、多重度がX２になると、スループット値が、スループット最大値Y１で飽和し、多重度をX２より増加させても、スループット値は、スループット最大値Y１よりも漸次低下する。
【０１０９】
このため、スループット値を基に多重度を決定する場合、スループット値が増加傾向にある場合には、多重度X２より低い多重度を選択し、スループット値が減少傾向にある場合には、多重度X２より高い多重度を選択することが望ましい。
【０１１０】
次に、各実行計算機における負荷状況測定部の処理を図１３のフローチャートに従って説明する。
【０１１１】
この処理は、CPUが、負荷状況測定部４８を起動することによって開始される。
【０１１２】
負荷状況測定部４８は、実行状況テーブル４０を参照し、実行状況テーブル４０から、T（負荷状況観測時間）時間の間に終了した分割ジョブの分割ジョブ数を取得する（S４１）。即ち、負荷状況測定部４８は、T時間の間に、ジョブ終了時間が登録されている分割ジョブ名の数を基に分割ジョブ数を取得する。
【０１１３】
次に、負荷状況測定部４８は、T時間の間に終了した分割ジョブの分割ジョブ数を基にスループット値を算出し（S４２）、算出したスループット値を最新のスループット値として、計算機情報テーブル４２に登録し（S４３）、このルーチンでの処理を終了する。この際、負荷状況測定部４８は、T時間の間に終了した分割ジョブの分割ジョブ数を、実行ジョブ数として計算機情報テーブル４２に登録する。
【０１１４】
なお、各実行計算機１４、１６、１８における負荷状況測定部４８は、各実行計算機１４、１６、１８の負荷として、分割ジョブの処理等を実行するＣＰＵが、少なくとも分割ジョブの処理を実行する際の使用率を示すＣＰＵ使用率と、分割ジョブの処理等を実行するＣＰＵが、分割ジョブの処理を実行する際にメモリを使用する使用率を示すメモリ使用率と、分割ジョブの処理等を実行するＣＰＵが、データ入出力処理を実行する際の使用率を示すＩ/Ｏ使用率をそれぞれ測定することもできる。
【０１１５】
次に、各実行計算機におけるジョブ実行部の処理を図１４のフローチャートに従って説明する。
【０１１６】
この処理は、CPUが、ジョブ実行部４４を起動することによって開始される。
【０１１７】
ジョブ実行部４４は、管理計算機１２のジョブスケジュール部３８から送信された分割ジョブを受信し、受信した分割ジョブを実行する（S５１）。この際、ジョブ実行部４４は、受信した分割ジョブに付加された分割データを、受信した分割ジョブに付加されたプログラムに従って処理し、分割ジョブの実行を終了した後、実行終了（分割ジョブの終了通知）を管理計算機１２のジョブ監視部３６に送信し、このルーチンでの処理を終了する。
【０１１８】
また、各実行計算機１４、１６、１８のうち、いずれかのジョブ実行部４４は、各実行計算機１４、１６、１８の処理内容を集約し、集約した処理を実行する。
【０１１９】
（管理計算機の処理）
管理計算機１２では、グリッドジョブをジョブ入力部３２が受け付けた後、データ分割部３４でグリッドジョブを複数の分割ジョブに分割し、分割された分割ジョブをプログラムと関連付けてジョブ情報テーブル３０に登録し、分割ジョブを作成する。ジョブスケジュール部３８では、各実行計算機から分割ジョブの要求（ジョブ要求）がある毎に、ジョブ情報テーブル３０を参照し、ジョブ要求があった実行計算機に対して、要求応答テーブル６２を作成し、作成した要求応答テーブル６２の内容に従ってスケジュールを実行する。
【０１２０】
次に、管理計算機１２の全体の処理内容を図１５のフローチャートに従って説明する。
【０１２１】
まず、管理計算機１２では、ジョブ入力部１２が、ユーザの操作を基にグリッドジョブを入力する（S６１）。
【０１２２】
この後、管理計算機１２では、データ分割部３４が、ジョブ入力部３２に入力されたグリッドジョブを複数の分割ジョブに分割し（S６２）、このルーチンでの処理を終了する。
【０１２３】
次に、管理計算機１２におけるジョブ入力部の処理を図１６のフローチャートに従って説明する。
【０１２４】
この処理は、CPUが、ジョブ入力部３２を起動することによって開始される。
【０１２５】
ジョブ入力部３２は、ユーザの操作を基にグリッドジョブが入力された場合、入力されたグリッドジョブを、ジョブ情報としてジョブ情報テーブル３０に登録する（S７１）。この場合のジョブ情報としては、グリッドジョブ名と、分割数と、プログラム名が挙げられる。
【０１２６】
次に、管理計算機１２におけるデータ分割部の処理を図１７のフローチャートに従って説明する。
【０１２７】
この処理は、CPUが、データ分割部３４を起動することによって開始される。
【０１２８】
データ分割部３４は、ジョブ情報テーブル３０を参照し、ジョブ情報テーブル３０に登録されているジョブ情報を取得し（S８１）、取得したジョブ情報に含まれる分割数、例えば、１００でデータを分割する（S８２）。
【０１２９】
次に、データ分割部３４は、分割したデータと、ジョブ情報に含まれるプログラムとを関連付けてジョブ情報テーブル３０に登録し（S８３）、このルーチンでの処理を終了する。
【０１３０】
この場合のジョブ情報には、グリッドジョブ名、分割数、分割ジョブ名、プログラム名が含まれる。
【０１３１】
次に、データの分割方法と分割ジョブの生成方法を図１８に従って説明する。
【０１３２】
ジョブ入力部３２に、グリッドジョブが入力された場合、ジョブ入力部３２は、ジョブ情報テーブル３０に、グリッドジョブを処理するためのプログラム７０と、グリッドジョブに含まれるマスタデータ７２をジョブ情報テーブル３０に登録する。
【０１３３】
この後、データ分割部３４は、マスタデータ７２を、入力された分割数を用いて、例えば、n個に分割し、分割された各データ７４をそれぞれプログラム７０に関連付けてジョブ情報テーブル３０に登録する。
【０１３４】
この際、データ分割部３４は、グリッドジョブを複数の分割ジョブに分割し、各分割ジョブをプログラム７０に対応付けてジョブ情報テーブル３０に登録するとともに、各データ７４とプログラム７０とを対応付けてジョブ情報テーブル３０に登録する。
【０１３５】
次に、管理計算機１２におけるジョブ監視部３６の処理を図１９のフローチャートに従って説明する。
【０１３６】
この処理は、CPUが、ジョブ監視部３６を起動することによって開始される。
【０１３７】
ジョブ監視部３６は、タイマーを起動し、タイマーの起動時間を実行時間として測定し（S９１）、ジョブ情報テーブル３０から、ジョブ情報テーブル３０に登録されているジョブ情報を取得する（S９２）。この場合のジョブ情報は、ジョブ情報テーブル３０に登録されている全ての情報である。
【０１３８】
次に、ジョブ監視部３６は、実行計算機から要求された分割ジョブを監視する過程で、監視対象の分割ジョブに関する情報として、実行計算機から終了通知が来たか否かを判定する（S９３）。
【０１３９】
ステップS９３で、分割ジョブの終了通知を受信したと判定した場合には、ジョブ監視部３６は、ジョブ情報テーブル３０からジョブ情報を取得し（S９４）、管理対象となる分割ジョブのスケジュール状態を判定する（S９５）。
【０１４０】
ステップS９５において、監視対象の分割ジョブのスケジュール状態が、「TRUE」である場合には、そのままステップS９７の処理に移行し、監視対象となる分割ジョブのスケジュール状態が、「RUN」（実行中）である場合には、分割ジョブの終了通知を受信したことを条件に、ジョブ情報テーブル３０のスケジュール状態を「RUN」から「TRUE」に変更し（S９６）、ステップS９７の処理に移行する。
【０１４１】
また、ステップS９３で否定の判定結果を得た場合、即ち、分割ジョブの終了通知を受信していないと判定した場合、ジョブ監視部３６は、ステップS９７の処理に移行する。
【０１４２】
ステップS９７において、ジョブ監視部３６は、タイマーの起動時間を基に、現在の時間が、終了予定時間よりも小さいか否かを判定し、ステップS９７で否定の判定結果を得た場合、即ち、現在の時間が、終了予定時間よりも小さい場合には、ステップS９１の処理に戻り、ステップS９１〜S９６の処理を繰り返す。
【０１４３】
一方、ステップS９７で肯定の判定結果を得た場合、即ち、現在の時間が、終了予定時間を超えた場合、ジョブ監視部３６は、ジョブ情報テーブル３０から、分割ジョブ名に対応した分割ジョブを取り出し、取り出した分割ジョブに対応するスケジュール状態を「FALSE」に設定し（S９８）、その後、ステップS９１の処理に戻り、ステップS９１〜S９８の処理を繰り返す。
【０１４４】
ステップS９８では、ジョブ監視部３６は、監視対象となる分割ジョブのうち、未スケジュール状態にある分割ジョブのスケジュール状態を「FALSE」とすることになる。
【０１４５】
次に、ジョブスケジュール部の処理を図２０のフローチャートに従って説明する。
【０１４６】
この処理は、CPUが、ジョブスケジュール部３８を起動することによって開始される。
【０１４７】
ジョブスケジュール部３８は、タイマーを起し、タイマーの起動時間を実行時間として測定し（S１０１）、ジョブスケジュール時間Tが、（現在の時間−前回スケジュールした時間）よりも小さいか否かを判定する（S１０２）。
【０１４８】
ステップS１０２で否定の判定結果を得た場合、即ち、タイマーの起動時間が、ジョブスケジュール時間Tに達していない場合、ジョブスケジュール部３８は、ステップS１０１の処理に戻り、ステップS１０１〜S１０２の処理を繰り返す。
【０１４９】
一方、ステップS１０２で肯定の判定結果を得た場合、即ち、タイマーの起動時間が、ジョブスケジュール時間Tを超えた場合、ジョブスケジュール部３８は、各実行計算機から送信された分割ジョブ要求テーブル６４に登録された情報を全て取り出し（S１０３）、分割ジョブ要求テーブル６４に登録されたスループット値を基に、各実行計算機のジョブ要求をスループット順に並び変える（S１０４）。
【０１５０】
この後、ジョブスケジュール部３８は、スループット値の最も高い分割ジョブ要求テーブル６４の中から要求分割ジョブ数を取り出す（S１０５）。
【０１５１】
次に、ジョブスケジュール部３８は、ジョブ情報テーブル３０から、分割ジョブ名に対応した分割ジョブを取り出し、取り出した分割ジョブに対応したスケジュール状態を「RUN」から「TRUE」に設定する（S１０６）。
【０１５２】
次に、ジョブスケジュール部３８は、ジョブ情報テーブル３０から、分割ジョブ名に対応した分割ジョブの情報を取得し（S１０７）、取得した情報のうち、スケジュール状態が「FALSE」になっている分割ジョブを取り出す（S１０８）。
【０１５３】
次に、ジョブスケジュール部３８は、分割ジョブ要求テーブル６４から、分割ジョブの終了時間の情報として予定時間を取得し、取得した予定時間を基に分割ジョブの終了予定時間を算出する（S１０９）。
【０１５４】
次に、ジョブスケジュール部３８は、スケジュール状態が、「FALSE」に設定されている分割ジョブに対して、算出した終了予定時間をジョブ情報テーブル３０に登録する（S１１０）。
【０１５５】
次に、ジョブスケジュール部３８は、スケジュール状態が、「FALSE」になっている分割ジョブのデータと、プログラムとを関連付けて実行計算機毎に要求応答テーブル６２を作成し、作成した要求応答テーブル６２の内容を各実行計算機のジョブ実行部５０に送信する（S１１１）。
【０１５６】
次に、ジョブスケジュール部３８は、各実行計算機から分割ジョブの要求があるか否かを判定し（S１１２）、ステップS１１２で肯定の判定結果を得た場合、即ち、各実行計算機から分割ジョブの要求がある場合、ステップS１０６に戻り、ステップS１０６〜S１１２の処理を繰り返す。
【０１５７】
一方、ステップS１１２で否定の判定結果を得た場合、即ち、各実行計算機から分割ジョブの要求がない場合、ジョブスケジュール部３８は、ステップS１０１の処理に戻り、次の処理を実行するために、ステップS１０１〜S１１２の処理を繰り返す。
【０１５８】
この際、ジョブスケジュール部３８は、分割ジョブの割当先となる実行計算機で、分割ジョブの実行が終了する終了予定時間と、各実行計算機に対する分割ジョブの割当ての有無を示すスケジュール状態を分割ジョブに対応づけて管理し、各実行計算機１４、１６、１８から、終了予定時間までに、分割ジョブの終了通知を受信したことを条件に、スケジュール状態が、未割当を示す分割ジョブ（FALSEに設定された分割データを含む分割ジョブ）を分割ジョブの終了通知を送信した実行計算機に割り当てることになる。
【０１５９】
また、ジョブスケジュール部３８は、実行計算機１４、１６、１８の中に、終了予定時間までに、分割ジョブの終了通知を送信できない実行計算機が存在する場合、当該実行計算機に割り当てるべき分割ジョブを、終了予定時間までに、分割ジョブの終了通知を送信した実行計算機に割り当てることもできる。
【０１６０】
次に、各実行計算機に分割ジョブを分散させる際の処理を図２１に従って説明する。
【０１６１】
各実行計算機１４、１６、１８が、所定時間（sec）毎に分割ジョブを実行するに際して、各実行計算機１４、１６、１８は、例えば、多重度を基に分割ジョブを管理計算機１２に要求する。
【０１６２】
例えば、図２１に示すように、各実行計算機１４、１６、１８は、多重度＝１（カッコ内の数値）である場合、実行する予定の分割ジョブとして、１つの分割ジョブを管理計算機１２に要求する。この場合、管理計算機１２は、各実行計算機１４、１６、１８にそれぞれ１つの分割ジョブを割り当てることになり、３つの分割ジョブが、各実行計算機１４、１６、１８に分散して割り当てられる。
【０１６３】
これにより、第１の時間では、各実行計算機１４、１６、１８が、それぞれ１つの分割ジョブを実行することで、実行された分割ジョブの累計は、３となる。
【０１６４】
第２の実行時間では、実行計算機１４の多重度＝３、実行計算機１６、１８の多重度＝２であるので、実行計算機１４、１６、１８から管理計算機１２に対して、７つの分割ジョブが要求される。この場合、管理計算機１２は、実行計算機１４に３つの分割ジョブを割り当て、実行計算機１６、１８にそれぞれ２つの分割ジョブを割り当てることになり、７つの分割ジョブが、各実行計算機１４、１６、１８に分散して割り当てられる。
【０１６５】
これにより、第２の時間では、実行計算機１４が３つの分割ジョブを実行し、実行計算機１６、１８がそれぞれ２つの分割ジョブを実行することで、実行された分割ジョブの累計は、１０となる。
【０１６６】
このような処理が、第１の時間〜第１１の時間まで実行され、実行計算機１４が、分割ジョブを５４個（１、３、４、５、５、６、６、６、６、７、５＝５４）を実行し、実行計算機１６、分割ジョブを２７個（１、２、２、２、３、３、３、３、４、４＝２７）を実行し、実行計算機１８が、分割ジョブを１９個（１、２、２、２、２、２、２、２、２、２＝１９）を実行すると、実行された分割ジョブの累計は、１００となる。
【０１６７】
即ち、管理計算機１２が、グリッドジョブを１００個の分割ジョブに分割した場合、各実行計算機１４、１６、１８が多重度に応じて分割ジョブを管理計算機１２に要求し、管理計算機１２が、各実行計算機１４、１６、１８に対して、要求された分割ジョブを分散して割り当て、各実行計算機１４、１６、１８が、割り当てられた分割ジョブを、第１の時間〜第１１の時間まで実行することで、全体で１００個の分割ジョブを実行することができる。
【０１６８】
また、第１１の実行時間では、実行計算機１４の多重度＝８、実行計算機１６の多重度＝４、実行計算機１８の多重度＝３であるので、実行計算機１４、１６、１８から管理計算機１２に対して、１５個の分割ジョブが要求される。
【０１６９】
この場合、管理計算機１２は、処理すべき分割ジョブの残りの数が５であるので、多重度＝８であって、多重度の最も大きい実行計算機１４にのみ、要求された分割ジョブとして、５つの分割ジョブを割り当てる。即ち、管理計算機１２は、第１１の実行時間では、処理能力の最も高い実行計算機１４にのみ分割ジョブを割り当てる。なお、管理計算機１２は、第１１の実行時間において、例えば、実行計算機１４に３つの分割ジョブを割り当て、実行計算機１６、１８にそれぞれ１つの分割ジョブを割り当てることもできる。
【０１７０】
次に、図２２に、各実行計算機における同時実行ジョブ数を監視するための監視画面の表示例を示す。
【０１７１】
図２２において、監視画面８０は、例えば、各実行計算機１４、１６、１８の出力装置の表示画面として構成される。監視画面８０には、横軸を実行時間（sec）とし、縦軸を実行ジョブ数とするグラフ８２が、実行計算機１４、１６、１８に対応付けて表示される。
【０１７２】
グラフ８２は、実行計算機１４のグラフ８４と、実行計算機１６のグラフ８６と、実行計算機１８のグラフ８８から構成される。
【０１７３】
各グラム８４、８６、８８は、各実行計算機１４、１６、１８が、同時に実行した際の実行ジョブ数の推移を表示したものである。この際、グラフ８４、８６、８８は、各実行計算機１４、１６、１８に対応付けて異なる色で表示される。
【０１７４】
グラフ８２より下の表示領域には、各実行計算機１４、１６、１８の実行状況を示す実行状況テーブル９０が表示される。テーブル９０は、実行計算機名９２と、要求分割ジョブ９４と、スループット値９６と、実行ジョブ数９８と、予定時間（sec）１００から構成され、この実行状況テーブル９０には、実行状況テーブル６０の情報が表示される。
【０１７５】
実行状況テーブル９０の表示内容を確認することで、各実行計算機１４、１６、１８から要求されている分割ジョブ数を把握することができるとともに、スループット値・実行ジョブ数・予定時間（sec）を把握することもできる。
【０１７６】
また、グラフ８４〜８８の表示内容を確認することで、各実行計算機１４、１６、１８の実行ジョブ数の推移を実行時間（sec）とともに把握することができる。
【０１７７】
本実施形態によれば、各実行計算機１４、１６、１８に同時に分割ジョブを割り当てる場合でも、管理計算機１２の負荷を低減することができる。
【０１７８】
また、本実施形態によれば、管理計算機１２は、要求された分割ジョブの数（要求分割ジョブ数）が多い実行計算機に対して、より多くの分割ジョブを割り当てることができるので、結果的に、管理計算機１２に負荷が集中することなく、計算機システム全体の分割ジョブの処理数を向上させることができる。
【０１７９】
また、管理計算機１２は、各分割ジョブの実行時間と終了予定時間を管理し、ある分割ジョブを実行する実行計算機から、終了予定時間を過ぎても終了通知が来なかった場合には、ジョブ情報テーブル３０のスケジュール状態をFALSEに設定すると共に、終了通知が来なかった実行計算機（故障の生じた実行計算機）に割り当てるべき分割ジョブを、他の実行計算機に割り当てることで、いずれかの実行計算機に故障が発生しても、分割ジョブを正常な実行計算機に確実に実行させることができる。
【０１８０】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、各実行計算機１４、１６、１８のうちいずれかの実行計算機に、管理計算機１２の機能を付加することもできる。
更に、本実施形態では、管理計算機１２と、実行計算機１４、１６、１８を物理計算機として用いる例について説明したが、本発明は、これらの全部又は一部を仮想計算機として、１台又は複数台の物理計算機に実装する構成にも適用することができる。
【０１８１】
また、各実行計算機１４、１６、１８の出力装置に監視画面８０を表示すると共に、管理計算機１２の出力装置に監視画面を表示し、この監視画面に、実行ジョブ数の推移を、実行時間に対応づけて表示すると共に、要求分割ジョブ数と、スループット値等を有するテーブル９０の内容を表示することもできる。
【０１８２】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid  State  Drive）等の記録装置、または、ＩＣ（Integrated  Circuit）カード、ＳＤ（Secure  Digital）メモリカード、ＤＶＤ（Digital  Versatile  Disc）等の記録媒体に記録して置くことができる。
【０１８３】
例えば、プログラムとして、ジョブを複数の分割ジョブに分けて管理する管理用計算機（管理計算機１２）と、複数の分割ジョブのうち管理用計算機により割り当てられる分割ジョブを実行する複数の実行用計算機（実行計算機１４、１６、１８）のうち、各実行用計算機に、各実行用計算機の負荷を測定する機能と、測定された負荷を基に分割ジョブの数の情報を含むジョブ要求を生成する機能と、生成したジョブ要求を管理用計算機に送信する機能と、を実現させ、管理用計算機に、ジョブ要求を各実行用計算機から受信した場合、受信したジョブ要求に応じた分割ジョブを各実行用計算機に割り当てる機能を実現させる分割ジョブ処理プログラムを記録媒体に記録することができる。
【符号の説明】
【０１８４】
１０  計算機システム、１２  管理計算機、１４、１６、１８  実行計算機、２０  ネットワーク、３０  ジョブ情報テーブル、３２  ジョブ入力部、３４  データ分割部、３６  ジョブ監視部、３８  ジョブスケジュール部、４０、実行状況テーブル、４２  計算機情報テーブル、４４  ジョブ要求部、４６  多重度測定部、４８  負荷状況測定部、５０  ジョブ実行部、６０  実行状況テーブル、６２  要求応答テーブル、６４  分割ジョブ要求テーブル。
【図１】
2013076775.tif 000003
【図２】
2013076775.tif 000004
【図３】
2013076775.tif 000005
【図４】
2013076775.tif 000006
【図５】
2013076775.tif 000007
【図６】
2013076775.tif 000008
【図７】
2013076775.tif 000009
【図８】
2013076775.tif 000010
【図９】
2013076775.tif 000011
【図１０】
2013076775.tif 000012
【図１１】
2013076775.tif 000013
【図１２】
2013076775.tif 000014
【図１３】
2013076775.tif 000015
【図１４】
2013076775.tif 000016
【図１５】
2013076775.tif 000017
【図１６】
2013076775.tif 000018
【図１７】
2013076775.tif 000019
【図１８】
2013076775.tif 000020
【図１９】
2013076775.tif 000021
【図２０】
2013076775.tif 000022
【図２１】
2013076775.tif 000023
【図２２】
2013076775.tif 000024
【国際調査報告】
2013076775.tif 000025
2013076775.tif 000026
2013076775.tif 000027
2013076775.tif 000028