(57)【要約】【課題】フレキシブルなジョブ割当を可能とする。【解決手段】本方法では、ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てる。具体的には、生成されたジョブの処理に必要な構成を有するコンピュータを特定する工程と、現在のジョブの生成状態に応じた、ジョブの割当態様を特定する工程と、特定された上記ジョブの割当態様に従って、特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する工程と、ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成されたジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する工程とを含む。【選択図】図１
2008152618.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当プログラムであって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、
前記ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成された前記ジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送ステップと、
をマスタコンピュータに実行させるためのジョブ割当プログラム。
【請求項２】
前記ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成された前記ジョブに対応して前記ジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部に登録するステップと、
前記ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出するステップと、
前記割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様が前記処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、前記処理結果が未登録のジョブの処理に必要な構成を有し且つ前記処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信するステップと、
をさらにマスタコンピュータに実行させる請求項１記載のジョブ割当プログラム。
【請求項３】
前記ジョブの割当態様に関するデータが、
前記ジョブの数が前記コンピュータの数以上である状態の場合には、同一ジョブに複数のコンピュータの割り当てを禁止し、
前記ジョブの数が前記コンピュータの数未満である状態の場合には、同一ジョブに複数のコンピュータの割り当てを許容する
ことを表すデータを含む請求項１記載のジョブ割当プログラム。
【請求項４】
前記再送ステップが、
前記ジョブの割当態様が、生成された前記ジョブに１のコンピュータを割り当てることを示している場合、前記送信ステップ以降のステップ又は前記特定ステップで特定されたコンピュータの全てから前記ジョブ取得拒否通知を受信した場合には前記特定ステップ以降のステップを実施するステップ
を含む請求項１記載のジョブ割当プログラム。
【請求項５】
前記再送ステップが、
前記ジョブの割当態様が、生成された前記ジョブに複数のコンピュータを割り当てることを示している場合、前記特定ステップで特定されたコンピュータの全てから前記ジョブ取得拒否通知を受信した際には前記特定ステップ以降のステップを実施するステップ
を含む請求項１記載のジョブ割当プログラム。
【請求項６】
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当プログラムであって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、
前記ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成された前記ジョブに対応して前記ジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部に登録するステップと、
前記ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出するステップと、
前記割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様が前記処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、前記処理結果が未登録のジョブの処理に必要な構成を有し且つ前記処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信するステップと、
をマスタコンピュータに実行させるためのジョブ割当プログラム。
【請求項７】
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当装置であって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定手段と、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定する手段と、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信手段と、
前記ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成された前記ジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送手段と、
を有するジョブ割当装置。
【請求項８】
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当方法であって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、
前記ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成された前記ジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送ステップと、
を含み、マスタコンピュータに実行されるジョブ割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異なる構成を有する複数のコンピュータをネットワークで相互接続して利用する際のジョブ割当技術に関する。
【背景技術】
【０００２】
従来のグリッド・システムの多くはプッシュ（Ｐｕｓｈ）型と呼ばれるジョブ（Ｊｏｂ）割当方式を採用している。Ｐｕｓｈ型のＪｏｂ割当方式においては、特定のコンピュータが、Ｊｏｂの生成、Ｊｏｂを処理する他のコンピュータの処理負荷情報の管理、Ｊｏｂの割り当てなどを一元的に行う。
【０００３】
また、Ｐｕｌｌ型と呼ばれるＪｏｂ取得方式もある。これは、Ｊｏｂを生成するコンピュータと、それとは別にＪｏｂを取得し処理するコンピュータとの組み合わせにて実施される。そして、Ｊｏｂを取得し処理するコンピュータは、それ自身の処理負荷管理を行い、その情報を基にＪｏｂの取得要求をＪｏｂを生成するコンピュータに送信し、取得可能ならば取得して処理し、結果をＪｏｂを生成するコンピュータに通知するというものである。
【０００４】
さらに、特開２００５−３５２６９７号公報には、分割したジョブを複数のクライアントで分散処理させるときに、全体の処理時間を短縮するための技術が開示されている。具体的には、グリッドコンピューティングによって負荷分散処理が可能な画像形成システムにおいて、分割したジョブの数よりもクライアント装置の数が多い場合、ジョブスケジューラは、同じジョブを複数のクライアント装置に割り当て、同じジョブを割り当てられた複数のクライアント装置のうち、いずれかの装置で該ジョブが終了したときに、他のクライアント装置での該ジョブの実行を強制的に中止させるようになっている。しかしながら、クライアント装置ではジョブの割り当てを拒否することはできず、Ｐｕｓｈ型のＪｏｂ割当方式の変形となっている。
【０００５】
また、特開２００５−１８２７９６号公報には、グリッド・コンピューティング・システム上のデータ・オペレーションおよび実行資源の自律的管理のための技術が開示されている。具体的には、自律的管理装置が、モニタ・モジュール、ポリシー・モジュール、および調整モジュールを含む。モニタ・モジュールは、トリガ・イベントを求めてグリッド・コンピューティング・システムを監視するように構成される。ポリシー・モジュールは、複数のシステム・ポリシーのうちの１つにアクセスするように構成される。複数のシステム・ポリシーのそれぞれは、グリッド・コンピューティング・システムのシステム資源の動作制御パラメータに対応する。調整モジュールは、認識したトリガ・イベントに応答して、複数のシステム・ポリシーのうちの１つに従って、システム資源を自律的に調整するように構成される。本公報では、Ｊｏｂ実行計算機の負荷情報を一元的に管理することが開示されているが、Ｊｏｂの投入条件や投入の判断については述べられていない。
【０００６】
さらに、特開２００６−４８２７３号公報には、グリッドコンピューティングによる負荷分散可能なシステムと、グリッドに対してジョブを依頼する画像形成装置から構成される、画像処理システムにおいてグリッドジョブを操作部から投入する際に、ユーザにとって柔軟にかつ容易な構成を提供するための技術が開示されている。具体的には、グリッドジョブを実行する際に、直ちにジョブの実行を要求する第１のモードか、後でジョブを実行してもかまわない第２のモードかを指定し、第２のモードの場合は、入力された画像を一旦保存し、ジョブの依頼が可能になったときに、保存した画像に対してグリッドを用いた処理を行う。グリッドジョブを実行する際に、グループ化したホストから最適なお薦めグリッドグループを選択し、選択されたグリッドグループを用いてグリッド処理を行う。しかし、本公報の技術は、ジョブをどのようなグループに割り当てるかに着目しており、クライアントによるＪｏｂの取得可否判断などについては考慮されていない。
【特許文献１】特開２００５−３５２６９７号公報
【特許文献２】特開２００５−１８２７９６号公報
【特許文献３】特開２００６−４８２７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上挙げた公開公報には上で述べたような問題がある。
【０００８】
また、Ｐｕｓｈ型のＪｏｂ割当方法には、以下のような問題がある。すなわち、Ｊｏｂが一旦コンピュータに割り当てられると、その処理が終了するか削除されない限り、そのコンピュータに留まり他のコンピュータがそのジョブを処理する事が出来ず、また、同じＪｏｂを同時に別々のコンピュータに処理させたとしても、その処理結果を管理するＪｏｂを新たに定義しなければならなかった。特に、より処理能力の高いコンピュータが空き状態になったにも関らず、遅いコンピュータで処理を継続するしかないため、全体の処理時間が短縮できないという問題があった。例えば、処理能力１００を要するＪｏｂ（Ａ）が他のコンピュータが忙しく、処理能力１０しかないコンピュータ（Ａ）に割り当てられたとする。処理能力２００のコンピュータ（Ｂ）が空き状態になったが、Ｊｏｂ（Ａ）は未だ３０程度しか終わっていない場合、従来はそのままコンピュータ（Ａ）で処理を継続するしかなかった。コンピュータ（Ａ）で処理が３０の時点でコンピュータ（Ｂ）に割り当てれば、コンピュータ（Ａ）と較べ処理能力５０のＪｏｂとして処理でき、コンピュータ（Ａ）で残り処理７０を処理する時間より短時間で処理できるはずであるが、そのような処理はできない。
【０００９】
また別の問題として、コンピュータに障害が発生した場合、それを認識するまでに時間がかかり、その分Ｊｏｂの割り当てが非効率になるという問題もある。Ｐｕｓｈ型のＪｏｂ割当方法は、一般的に、コンピュータの状態を一元的に管理している。その一般的な方法として各コンピュータからそれぞれの状態に関するデータを管理元に定期的に通知する方法が採用される。障害を早く検出するにはこの定期的な通知の間隔を短くすれば良いが、ネットワーク負荷が高くなり、また、通知元及び通知先のコンピュータの負荷も上がるという問題もある。
【００１０】
一方、Ｐｕｌｌ型のＪｏｂ割当方法においては、コンピュータの処理能力の一元的管理は行われておらず、各コンピュータのＪｏｂ取得は各コンピュータのポリシーに任されており、Ｊｏｂの要求する処理能力とコンピュータの処理能力との組み合わせが必ずしも適切に行われないという問題がある。例えば、Ｊｏｂ数がコンピュータの数より多い場合においてＪｏｂの取得を各コンピュータのポリシーに全て任せてしまうと、同じＪｏｂを複数のコンピュータで取得してしまう場合や、コンピュータがまったく割り当てられないＪｏｂが発生してしまうという問題もある。
【００１１】
以上のように従来の方式では、Ｊｏｂとコンピュータの状態に応じたフレキシブルなＪｏｂ割当の切り替えができておらず、結果として処理時間が長くかかってしまうといった問題が生ずる場合がある。特に、Ｐｕｓｈ型のＪｏｂ割当方法及びＰｕｌｌ型のＪｏｂ割当方法の良い部分がうまく利用できていない。
【００１２】
従って、本発明の目的は、フレキシブルなＪｏｂ割当を可能とする新規な技術を提供することである。
【００１３】
また、本発明の他の目的は、処理時間の短縮を可能とする新規なＪｏｂ割当技術を提供することである。
【００１４】
さらに、本発明の他の目的は、Ｊｏｂを処理するコンピュータの負荷状態を集中的に管理することなくＪｏｂ等の状態に応じて動的にＪｏｂの割り当てを切り替えるための技術を提供することである。
【課題を解決するための手段】
【００１５】
本発明の第１の態様に係るジョブ割当方法は、ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当方法であって、各コンピュータの構成のデータを格納するプロファイル管理データ格納部（例えば実施の形態におけるサーバプロファイル管理テーブル）を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、ジョブの生成状態に対応してジョブに対するコンピュータの割当態様に関するデータ（例えば実施の形態におけるＪｏｂ生成通知条件）を格納する割当態様データ格納部（例えば実施の形態におけるＪｏｂ生成通知定義ファイル）を用いて、現在のジョブの生成状態に応じた、ジョブの割当態様を特定するステップと、特定された上記ジョブの割当態様に従って、特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成されたジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送ステップとを含む。
【００１６】
このようにジョブを処理する各コンピュータの負荷状態を管理せずに、またジョブ割当通知ではなくジョブ生成通知を送付することによって、マスタコンピュータの処理負荷を削減することができる。なお、その結果として、ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信することがあるが、その場合にはいずれかのコンピュータがジョブを取得するようにジョブ生成通知を送信する。また、ジョブの割当態様に従って、１又は複数のコンピュータにジョブ生成通知が送信されるので、フレキシブルなジョブ割当が行われる。
【００１７】
また、本発明の第１の態様において、ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成されたジョブに対応してジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部（例えば実施の形態におけるＪｏｂ割当管理テーブル）に登録するステップと、ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出するステップと、割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、ジョブの割当態様を特定するステップと、特定された上記ジョブの割当態様が処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、処理結果が未登録のジョブの処理に必要な構成を有し且つ処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信するステップとをさらに含むようにしてもよい。
【００１８】
一旦ジョブを処理するコンピュータが決まったとしても、その後の状態変化に応じて再度コンピュータを割り当てれば、処理時間を短縮できる可能性があるためである。
【００１９】
また、上で述べたジョブの割当態様に関するデータが、ジョブの数がコンピュータの数以上である状態の場合には、同一ジョブに複数のコンピュータの割り当てを禁止し、ジョブの数がコンピュータの数未満である状態の場合には、同一ジョブに複数のコンピュータの割り当てを許容することを表すデータを含むようにしてもよい。繁忙に応じてコンピュータの重複割当の可否を判定するものである。
【００２０】
さらに、上で述べた再送ステップが、ジョブの割当態様が、生成されたジョブに１のコンピュータを割り当てることを示している場合、送信ステップ以降のステップ又は特定ステップで特定されたコンピュータの全てからジョブ取得拒否通知を受信した場合には特定ステップ以降のステップを実施するステップを含むようにしてもよい。なお、ジョブ取得拒否通知の受信は、所定期間内にジョブ取得通知を受信しない場合と等価とする場合もある。
【００２１】
また、上で述べた再送ステップが、ジョブの割当態様が、生成されたジョブに複数のコンピュータを割り当てることを示している場合、特定ステップで特定されたコンピュータの全てからジョブ取得拒否通知を受信した際には特定ステップ以降のステップを実施するステップを含むようにしてもよい。少なくとも１のコンピュータがジョブを処理するようにするためである。
【００２２】
さらに、本発明の第１の態様において、生成されたジョブの優先度が所定の基準より高いか判断するステップと、生成されたジョブの優先度が所定の基準より高い場合には、ジョブの割当態様にかかわらず、特定ステップにおいて特定された複数のコンピュータにジョブ生成通知を送信する送信ステップとをさらに含むようにしてもよい。このようにすることによって、優先度の高いジョブは処理時間の短縮が見込める。
【００２３】
また、上で述べた特定ステップが、生成されたジョブで用いられるアプリケーションの実行数がライセンス総数より少ないか判断するステップと、生成されたジョブで用いられるアプリケーションの実行数がライセンス総数より少ないと判断された場合、当該アプリケーションがインストールされており且つ生成されたジョブの処理に必要な他の構成を有するコンピュータを特定するステップとを含むようにしてもよい。浮動ライセンスの場合にはこのように対処することができる。なお、固定ライセンスの場合にはコンピュータの構成で判断できる。
【００２４】
また、生成されたジョブが、計算処理数が指定された多数決型のジョブである場合、各計算処理を１つのジョブとして取り扱うようにする場合もある。例えば、奇数個のジョブを生成し、それぞれについてコンピュータを割り当てれば、その結果を多数決で特定することができるようになる。
【００２５】
さらに、生成されたジョブが、計算処理数が無指定の多数決型のジョブである場合、ジョブの割当態様にかかわらず、特定ステップにおいて特定された所定数のコンピュータにジョブ生成通知を送信するステップをさらに含むようにしてもよい。
【００２６】
本発明の第２の態様に係るジョブ割当方法は、各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、ジョブの生成状態に対応してジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、ジョブの割当態様を特定するステップと、特定された上記ジョブの割当態様に従って、特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成されたジョブに対応してジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部に登録するステップと、ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出するステップと、割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、ジョブの割当態様を特定するステップと、特定された上記ジョブの割当態様が処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、処理結果が未登録のジョブの処理に必要な構成を有し且つ処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信するステップとを含む。このようにジョブの割当態様を動的に切り替えて処理時間の短縮を図るものである。
【００２７】
なお、本方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【発明の効果】
【００２８】
本発明によれば、フレキシブルなＪｏｂ割当が可能となる。
【００２９】
また、本発明の他の側面によれば、処理時間の短縮が可能となる。
【００３０】
さらに、本発明の他の側面によれば、Ｊｏｂを処理するコンピュータの負荷状態を集中的に管理することなくＪｏｂ等の状態に応じて動的にＪｏｂの割り当てを切り替えることができるようになる。
【発明を実施するための最良の形態】
【００３１】
図１に本発明の一実施の形態におけるシステム概要を示す。例えば、ネットワーク１１乃至１３には、本実施の形態における主要な処理を実施するマスタコンピュータ３と、当該マスタコンピュータ３によって管理され且つＪｏｂの生成通知が送られるサーバＡ乃至Ｄとが接続される。ネットワーク１１乃至１３は、通信品質が一定でなく、また画一的でもないネットワークである。
【００３２】
各サーバは、ＣＰＵ（Central Processing Unit）やメモリなどの使用率などを測定し、Ｊｏｂ生成通知の諾否を判断する負荷管理部５１と、負荷管理部５１によるＪｏｂ生成通知の諾否の基準に関するデータであるＪｏｂ取得ポリシーを格納するＪｏｂ取得ポリシー格納部５２とを有する。各サーバは、異なる処理能力を有し、またＯＳ（Operating System）やハードウエア・アーキテクチャも異なる。
【００３３】
また、マスタコンピュータ３は、マスタコンピュータ３により管理される各サーバのプロファイル情報を格納するサーバプロファイル管理テーブル３３と、Ｊｏｂを生成する処理を行うＪｏｂ生成部３２と、Ｊｏｂ生成部３２により生成されたＪｏｂに関するデータを格納するＪｏｂ割当管理テーブル３７と、Ｊｏｂ生成通知の通知態様を規定するＪｏｂ生成通知定義ファイル３５と、サーバプロファイル管理テーブル３３とＪｏｂ割当管理テーブル３７とＪｏｂ生成通知定義ファイル３５と用いて適切なサーバにＪｏｂ生成通知を行うＪｏｂ生成通知処理部３４と、各サーバからプロファイル情報を受信してサーバプロファイル管理テーブル３３に格納するサーバプロファイル管理部３１と、Ｊｏｂ生成通知が通知されたサーバからデータを受信して必要に応じてＪｏｂ割当管理テーブル３７に登録するＪｏｂ割当管理部３６とを有する。Ｊｏｂ割当管理部３６とＪｏｂ生成通知部３４とは連携して動作する。
【００３４】
サーバプロファイル管理テーブル３３は、図１０Ａに示すように、各サーバについて、Ｊｏｂ生成通知の通知条件、ＯＳ、ＣＰＵ種別、実行可能なアプリケーションなどの構成情報を格納する。特定のアプリケーションについて、システム全体で使用可能なライセンス数が決まっているが、当該ライセンス数を超えて当該特定のアプリケーションがサーバにインストールされている場合には、特定のアプリケーションについてのライセンス総数も、サーバプロファイル管理テーブル３３において管理される。なお、本実施の形態では、マスタコンピュータ３による管理からはずれるサーバについては、サーバプロファイル管理テーブル３３においてその項目が削除されるか又は無効化される。
【００３５】
Ｊｏｂ生成通知定義ファイル３５は、サーバへのＪｏｂ生成通知条件を格納する。例えば、図１０Ｂに示すように、Ｊｏｂ割当管理テーブル３７に登録されており且つ処理結果が未登録であるＪｏｂ数がＪｏｂを割り当て可能なサーバ数以上である場合のＪｏｂ生成通知の通知ポリシー（例えば全てのサーバに重複なしにＪｏｂを割り当てる）と、Ｊｏｂ割当管理テーブル３７に登録されており且つ処理結果が未登録であるＪｏｂ数がＪｏｂを割り当て可能なサーバ数未満である場合のＪｏｂ生成通知の通知ポリシー（例えば能力の低いサーバを２台残して可能であれば他の複数の空きサーバにＪｏｂを重複して割り当てる）とを格納する。なお、多数決型のＪｏｂ（具体的には、計算結果が計算毎に異なり、多数決で計算結果を採用するようなＪｏｂ）であって、Ｊｏｂの割当が行われるべきサーバ数の指定がないＪｏｂの場合に用いられるデフォルトのサーバ数も格納されている。
【００３６】
Ｊｏｂ割当管理テーブル３７は、Ｊｏｂ生成部３２によって生成されたＪｏｂのデータを図１に示すように木構造で管理する。図１０Ｃに示すように、各Ｊｏｂのデータは、Ｊｏｂの処理内容（例えばＣプログラム）、本Ｊｏｂを取得しているサーバのリスト及びＪｏｂの状態、前後のＪｏｂＩＤ（Ｊｏｂのリンク情報）、Ｊｏｂの処理要件（例えばＯＳ種別やＣＰＵ種別）、Ｊｏｂの優先度、Ｊｏｂ処理結果などを含む。Ｊｏｂ処理結果は、処理が完了しなければ登録されない。
【００３７】
次に、図１に示したシステムの処理内容について図２乃至図９を用いて説明する。まず、図２を用いてＪｏｂ生成部３２の処理について説明する。Ｊｏｂ生成部３２は、最初にユーザなどからの要求に応じてＪｏｂを１つ生成し（ステップＳ１）、Ｊｏｂ割当管理テーブル３７に、Ｊｏｂの処理内容、Ｊｏｂの処理要件及びＪｏｂの優先度などを含むＪｏｂの情報を登録する（ステップＳ３）。Ｊｏｂに関連性がある場合には、前後のＪｏｂＩＤも登録する。そして、Ｊｏｂ生成通知部３４にＪｏｂ（具体的にはＪｏｂＩＤ）を通知する（ステップＳ５）。その後、全てのＪｏｂが登録されたか判断する（ステップＳ７）。まだ登録すべきＪｏｂが存在している場合にはステップＳ１に戻り、全てのＪｏｂが登録された場合には、処理を終了する。Ｊｏｂ生成自体は従来と同様であり、これ以上述べない。
【００３８】
次に、Ｊｏｂをサーバに割り当てる際の処理について図３を用いて説明する。Ｊｏｂ生成通知部３４は、Ｊｏｂ生成部３２からＪｏｂ生成の通知（ＪｏｂＩＤの通知）を受信する（ステップＳ１１）。そして、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７から通知に係るＪｏｂの処理要件等を読み出す（ステップＳ１３）。そして、サーバプロファイル管理テーブル３３に対して、Ｊｏｂの処理要件を満たすサーバを検索し、抽出する（ステップＳ１５）。例えば、このステップにおいて複数のサーバを抽出しておく。なお、１つもサーバが抽出できない場合には、このステップでサーバが抽出されるようになるまで待機する。
【００３９】
その後、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知定義ファイル３５から、サーバへのＪｏｂ生成通知条件を読み出す（ステップＳ１７）。上で述べたように、本実施の形態におけるＪｏｂ生成通知定義ファイル３５によれば、Ｊｏｂ数がサーバ数以上か、Ｊｏｂ数がサーバ数未満であるかで、Ｊｏｂ割当の態様が異なる。
【００４０】
そして、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知条件に従って、ステップＳ１５で抽出されたサーバにＪｏｂ生成通知を送信する（ステップＳ１９）。Ｊｏｂ生成通知は、ＪｏｂＩＤを含み、さらにＪｏｂ実行に必要なデータ全てを含む。Ｊｏｂ生成通知部３４は、１のＪｏｂに複数のサーバを割り当てるようなＪｏｂ生成通知条件が適用される場合（以下、ケースＡと呼ぶ）には、ステップＳ１５で抽出されたサーバのうちＪｏｂ生成通知条件に従った数のサーバにＪｏｂ生成通知を送信する。一方、Ｊｏｂ生成通知部３４は、１のＪｏｂに１のサーバを割り当てるようなＪｏｂ生成通知条件が適用される場合（以下、ケースＢと呼ぶ）には、ステップＳ１５で抽出されたサーバのうち最も条件の良い１のサーバにＪｏｂ生成通知を送信する。なお、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知の送信先サーバのＩＤなどをＪｏｂ割当管理部３６に出力しておく。
【００４１】
Ｊｏｂ生成通知を受信したサーバの処理については、図４Ａを用いて説明する。まず、サーバの負荷管理部５１は、Ｊｏｂ生成通知を受信し（ステップＳ３１）、Ｊｏｂ取得ポリシー格納部５２からＪｏｂ取得ポリシーを読み出す（ステップＳ３３）。さらに、負荷管理部５１は、ＣＰＵ使用率、メモリ使用率などの負荷指標を取得する（ステップＳ３５）。本ステップの内容は従来技術と同様であるから、ここでは詳しく述べない。そして、取得した負荷指標がＪｏｂ取得ポリシーに従っているか判断する（ステップＳ３７）。例えば、ＣＰＵ使用率が７０％以下の時にＪｏｂを取得するといったＪｏｂ取得ポリシーが規定されている場合には、ＣＰＵ使用率が７０％以下であるか判断する。取得した負荷指標がＪｏｂ取得ポリシーに従っていないと判断された場合には、負荷管理部５１は、ＪｏｂＩＤを含むＪｏｂ取得拒否通知をマスタコンピュータ３に送信する（ステップＳ３９）。一方、取得した負荷指標がＪｏｂ取得ポリシーに従っていると判断された場合には、負荷管理部５１は、ＪｏｂＩＤを含むＪｏｂ取得通知をマスタコンピュータ３に送信する（ステップＳ４１）。このような処理をＪｏｂ生成通知を受信する毎に判断する。
【００４２】
なお、負荷管理部５１は、サーバプロファイル管理部３１に対して、定期的に又は任意のタイミングで、自サーバがＪｏｂの割り当てを受けるか否か、プロファイル情報の更新の有無などについて通知する。サーバプロファイル管理部３１は、負荷管理部５１からの通知に従ってサーバプロファイル管理テーブル３３を更新する。なお、サーバは、Ｊｏｂ取得通知を送信した場合には、Ｊｏｂの処理を開始し、処理が終了すれば、処理結果をＪｏｂ割当管理部３６に送信する。
【００４３】
図３の説明に戻って、Ｊｏｂ割当管理部３６は、サーバからＪｏｂ取得通知又はＪｏｂ取得拒否通知を受信し（ステップＳ２１）、Ｊｏｂ取得拒否通知を受信したか判断する（ステップＳ２３）。ケースＡの場合には、Ｊｏｂ生成通知の全ての送信先サーバからＪｏｂ取得拒否通知を受信したか判断する。ケースＢの場合には、Ｊｏｂ生成通知の送信先サーバからＪｏｂ取得拒否通知を受信したか判断する。なお、所定時間内にＪｏｂ取得通知又はＪｏｂ取得拒否通知を受信しない場合も、Ｊｏｂ取得拒否通知を受信したものとして取り扱う。Ｊｏｂ取得拒否通知を受信した場合には、ステップＳ１５で抽出された全てのサーバについて通知を行ったか判断する（ステップＳ２５）。ケースＡの場合、ステップＳ２３でＪｏｂ生成通知の全ての送信先サーバからＪｏｂ取得拒否通知を受信したと判断されているので自動的にステップＳ１５に移行する。一方、ケースＢの場合、ステップＳ１５で複数のサーバが抽出されれば、これまでにその全てにＪｏｂ生成通知を送信したか判断する。
【００４４】
Ｊｏｂ生成通知を送信していないサーバが存在する場合にはステップＳ１９に戻る。一方、Ｊｏｂ生成通知を送信していないサーバが存在しない場合にはステップＳ１５に戻る。このように、Ｊｏｂ割当管理テーブル３７において、サーバが割り当てられていないＪｏｂについては、繰り返しサーバプロファイル管理テーブル３３を参照して少なくとも１のサーバが割り当てられるようにする。
【００４５】
なお、一度Ｊｏｂ取得拒否通知を送信してきたサーバについては、本処理フロー中では、再度Ｊｏｂ生成通知を送信しないように管理しても良い。
【００４６】
一方、Ｊｏｂ取得拒否通知ではなくＪｏｂ取得通知を受信した場合には、Ｊｏｂ割当管理部３６は、Ｊｏｂ割当管理テーブル３７の該当ＪｏｂのデータにＪｏｂ取得サーバＩＤを登録する（ステップＳ２７）。ケースＡの場合、１のサーバからＪｏｂ取得通知を受信した場合には、そのサーバのサーバＩＤを登録する。複数のサーバからＪｏｂ取得通知を受信した場合には、それらのサーバの全てのサーバＩＤを登録する。ケースＢの場合には、１のサーバにＪｏｂが割り当てられたことになるので、当該サーバのサーバＩＤを登録する。
【００４７】
このような処理を実施することによって、Ｊｏｂ生成通知定義ファイル３５に格納されているＪｏｂ生成通知条件に応じたＪｏｂ割当が行われるようになる。より具体的には、Ｊｏｂ数が多い場合には、１のＪｏｂを１のサーバに割り当て、Ｊｏｂ数が少ない場合には、１のＪｏｂを１以上のサーバに割り当てて、より早くＪｏｂの処理を完了したサーバの処理結果を採用することができるようになる。
【００４８】
また、Ｊｏｂ生成通知に応じるか否かは、各サーバが自ら判断するため、マスタコンピュータ３では、各サーバの稼働状況を監視する必要がない。従って、マスタコンピュータ３の処理負荷が減少する。また、サーバに障害が発生した場合には、Ｊｏｂ取得通知が返信されないため、他のサーバにＪｏｂ生成通知を送り直すこととなる。
【００４９】
但し、Ｊｏｂは従来のような単純な割り当てではない。本実施の形態では、サーバが自らの負荷などに基づきＪｏｂ生成通知に応じてＪｏｂ取得通知を送信するかＪｏｂ取得拒否通知を送信するか判断した結果として、Ｊｏｂ割り当てが決定するという点において、Ｐｕｌｌ型のＪｏｂ割り当てとなっている。
【００５０】
なお、サーバは、Ｊｏｂの処理が完了すると、Ｊｏｂの処理結果をＪｏｂ割当管理部３６に通知する。Ｊｏｂ割当管理部３６は、Ｊｏｂの処理結果を該当するＪｏｂデータに登録する。また、Ｊｏｂ割当管理部３６は、当該Ｊｏｂに複数のサーバが割り当てられている場合には、そのうちの１のサーバからＪｏｂの処理結果を受信すると、他のサーバについてＪｏｂの終了を通知するＪｏｂ制御通知を送信し、該当サーバにＪｏｂの処理を終了させる。処理に割り当てたリソースが無駄になるためである。
【００５１】
また、上で述べた処理フローではケースＡの場合でも最悪の場合１のサーバにしかＪｏｂが割り当てられない場合もある。このような状況を回避するため、２以上のサーバからＪｏｂ取得通知を受信しない場合にはステップＳ２３からステップＳ２５に移行するようにしても良い。
【００５２】
また、図４Ｂに示すような処理も、図３及び図４Ａのスレッドとは別スレッドで定期的に又は任意のタイミングで実行される。まず、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７を検索し、処理未了のＪｏｂを抽出する（ステップＳ１０１）。処理結果が登録されていないＪｏｂを特定する。もし、処理未了のＪｏｂが存在する場合には、処理未了のＪｏｂのデータを読み出しておく。そして、処理未了のＪｏｂが存在するか判断し（ステップＳ１０３）、処理未了のＪｏｂが存在しない場合には、処理を終了する。一方、処理未了のＪｏｂが存在する場合には、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７とサーバプロファイル管理テーブル３３とを参照して、現在のＪｏｂ割当状態を特定する（ステップＳ１０５）。すなわち、Ｊｏｂ数とサーバ数とを特定する。そして、Ｊｏｂ生成通知定義ファイル３５に格納されているＪｏｂ生成通知条件に基づき、１のＪｏｂに複数のサーバを割り当て可能な状態にあるか判断する（ステップＳ１０７）。上で述べた例では、Ｊｏｂ数がサーバ数未満であれば１のＪｏｂに複数のサーバを割り当て可能である。Ｊｏｂ数がサーバ数以上であるような１のＪｏｂに複数のサーバを割り当て不能な状態であれば、処理を終了する。
【００５３】
そして、１のＪｏｂに複数のサーバを割り当て可能な状態であると判断された場合には、Ｊｏｂ生成通知部３４は、サーバプロファイル管理テーブル３３を検索し、処理未了のＪｏｂの処理要件を満たし且つ当該Ｊｏｂに割り当てられているサーバより高性能なサーバ（より条件の良いサーバ。具体的には、ＣＰＵの処理速度が速いなど。）を抽出する（ステップＳ１０９）。以下の処理は、ステップＳ１０１で複数のＪｏｂが抽出された場合には各Ｊｏｂについて実施する。ステップＳ１０９でサーバが抽出できたか判断し（ステップＳ１１１）、抽出できなければ処理を終了する。一方、ステップＳ１０９でサーバが抽出できた場合には、Ｊｏｂ生成通知部３４は、抽出されたサーバにＪｏｂ生成通知を送信する（ステップＳ１１３）。これに対してサーバは図４Ａに示した処理を実施する。そうすれば、サーバは、Ｊｏｂ取得通知又はＪｏｂ取得拒否通知をマスタコンピュータ３に送信する。
【００５４】
マスタコンピュータ３のＪｏｂ割当管理部３６は、Ｊｏｂ取得通知又はＪｏｂ取得拒否通知をサーバから受信する（ステップＳ１１５）。そして、Ｊｏｂ割当管理部３６は、Ｊｏｂ取得拒否通知を受信したか判断し（ステップＳ１１７）、Ｊｏｂ取得拒否通知を受信した場合には、処理を終了する。一方、Ｊｏｂ取得通知を受信した場合には、Ｊｏｂ割当管理テーブル３７の該当ＪｏｂのデータにＪｏｂ取得サーバのＩＤを登録する（ステップＳ１１９）。そして処理を終了する。
【００５５】
このような処理を行うことによって、最初は能力の低いサーバしか割り当てられてられなかったが、その後Ｊｏｂの数が減少したりサーバ数が増加するなどでサーバに余裕が生ずると、後からでも能力の高いサーバをそのＪｏｂに割り当てることによって、早期に処理結果を得られるようになる。なお、Ｊｏｂを実施することとなったサーバがフリーズしたり、ネットワークがダウンした場合も対処可能となる。
【００５６】
次に、上で述べた処理の変形として、プログラムのライセンスをも考慮した場合の処理内容を説明する。第１の変形例として、サーバが特定のアプリケーションについて固定のライセンスを有する場合における処理を図５及び図６を用いて説明する。
【００５７】
まず、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成部３２からＪｏｂ生成の通知（ＪｏｂＩＤの通知）を受信する（ステップＳ５１）。そして、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７から通知に係るＪｏｂの処理要件を読み出す（ステップＳ５３）。そして、サーバプロファイル管理テーブル３３に対して、Ｊｏｂの処理要件を満たすサーバを検索し、抽出する（ステップＳ５５）。例えば、このステップにおいて複数のサーバを抽出しておく。
【００５８】
さらに、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７を参照して、ステップＳ５５で抽出されたサーバのうち、ライセンスを保有し且つそのライセンスのプログラムを未実行であるサーバを特定する（ステップＳ５７）。そして、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知定義ファイル３５から、サーバへのＪｏｂ生成通知条件を読み出す（ステップＳ５９）。
【００５９】
その後、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知条件に従って、ステップＳ５７で特定されたサーバにＪｏｂ生成通知を送信する（ステップＳ６１）。Ｊｏｂ生成通知は、ＪｏｂＩＤを含み、さらにＪｏｂ実行に必要なデータ全てを含む。Ｊｏｂ生成通知部３４は、ケースＡの場合、ステップＳ５７で特定されたサーバのうちＪｏｂ生成通知条件に従った数のサーバにＪｏｂ生成通知を送信する。一方、Ｊｏｂ生成通知部３４は、ケースＢの場合、ステップＳ５７で特定されたサーバのうち最も条件の良い１のサーバにＪｏｂ生成通知を送信する。なお、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知の送信先サーバのＩＤなどをＪｏｂ割当管理部３６に出力しておく。
【００６０】
一方、サーバ側の処理は、図４Ａに示したものと同じである。
【００６１】
処理は端子Ａを介して図６の処理に移行して、Ｊｏｂ割当管理部３６は、サーバからＪｏｂ取得通知又はＪｏｂ取得拒否通知を受信し（ステップＳ６３）、Ｊｏｂ取得拒否通知を受信したか判断する（ステップＳ６５）。ケースＡの場合には、Ｊｏｂ生成通知の全ての送信先サーバからＪｏｂ取得拒否通知を受信したか判断する。ケースＢの場合には、Ｊｏｂ生成通知の送信先サーバからＪｏｂ取得拒否通知を受信したか判断する。Ｊｏｂ取得拒否通知を受信した場合には、ステップＳ５７で特定された全てのサーバについて通知を行ったか判断する（ステップＳ６７）。ケースＡの場合、ステップＳ６５でＪｏｂ生成通知の全ての送信先サーバからＪｏｂ取得拒否通知を受信したと判断されているので自動的に端子Ｃを介してステップＳ５５に移行する。一方、ケースＢの場合、ステップＳ５７で複数のサーバが特定されれば、これまでにその全てにＪｏｂ生成通知を送信したか判断する。
【００６２】
Ｊｏｂ生成通知を送信していないサーバが存在する場合には端子Ｂを介してステップＳ６１に戻る。一方、Ｊｏｂ生成通知を送信していないサーバが存在しない場合には端子Ｃを介してステップＳ５５に戻る。
【００６３】
一方、Ｊｏｂ取得拒否通知ではなくＪｏｂ取得通知を受信した場合には、Ｊｏｂ割当管理部３６は、Ｊｏｂ割当管理テーブル３７の該当ＪｏｂのデータにＪｏｂ取得サーバＩＤを登録する（ステップＳ６９）。ケースＡの場合、１のサーバからＪｏｂ取得通知を受信した場合には、そのサーバのサーバＩＤを登録する。複数のサーバからＪｏｂ取得通知を受信した場合には、それらのサーバの全てのサーバＩＤを登録する。ケースＢの場合には、１のサーバにＪｏｂが割り当てられたことになるので、当該サーバのサーバＩＤを登録する。
【００６４】
このようにすれば、アプリケーションに固定のライセンスが割り当てられている場合に対応することができる。
【００６５】
なお、図４Ｂの処理フローも別スレッドで実施される。
【００６６】
このようにすればアプリケーションのライセンスを考慮しなければならない場合でも対処できるようになる。
【００６７】
また、ライセンス総数より多くアプリケーションをサーバにインストールしておき、そのアプリケーションの同時実行サーバ数をライセンス総数に制限する場合には、ステップＳ５７の代わりに以下のような処理を実施すればよい。具体的には、Ｊｏｂ生成通知部３４は、Ｊｏｂ実行に必要なライセンス・アプリケーションを実行しているサーバ数がライセンス総数未満であるか判断する。ライセンス総数は、サーバプロファイル管理テーブル３３において各アプリケーションについて管理されている。Ｊｏｂ実行に必要なライセンス・アプリケーションを実行しているサーバ数は、Ｊｏｂ割当管理テーブル３７を検索して計数する。ここで、Ｊｏｂ実行に必要なライセンス・アプリケーションを実行しているサーバ数がライセンス総数となっている場合には、これ以上ライセンス・アプリケーションを実行することはできないので、当該ライセンス・アプリケーションの実行がいずれかのサーバで終了するまで、待機する。
【００６８】
そして、Ｊｏｂ実行に必要なライセンス・アプリケーションを実行しているサーバ数がライセンス総数未満である場合には、Ｊｏｂ生成通知部３４は、ライセンス・アプリケーションを未実行であるサーバを抽出する。ライセンス・アプリケーションがインストールされているサーバはサーバプロファイル管理テーブル３３から特定され、そのサーバがライセンス・アプリケーションを未実行であるか否かはＪｏｂ割当管理テーブル３７を検索することによって判断できる。
【００６９】
このようにすれば、浮動ライセンス方式を採用している場合にも対応することができる。
【００７０】
次に、Ｊｏｂの優先度を考慮する場合の変形例について図７を用いて説明する。以下に説明する処理は、図３のステップＳ１９に代わって実施する。
【００７１】
まず、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７から、生成されたＪｏｂの優先度を取得する（ステップＳ７１）。そして、優先度が所定値Ｘ以上であるか判断する（ステップＳ７３）。優先すべきＪｏｂほど優先度の値が大きくなる場合に、このような判断を行い、優先すべきＪｏｂほど優先度の値が小さくなる場合には、優先度が所定値Ｘ以下であるか判断する。
【００７２】
優先度が所定値Ｘ未満である場合には、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知条件に従って、ステップＳ１５で抽出されたサーバにＪｏｂ生成通知を送信する（ステップＳ７５）。ステップＳ１９の説明と同様の処理を行う。一方、優先度が所定値Ｘ以上である場合には、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知条件にかかわらず、ステップＳ１５で抽出された複数のサーバに、Ｊｏｂ生成通知を送信する（ステップＳ７７）。すなわち、優先度が所定値Ｘ以上である場合には、ケースＡと同様に、Ｊｏｂの処理要件を満たす複数のサーバに当該Ｊｏｂを割り当てることによって、可能な限り早期に処理結果を得るようにする。
【００７３】
このようにすれば、優先度に応じてＪｏｂ割当を切り替えて、優先度が高い場合には可能な限り早期に処理結果を取得できるようになる。
【００７４】
次に、計算結果が計算毎に異なり、多数決で計算結果を特定するような多数決型Ｊｏｂを取り扱う変形例を図８及び図９を用いて説明する。
【００７５】
基本的に、Ｊｏｂ生成部３２は、図２のステップＳ３の代わりに図８の処理を行う。まず、Ｊｏｂ生成部３２は、生成されたＪｏｂが多数決型であるか判断する（ステップＳ８１）。生成されたＪｏｂが多数決型でない場合には、通常どおりＪｏｂのデータを、Ｊｏｂ割当管理テーブル３７に登録する（ステップＳ８３）。そして元の処理に戻る。
【００７６】
一方、生成されたＪｏｂが多数決型である場合には、Ｊｏｂ数の指定があるか判断する（ステップＳ８５）。Ｊｏｂ数の指定がない場合には、指定数なしの多数決型Ｊｏｂとして、Ｊｏｂのデータを、Ｊｏｂ割当管理テーブル３７に登録する（ステップＳ８７）。そして元の処理に戻る。
【００７７】
また、Ｊｏｂ数の指定がある場合には、指定Ｊｏｂ数のＪｏｂのデータを、Ｊｏｂ割当管理テーブル３７に登録する（ステップＳ８９）。Ｊｏｂ割当管理テーブル３７には、指定Ｊｏｂ数のＪｏｂのデータを各々並列的な関係として登録する。より具体的には、親ノードが多数決型Ｊｏｂの全体に関するノードで、個々のＪｏｂについては当該親ノードの子ノードとして並列（すなわち同列）に配置される。そして元の処理に戻る。
【００７８】
このようにＪｏｂ数が指定されていれば、個々のＪｏｂをＪｏｂ割当管理テーブル３７に登録する。一方、Ｊｏｂ数が指定されていなければ、指定数なしの多数決型ＪｏｂとしてＪｏｂを登録し、実際にＪｏｂ生成通知を送信する際に、所定数のサーバにＪｏｂが割り当てられるようにする。
【００７９】
次に、このような多数決型Ｊｏｂの場合のＪｏｂ通知処理について図９を用いて説明する。Ｊｏｂ生成通知部３４は、ステップＳ１９の代わりに以下の処理を実施する。
【００８０】
まず、Ｊｏｂ生成通知部３４は、Ｊｏｂ割当管理テーブル３７から読み出したＪｏｂが指定数なしの多数決型Ｊｏｂである判断する（ステップＳ９１）。指定数なしの多数決型Ｊｏｂでない場合には、Ｊｏｂ生成通知部３４は、Ｊｏｂ生成通知条件に従って、ステップＳ１５で特定されたサーバに送信する（ステップＳ９３）。なお、子ノードについてのみ通常どおり処理する。そして元の処理に戻る。
【００８１】
一方、指定数なし多数決型Ｊｏｂである場合には、Ｊｏｂ生成通知定義ファイル３５に規定されたデフォルトの数のサーバに、Ｊｏｂ生成通知を送信する（ステップＳ９５）。なお、１つでもＪｏｂ取得拒否通知を受け取った場合には、代替となるサーバにＪｏｂ生成通知を送信する。また、Ｊｏｂ割当管理部３６は、多数決型Ｊｏｂの計算結果の集計を行ってＪｏｂ割当管理テーブル３７に登録する。指定数ありの多数決型Ｊｏｂの場合には、子ノードにそれぞれの処理結果を登録し、親ノードにＪｏｂ割当管理部３６の集計結果を登録する。
【００８２】
このようにすれば多数決型Ｊｏｂでも簡単に取り扱うことができるようになる。
【００８３】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば図１に示した機能ブロック図は、必ずしも実際のプログラム・モジュール構成に対応しない。また、処理フローについても同様の効果を奏する場合には、処理ステップの順番を入れ替えたり並行して実施することも可能である。
【００８４】
また、マスタコンピュータ３についても複数のコンピュータにより実施される場合もある。
【００８５】
さらに、Ｊｏｂ生成通知定義ファイル３５に格納されるＪｏｂ生成通知条件については１つの例のみ示したが、このＪｏｂ生成通知条件を変更することによって、様々な態様でＪｏｂ生成通知を行うことができるようになる。例えば、上で述べた例ではＪｏｂ数とサーバ数とで２段階の切り替えを行っていたが、より多くの段階で処理を切り替えるようにしても良い。また、別のパラメータを導入して処理を切り替えるようにしてもよい。さらにＪｏｂ生成通知を送信する順番などについての条件が登録される場合もある。
【００８６】
なお、マスタコンピュータ３及び各サーバは、コンピュータ装置であって、図１１に示すように当該コンピュータ装置においては、メモリ２５０１（記憶部）とＣＰＵ２５０３（処理部）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ）及びＷｅｂブラウザを含むアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。このようなコンピュータは、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８７】
（付記１）
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当プログラムであって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、
前記ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成された前記ジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送ステップと、
を、マスタコンピュータに実行させるためのジョブ割当プログラム。
【００８８】
（付記２）
前記ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成された前記ジョブに対応して前記ジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部に登録するステップと、
前記ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出するステップと、
前記割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様が前記処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、前記処理結果が未登録のジョブの処理に必要な構成を有し且つ前記処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信するステップと、
をさらにマスタコンピュータに実行させる付記１記載のジョブ割当プログラム。
【００８９】
（付記３）
前記ジョブの割当態様に関するデータが、
前記ジョブの数が前記コンピュータの数以上である状態の場合には、同一ジョブに複数のコンピュータの割り当てを禁止し、
前記ジョブの数が前記コンピュータの数未満である状態の場合には、同一ジョブに複数のコンピュータの割り当てを許容する
ことを表すデータを含む付記１記載のジョブ割当プログラム。
【００９０】
（付記４）
前記再送ステップが、
前記ジョブの割当態様が、生成された前記ジョブに１のコンピュータを割り当てることを示している場合、前記送信ステップ以降のステップ又は前記特定ステップで特定されたコンピュータの全てから前記ジョブ取得拒否通知を受信した場合には前記特定ステップ以降のステップを実施するステップ
を含む付記１記載のジョブ割当プログラム。
【００９１】
（付記５）
前記再送ステップが、
前記ジョブの割当態様が、生成された前記ジョブに複数のコンピュータを割り当てることを示している場合、前記特定ステップで特定されたコンピュータの全てから前記ジョブ取得拒否通知を受信した際には前記特定ステップ以降のステップを実施するステップ
を含む付記１記載のジョブ割当プログラム。
【００９２】
（付記６）
生成された前記ジョブの優先度が所定の基準より高いか判断するステップと、
生成された前記ジョブの優先度が所定の基準より高い場合には、前記ジョブの割当態様にかかわらず、前記特定ステップにおいて特定された複数のコンピュータにジョブ生成通知を送信する送信ステップと、
をさらに含む付記１記載のジョブ割当プログラム。
【００９３】
（付記７）
前記特定ステップが、
生成された前記ジョブで用いられるアプリケーションの実行数がライセンス総数より少ないか判断するステップと、
生成された前記ジョブで用いられるアプリケーションの実行数がライセンス総数より少ないと判断された場合、当該アプリケーションがインストールされており且つ生成された前記ジョブの処理に必要な他の構成を有するコンピュータを特定するステップと、
を含む付記１記載のジョブ割当プログラム。
【００９４】
（付記８）
生成された前記ジョブが、計算処理数が指定された多数決型のジョブである場合、各前記計算処理を１つの前記ジョブとして取り扱うことを特徴とする付記１記載のジョブ割当プログラム。
【００９５】
（付記９）
生成された前記ジョブが、計算処理数が無指定の多数決型のジョブである場合、前記ジョブの割当態様にかかわらず、前記特定ステップにおいて特定された所定数のコンピュータにジョブ生成通知を送信するステップ、
をさらに含む付記１記載のジョブ割当プログラム。
【００９６】
（付記１０）
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当プログラムであって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、
前記ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成された前記ジョブに対応して前記ジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部に登録するステップと、
前記ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出するステップと、
前記割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様が前記処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、前記処理結果が未登録のジョブの処理に必要な構成を有し且つ前記処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信するステップと、
を、マスタコンピュータに実行させるためのジョブ割当プログラム。
【００９７】
（付記１１）
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当方法であって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定ステップと、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定するステップと、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信ステップと、
前記ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成された前記ジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送ステップと、
を含み、マスタコンピュータに実行されるジョブ割当方法。
【００９８】
（付記１２）
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当装置であって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定手段と、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定する手段と、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信手段と、
前記ジョブ生成通知に対する応答としてジョブ取得拒否通知を受信した場合、生成された前記ジョブの処理に必要な構成を有するコンピュータへのジョブ生成通知の送信を再実施する再送手段と、
を有するジョブ割当装置。
【００９９】
（付記１３）
ジョブを処理する各コンピュータの負荷状態を管理することなく当該各コンピュータにジョブを割り当てるジョブ割当装置であって、
前記各コンピュータの構成のデータを格納するプロファイル管理データ格納部を用いて、生成されたジョブの処理に必要な構成を有するコンピュータを特定する特定手段と、
ジョブの生成状態に対応して前記ジョブに対するコンピュータの割当態様に関するデータを格納する割当態様データ格納部を用いて、現在のジョブの生成状態に応じた、前記ジョブの割当態様を特定する手段と、
特定された前記ジョブの割当態様に従って、前記特定ステップにおいて特定されたコンピュータのうち少なくともいずれかにジョブ生成通知を送信する送信手段と、
前記ジョブ生成通知に対する応答としてジョブ取得通知を受信した場合には、生成された前記ジョブに対応して前記ジョブ取得通知の送信元のコンピュータの識別情報をジョブ割当データ格納部に登録する手段と、
前記ジョブ割当データ格納部を検索して、処理結果が未登録のジョブを抽出する手段と、
前記割当態様データ格納部を用いて、抽出時点のジョブの生成状態に応じた、前記ジョブの割当態様を特定する手段と、
特定された前記ジョブの割当態様が前記処理結果が未登録のジョブにコンピュータの重複割当を許容するものである場合、前記処理結果が未登録のジョブの処理に必要な構成を有し且つ前記処理結果が未登録のジョブを現在処理しているコンピュータより性能が高いコンピュータへジョブ生成通知を送信する手段と、
を有するジョブ割当装置。
【０１００】
（付記１４）
マスタコンピュータで管理されるコンピュータにより実行されるジョブ取得方法であって、
前記マスタコンピュータからジョブ生成通知を受信するステップと、
前記ジョブ生成通知を受信時点で、前記コンピュータの負荷状態が所定の基準より低いか判断するステップと、
前記コンピュータの負荷状態が前記所定の基準より低い場合には、前記マスタコンピュータにジョブ取得通知を送信するステップと、
前記コンピュータの負荷状態が前記所定の基準以上である場合には、前記マスタコンピュータにジョブ取得拒否通知を送信するステップと、
を含むジョブ取得方法。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施の形態におけるシステムの概要図である。
【図２】ジョブ生成部の処理フローを示す図である。
【図３】Ｊｏｂ生成通知を送信する際の処理フローを示す図である。
【図４Ａ】各サーバの処理フローを示す図である。
【図４Ｂ】Ｊｏｂメンテナンス処理の処理フローを示す図である。
【図５】アプリケーションのライセンスを考慮した場合の処理フローを示す図である。
【図６】アプリケーションのライセンスを考慮した場合の処理フローを示す図である。
【図７】優先度に基づく切り替え処理の処理フローを示す図である。
【図８】多数決型Ｊｏｂ生成処理の処理フローを示す図である。
【図９】多数決型Ｊｏｂ通知処理の処理フローを示す図である。
【図１０Ａ】サーバプロファイル管理テーブルの一例を示す図である。
【図１０Ｂ】Ｊｏｂ生成通知定義ファイルの一例を示す図である。
【図１０Ｃ】Ｊｏｂ割当管理テーブルの一例を示す図である。
【図１１】コンピュータの機能ブロックを示す図である。
【符号の説明】
【０１０２】
１１乃至１３  ネットワーク
５１  負荷管理部    ５２  Ｊｏｂ取得ポリシー格納部
３１  サーバプロファイル管理部
３２  Ｊｏｂ生成部
３３  サーバプロファイル管理テーブル
３４  Ｊｏｂ生成通知部
３５  Ｊｏｂ生成通知定義ファイル
３６  Ｊｏｂ割当管理部
３７  Ｊｏｂ割当管理テーブル
【図１】
2008152618.tif 000003
【図２】
2008152618.tif 000004
【図３】
2008152618.tif 000005
【図４Ａ】
2008152618.tif 000006
【図４Ｂ】
2008152618.tif 000007
【図５】
2008152618.tif 000008
【図６】
2008152618.tif 000009
【図７】
2008152618.tif 000010
【図８】
2008152618.tif 000011
【図９】
2008152618.tif 000012
【図１０Ａ】
2008152618.tif 000013
【図１０Ｂ】
2008152618.tif 000014
【図１０Ｃ】
2008152618.tif 000015
【図１１】
2008152618.tif 000016