(57)【要約】【課題】新たなソフトウェアをジョブ処理装置にインストールする必要なく、複数のジョブ処理からなるジョブを複数のジョブ処理装置で実行させることを可能とする。【解決手段】ジョブを構成する複数の処理対象を複数のジョブ処理装置に実行させる分散処理において、各処理対象に対応するジョブの実行命令が記述された実行ファイル、および処理対象を実行し得るジョブ処理装置の条件情報を受信する。そして、処理対象を実行するジョブ処理装置を条件情報によって決定する。そして、ジョブ処理装置が実行する処理対象以外の処理対象を実行する他のジョブ処理装置に処理対象の処理依頼を実行する実行ファイルを、ジョブ処理装置に送信する。【選択図】図１
2008293278.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを構成する複数の処理対象を複数のジョブ処理装置に実行させる分散処理を、分散処理装置に実行させるための分散処理プログラムであって、
該分散処理装置に、
該各処理対象に対応するジョブの実行命令が記述された実行ファイル、および該処理対象を実行し得るジョブ処理装置の条件情報を受信するステップ、
該処理対象を実行するジョブ処理装置を該条件情報によって決定するステップ、
該ジョブ処理装置が実行する処理対象以外の処理対象を実行する他のジョブ処理装置に処理対象の処理依頼を実行する実行ファイルを、該ジョブ処理装置に送信するステップ、
を実行させるため分散処理プログラム。
【請求項２】
該処理対象の該実行ファイルを、該処理対象を実行する該ジョブ処理装置に送信するステップを更に有することを特徴とする請求項１に記載の分散処理プログラム。
【請求項３】
該決定したジョブ処理装置の識別情報と実行ファイル名情報とを、該処理対象を実行するジョブ処理装置に送信するステップを更に有することを特徴とする請求項１に記載の分散処理プログラム。
【請求項４】
該ジョブの処理対象の処理の順番情報を更に受信し、
該順番情報で先頭となる処理対象を実行するジョブ処理装置に、該処理対象を依頼する情報を送信するステップを更に有することを特徴とする請求項１に記載の分散処理プログラム。
【請求項５】
該ジョブの最初に実行する処理対象がコマンドラインインタプリタ形式で記述されることを特徴とする請求項４に記載の分散処理プログラム。
【請求項６】
ジョブを構成する複数の処理対象をジョブ処理装置に実行させる分散処理装置であって、
該各処理対象に対応するジョブの実行命令が記述された実行ファイル、および該処理対象を実行し得るジョブ処理装置の条件情報を受信し、
該処理対象を実行するジョブ処理装置を該条件情報によって決定し、
該ジョブ処理装置が実行する処理対象以外の処理対象を実行する他のジョブ処理装置に処理対象の処理依頼を実行する実行ファイルを、該ジョブ処理装置に送信する
ことを特徴とする分散処理装置。
【請求項７】
分散処理装置がジョブを構成する複数の処理対象を複数のジョブ処理装置に実行させる分散処理システムの分散処理方法であって、
該分散処理装置が、該各処理対象に対応するジョブの実行命令が記述された実行ファイル、および該処理対象を実行し得るジョブ処理装置の条件情報を受信し、
該分散処理装置が、該条件情報により決定した該処理対象を実行する該ジョブ処理装置にジョブ処理依頼を送信し、
該ジョブ処理依頼を送信されたジョブ処理装置が該処理対象を実行するための実行ファイルの取得依頼を該分散処理装置に送信し、
該分散処理装置が、該ジョブ処理装置が実行する処理対象に対応する第一の実行ファイルと該ジョブ処理装置が実行する処理対象以外の処理対象を実行する他のジョブ処理装置に処理対象の依頼を実行する第二の実行ファイルとを、該ジョブ処理装置に送信する
ことを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理に関する。
【背景技術】
【０００２】
分散処理は、複数のコンピュータをネットワークによって接続し、各コンピュータが相互に通信をして処理要求（ジョブ）に対する処理を行う処理方式である。分散処理の一つにグリッドコンピューティング技術がある。
【０００３】
グリッドコンピューティング技術では、ジョブは広域に分散するジョブ処理を実行する計算機（以下、ジョブ処理装置という）に投入される。一般的に、各ジョブ処理装置のＣＰＵの種類、メモリ、ディスクの量などのハードウェア構成、各ジョブ処理装置にインストールされているオペレーティングシステム（以下、ＯＳとする）ソフトウェア構成、および各ジョブ処理装置の管理者は異なることが多い。グリッド計算のシステムでジョブ処理を実行するジョブ処理装置は、ジョブ処理を実行し得る条件を有する必要がある。グリッドコンピューティングのシステムに接続する全てのジョブ処理装置がジョブ処理を実行させるためのハードウェアおよびソフトウェアを有することは現実的ではない。したがって、グリッドコンピューティングシステムの環境では、利用者はジョブ処理を実行し得るジョブ処理装置を選択する必要がある。分散処理装置は利用者により設定された各ジョブ処理を実行させるジョブ処理装置の種類情報に適合するジョブ処理装置にジョブ処理を実行させる。
【０００４】
しかしながら、個々のジョブに対してジョブ処理装置の種類を指定するため、特定のジョブ処理装置以外の種類のジョブ処理装置で実行させることが出来ない。その結果、分散処理装置は、ジョブ処理のロードバランシングを行うことが出来ない。ジョブ処理のロードバランシングを行うためには、利用者はジョブ処理装置の種類毎にジョブ処理のためのソフトウェアを開発する必要がある。さらに、ジョブ処理の負荷分散の技術としてモバイルエージェントの技術がある。モバイルエージェントは、ジョブ処理にジョブ処理の計算途中の結果を保持させる機能を記述しておき、ジョブ処理装置を移動して実行する技術である。しかしながら、モバイルエージェントは、モバイルエージェントに対応したジョブ処理を実行するアプリケーションを開発する必要があり、既存のソフトウェア資産の使用が出来ない。
【０００５】
従来技術として以下の文献がある。
【特許文献１】特表２００７−５００３８７号公報
【特許文献２】特表２００１−９２６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、ジョブを構成する複数の処理対象を、異なる装置構成となる複数のジョブ処理装置にそれぞれ実行させることを可能とする分散処理プログラム、分散処理装置、および分散処理方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の第一の解決手段では、ジョブを構成する複数の処理対象を複数のジョブ処理装置に実行させる分散処理を、分散処理装置に実行させる。
第一の解決手段は、分散処理装置に、各処理対象に対応するジョブの実行命令が記述された実行ファイル、および処理対象を実行し得るジョブ処理装置の条件情報を受信する。そして、処理対象を実行するジョブ処理装置を条件情報によって決定する。そして、ジョブ処理装置が実行する処理対象以外の処理対象を実行する他のジョブ処理装置に処理対象の処理依頼を実行する実行ファイルを、ジョブ処理装置に送信する。
【０００８】
本発明の第二の解決手段では第一の解決手段に加えて、処理対象の実行ファイルを、処理対象を実行するジョブ処理装置に送信する。
【０００９】
本発明の第三の解決手段では第一の解決手段に加えて、決定したジョブ処理装置の識別情報と実行ファイル名情報とを、処理対象を実行するジョブ処理装置に送信する。
【００１０】
本発明の第四の解決手段では第一の解決手段に加えて、ジョブの処理対象の処理の順番情報を更に受信し、順番情報で先頭となる処理対象を実行するジョブ処理装置に、処理対象を依頼する情報を送信する。
【００１１】
本発明の第五の解決手段では第四の解決手段に加えて、ジョブの最初に実行する処理対象がコマンドラインインタプリタ形式で記述されることを特徴とする請求項４に記載の分散処理プログラム。
【発明の効果】
【００１２】
本発明により、ジョブ処理装置が実行する処理対象以外を他のジョブ処理装置に移動する処理に変更したジョブをジョブ処理装置に送信することが可能となる。この結果、本発明は、ジョブを構成する複数の処理対象を、異なる装置構成となる複数のジョブ処理装置にそれぞれ実行させることを可能とする分散処理プログラム、分散処理装置、および分散処理方法の提供が可能となる。
【発明を実施するための最良の形態】
【００１３】
以下の説明において、ジョブは、グリッドコンピューティングシステム１が利用者からに受付ける作業の単位である。ジョブ処理は、ジョブの内、ジョブ処理装置２０が実行する処理の単位である。
【００１４】
以下、本発明の実施の形態を説明する。図１は、グリッドコンピューティングシステム１の構成図である。グリッドコンピューティングシステム１は、ジョブ処理を管理する管理サーバ（分散処理装置）１０とジョブ処理を実行するジョブ処理装置２０とがネットワーク３０によって接続される構成である。ネットワーク３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００１５】
本実施例では、グリッドコンピューティングシステム１内の一つの計算機を管理サーバ１０とし、一つ以上の複数の計算機をジョブ処理装置２０とする。管理サーバ１０がジョブ処理装置２０にジョブ処理を依頼する。なお、本実施例のグリッドコンピューティングシステム１では、ジョブ処理装置２０の、処理能力、一時メモリの記憶領域、記憶装置の記憶領域、オペレーティングシステム（以下ＯＳとする。）等がジョブ処理装置２０間で同一であるとは限らない。
【００１６】
次に、管理サーバ１０のハードウェア構成について説明する。図２は、管理サーバ１０のハードウェア構成図である。管理サーバ１０は、制御部１０１、メモリ１０２、入力部１０３、記憶部１０４、出力部１０５、およびネットワークインターフェース部１０６を有し、それぞれがバス１０７に接続された構成である。
【００１７】
制御部１０１は管理サーバ１０の全体を制御する。例えば、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）である。また、制御部１０１はメモリ１０２に展開されたジョブ管理プログラム１０８を実行する。ジョブ管理プログラム１０８は制御部１０１を、ジョブ処理を実行するジョブ処理装置２０を選択するモジュール。ジョブ処理をジョブ処理装置２０に依頼するモジュール、移動プログラム１０９の入力情報を生成するモジュール、移動プログラム１０９のファイル名をジョブ実行ファイル名で置換するモジュール等として機能させる。
【００１８】
メモリ１０２は、記憶部１０４に格納されたジョブ管理プログラム１０８が展開される記憶領域である。また、メモリ１０２は制御部１０１がジョブ管理プログラム１０８を実行する際に生成される種々の演算結果が格納される記憶領域である。メモリ１０２は例えばＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）である。
【００１９】
入力部１０３は利用者からのジョブの処理の対象となるジョブ処理依頼１７を受付ける。入力部１０３は、例えば、キーボード、マウス、タッチパネル等である。なお、ジョブ処理依頼１７は、ネットワーク３０に接続された利用者端末からネットワーク３０を経由して入力されることも可能である。出力部１０５は、ジョブ処理の結果情報を出力する。また、ネットワーク３０を経由してジョブ処理の結果情報を利用者端末に出力することも可能である。
【００２０】
出力部１０５は、例えば、ディスプレイ（表示装置）等である。記憶部１０４は、ジョブ管理プログラム１０８、ジョブ処理装置テーブル４０、ジョブ処理依頼１７、移動プログラム１０９等が格納される。記憶部１０４は例えばハードディスク装置である。ネットワークインターフェース部１０６は、ネットワーク３０に接続し、ジョブ処理装置２０との間で各種の情報の送受信を行う。
【００２１】
ここで、管理サーバ１０が有するジョブ処理装置テーブル４０について説明する。図３は、ジョブ処理装置テーブル４０の構成例である。ジョブ処理装置テーブル４０は、管理サーバ１０が管理する各ジョブ処理装置２０の状態を格納したテーブルである。ジョブ処理装置テーブル４０は、ジョブ処理装置識別情報４１、ＯＳ情報４２、所有アプリケーション（ＡＰＰ）情報４３、ＣＰＵ情報４４、メモリ量情報４５、および負荷状態情報４６から構成されるレコード４７を有する。
【００２２】
ジョブ処理装置識別情報４１は各ジョブ処理装置２０を識別するための識別情報である。ＯＳ情報４２は、ジョブ処理装置２０が有するＯＳの種別情報である。所有アプリケーション（ＡＰＰ）情報４３は、ジョブ処理装置２０が有するアプリケーションソフトウェアの種類情報である。ＣＰＵ情報４４はジョブ処理装置２０のＣＰＵの種類情報である。メモリ量情報４５は、ジョブ処理装置２０がジョブ処理に使用可能なメモリの領域の大きさ情報である。負荷状態情報４６は、ジョブ処理装置２０から取得するジョブ処理装置２０の負荷の状態の情報である。
【００２３】
次に、ジョブ処理装置２０のハードウェア構成について説明する。図４は、ジョブ処理装置２０のハードウェア構成図である。ジョブ処理装置２０は、制御部１１１、メモリ１１２、入力部１１３、記憶部１１４、出力部１１５、およびネットワークインターフェース部１１６を有し、それぞれがバス１１７に接続された構成である。
【００２４】
制御部１１１はジョブ処理装置２０の全体を制御する。例えば、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）である。また、制御部１１１はメモリ１１２に展開されたジョブ実行プログラム１１８によってジョブ処理ファイルを実行する。ジョブ実行プログラム１１８は制御部１１１をジョブ処理の実行モジュールとして機能させる。
【００２５】
メモリ１１２は、記憶部１１４に格納されたジョブ実行プログラム１１８が展開される記憶領域である。また、メモリ１１２は制御部１１１がジョブ実行プログラム１１８を実行する際に生成される種々の演算結果が格納される記憶領域である。メモリ１１２は例えばＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）である。
【００２６】
入力部１１３は、例えば、キーボード、マウス、タッチパネル等である。出力部１１５は、例えば、モニタである。記憶部１１４は、ジョブ実行プログラム１１８が格納される。また、ジョブ処理依頼情報１７、ジョブ実行ファイル情報１７１、ジョブ手順ファイル１７２、ジョブ処理の入力データ情報１７３などが格納される。記憶部１１４は例えばハードディスク装置である。ネットワークインターフェース部１１６は、ネットワーク３０に接続し、管理サーバ１０および他のジョブ処理装置２０との間で各種の情報の送受信を行う。
【００２７】
次に、グリッドコンピューティングシステム１でのジョブ処理依頼１７が入力されてからジョブ処理結果を出力するまでの処理の流れについて説明する。
【００２８】
図５はジョブの処理の流れを示す図である。
【００２９】
まず、利用者はジョブ処理依頼１７を管理サーバ１０に登録する。図５では、利用者は利用者端末からネットワーク３０を経由してジョブ処理依頼１７を管理サーバ１０に登録する。
【００３０】
図６はジョブ処理依頼１７の構成例である。
【００３１】
ジョブ処理依頼１７は、ジョブ実行ファイル１７１、ジョブ処理の手順を示すジョブ手順ファイル１７２、およびジョブ処理に必要な入力データファイル１７３を有する。なお、ジョブ処理に入力データが不要な場合は、入力データファイル１７３は不要である。ジョブ処理依頼１７は複数のジョブ処理を含む場合がある。複数のジョブ処理を含む場合は、ジョブ処理毎にジョブ実行ファイル１７１を有する。
【００３２】
ジョブ実行ファイル１７１はジョブ処理装置２０が実行するジョブ処理の実行命令が記述されたファイルである。例えば、ジョブ実行ファイルは、ジョブ処理装置２０が読み取り可能なバイナリ形式のファイルである場合がある。また、ジョブ実行ファイルはテキスト形式の場合もある。テキスト形式のジョブ実行ファイルは、コマンドインタプリタとして処理される。コマンドインタプリタは、ジョブ実行ファイルに格納されたテキストを読み取り、ＯＳあるいはアプリケーションソフトウェアが解読可能な処理命令に変換し、ＯＳあるいはアプリケーションソフトウェアに処理命令を受け渡す処理を実行する。コマンドインタプリタは、例えば、Ｓｈｅｌｌである。Ｓｈｅｌｌの場合、処理対象となるジョブ実行ファイルはＳｈｅｌｌスクリプトである。図６でのジョブ実行ファイルは、ジョブ実行ファイル「ａ」１７１−１、ジョブ実行ファイル「ｂ」１７１−２、ジョブ実行ファイル「ｂ」１７１−３がある。図６のジョブ実行ファイル「ａ」１７１−１はジョブの前処理及び後処理を実行する。また、ジョブ実行ファイル「ａ」１７１−１はジョブの前処理及び後処理の間でジョブ処理「ｂ」を実行する。
【００３３】
ジョブ手順ファイル１７２はジョブ処理の手順を示す情報を有する。ジョブ手順ファイル１７２は、複数のジョブ処理の内、最初に実行するジョブ処理の情報であるジョブ処理順番情報１７５が定義される。ジョブ手順ファイル１７２は、ジョブ実行ファイル１７１のジョブ処理を実行し得るジョブ処理装置２０の条件情報とジョブ実行ファイル１７１とを対応付けたジョブ処理装置条件情報１７４を有する。図６では、ジョブ実行ファイル名「ａ」１７１−１のジョブ処理はＬｉｎｕｘ（登録商標）  ＯＳが実行可能であることを示す。また、ジョブ実行ファイル名「ｂ」１７１−２およびジョブ実行ファイル名「ｂ」１７１−３のジョブ処理はＬｉｎｕｘ（登録商標）  ＯＳあるいはＷｉｎｄｏｗｓ（登録商標）  ＯＳが実行可能であることを示す。ジョブ処理装置条件情報１７４は、例えば、ジョブ処理装置のジョブ処理に使用可能なメモリの記憶領域の大きさ、ジョブ処理に使用可能な記憶装置の記憶領域の大きさ、ジョブ処理装置のＯＳの種類、ジョブ処理装置が有するアプリケーションソフトウェアの種類等である。なお、本実施例のジョブ処理依頼１７はジョブ処理装置２０そのものを指定するのではない。ジョブ処理依頼１７はジョブ処理を実行可能なジョブ処理装置２０の条件情報を有する。
【００３４】
また、一つのジョブ処理に対して複数のジョブ実行ファイル１７１を有する場合もある。例えば、一つのジョブ処理に対して、Ｌｉｎｕｘ（登録商標）  ＯＳで実行可能なジョブ実行ファイル「ｂ」１７１−２とＷｉｎｄｏｗｓ（登録商標）  ＯＳで実行可能なジョブ実行ファイル「ｂ」１７１−３の二つを設定しておくことができる。
【００３５】
図５の説明に戻る。管理サーバ１０は利用者端末からネットワーク３０を経由してジョブ処理依頼１７を取得する（Ｓ０１）。管理サーバ１０はジョブ処理依頼１７からジョブ処理を実行するジョブ処理装置２０を決定する（Ｓ０２）。
【００３６】
ここで、管理サーバ１０がＳ０２で実行するジョブ処理装置２０を決定する処理について説明する。図７は、管理サーバ１０のジョブ処理装置２０を決定する処理のフローチャートである。
【００３７】
本実施例では、管理サーバ１０がジョブ処理依頼１７に含まれる全てのジョブ処理についてジョブ処理装置２０を割り当てる。
【００３８】
まず、管理サーバ１０は、Ｓ０２でジョブ処理依頼１７を受信する（Ｓ２１）。管理サーバ１０は、以下のＳ２２からＳ２４までの処理によって、ジョブ手順ファイル１７２に格納されたジョブ処理毎にジョブ処理を実行させるジョブ処理装置を決定する。
【００３９】
管理サーバ１０は、ジョブ処理を実行可能なジョブ処理装置２０を検索する（Ｓ２２）。管理サーバ１０は、ジョブ処理に対応するジョブ処理装置条件情報１７４の条件を満たすジョブ処理装置２０をジョブ処理装置テーブル４０の各レコード４７から検索する。
【００４０】
管理サーバ１０は、Ｓ２２で検索したジョブ処理を実行し得るジョブ処理装置２０の中からジョブ処理を実行させるジョブ処理装置２０を決定する（Ｓ２３）。例えば、管理サーバ１０は、ジョブ処理装置テーブル４０の負荷状態情報４６によってジョブ処理装置２０の現在の処理の負荷の大きさを比較する、あるいは各ジョブ処理装置２０の処理能力の大きさ等を比較することでジョブ処理を行うジョブ処理装置２０を決定する。
【００４１】
管理サーバ１０は、ジョブ処理依頼１７内の全ジョブ処理の設定が完了するまでＳ２２およびＳ２３の処理を実行する（Ｓ２４）。管理サーバ１０は、決定したジョブ処理装置２０にジョブ処理の実行依頼１８を送信する（Ｓ２５）。管理サーバ１０は、ジョブ処理順番情報１７５に対応するジョブ処理を実行するジョブ処理装置２０にジョブ処理の実行依頼１８を送信する。
【００４２】
図８はジョブ処理の実行依頼１８の構成例である。
【００４３】
ジョブ処理の実行依頼１８は、ジョブ処理とジョブ処理を実行するジョブ処理装置２０との関係を設定した対象装置情報１８１、ジョブ処理順番情報１７５、およびジョブ処理依頼元装置情報１８３を有する。
【００４４】
ジョブ処理依頼元装置情報１８３は、ジョブ処理を依頼する側の装置の識別情報である。図５のＳ０３の場合は、管理サーバ１０がジョブ処理の依頼側の装置である。
【００４５】
管理サーバ１０は図５のＳ０２にてジョブ処理毎にジョブ処理を実行するジョブ処理装置を決定する。ここで、説明の便宜のため、グリッドコンピューティングシステム１に接続する複数のジョブ処理装置２０について、第一のジョブ処理装置２１と第二のジョブ処理装置２２とを定義する。管理サーバ１０からジョブ処理の実行依頼１８を受けるジョブ処理装置２０を第一のジョブ処理装置２１とする。第一のジョブ処理装置２１はジョブ処理を実行する。第一のジョブ処理装置２１は他のジョブ処理装置２０にジョブ処理を依頼する場合がある。この場合に、第一のジョブ処理装置２１からジョブ処理の実行依頼１８を受けるジョブ処理装置２０を第二のジョブ処理装置２２とする。図５の説明に戻る。
【００４６】
管理サーバ１０はジョブ処理の実行依頼１８を第一のジョブ処理装置２１に送信する（Ｓ０３）。第一のジョブ処理装置２１はジョブ処理の実行依頼１８を取得するとジョブ実行ファイルの取得依頼１８５を管理サーバ１０に送信する（Ｓ０４）。ジョブ実行ファイルの取得依頼１８５は、第一のジョブ処理装置２１の識別情報を含めて送信する。また、ジョブ実行ファイルの取得依頼１８５は、Ｓ０４で受信したジョブ処理の実行依頼１８を含むことも可能である。
【００４７】
管理サーバ１０は、第一のジョブ処理装置２１がジョブ処理を実行するために必要なジョブプログラム１９を作成する（Ｓ０５）。ジョブプログラム１９は、ジョブ実行ファイル１９１、ジョブ手順ファイル１９２、および入力データファイル１９３を有する。
【００４８】
図９は、ジョブプログラム１９の構成例である。ジョブプログラム１９は、ジョブ手順ファイル１９２、入力データファイル１９３、第一のジョブ処理装置２１が実行するジョブ処理のジョブ実行ファイル１９１−１、および他のジョブ処理装置２０が実行するジョブ処理のジョブ実行ファイル名に変更された移動プログラム１９１−２を有する。
【００４９】
ジョブ手順ファイル１９２は、ジョブ処理を実行するジョブ処理装置２０の識別情報１９２−１、ジョブ処理を実行する順番に関する情報１９２−２、およびジョブ処理を依頼した元の装置の識別情報１９２−３を有する。
【００５０】
ここで、Ｓ０５での管理サーバ１０がジョブプログラム１９を作成する処理について説明する。図１０は、管理サーバ１０がジョブプログラム１９を作成する処理のフローチャートである。
【００５１】
管理サーバ１０は、ジョブ処理装置２０からジョブ実行ファイルの取得依頼１８５を受信する（Ｓ３１）。図５の場合、管理サーバ１０は、第一のジョブ処理装置２１からジョブ実行ファイルの取得依頼１８５を受信する（Ｓ３１）。管理サーバ１０は、Ｓ３２からＳ３５までの処理によって、第一のジョブ処理装置２１に送信するジョブ実行ファイル１９１をジョブ処理毎に決定あるいは作成する。
【００５２】
管理サーバ１０は、ジョブ実行ファイルの取得依頼１８５を送信したジョブ処理装置２０が実行するジョブ処理か否かを判定する（Ｓ３２）。図５の場合、管理サーバ１０は、第一のジョブ処理装置２１が実行するジョブ処理か否かを判定する。管理サーバ１０はジョブ実行ファイルの取得依頼１８５に含まれる第一のジョブ処理装置２１の識別情報を取得する。管理サーバ１０はジョブ処理の実行依頼１８に含まれる対象装置情報１８１を取得する。以上の情報を比較することにより、管理サーバ１０は、第一のジョブ処理装置２１で実行されるジョブ処理か否かを判定することが可能となる。
【００５３】
ジョブ実行ファイルの取得依頼１８５を送信したジョブ処理装置２０が実行するジョブ処理である場合（Ｓ３２：Ｙｅｓ）、管理サーバ１０はジョブ実行ファイル１７１をジョブ処理装置２０に送信すべきファイルとして設定する（Ｓ３５）。一方、ジョブ実行ファイルの取得依頼１８５を送信したジョブ処理装置２０が実行するジョブ処理ではない場合（Ｓ３２：Ｎｏ）、管理サーバ１０は、移動プログラム１０９に入力するための移動処理情報を生成する（Ｓ３３）。
【００５４】
管理サーバ１０は移動プログラム１０９のファイル名を変更する（Ｓ３４）。管理サーバ１０は、移動プログラム１０９のファイル名を現在のＳ３２乃至Ｓ３４の処理の対象のジョブ処理に対応するジョブ実行ファイル１７１のファイル名に置換する。
【００５５】
管理サーバ１０は、ジョブ処理の実行依頼情報１８内の全ジョブ処理の設定が完了するまでＳ３２およびＳ３５までの処理を実行する（Ｓ３６）。管理サーバ１０は作成したジョブプログラム１９をジョブ実行ファイルの取得依頼１８５を受信したジョブ処理装置２０に送信する（Ｓ３７）。図５では、管理サーバ１０は作成したジョブプログラム１９を第一のジョブ処理装置２１に送信する（Ｓ０６）。
【００５６】
また、管理サーバ１０は必要な場合は入力データファイル１９３を送信する。管理サーバ１０は、例えば、入力データファイル１９３を標準入力データのファイルとして送信することが可能である。
【００５７】
管理サーバ１０は、第一のジョブ処理装置２１がジョブ処理を実行するために必要なジョブファイルを送信する（Ｓ０６）。
【００５８】
第一のジョブ処理装置２１はジョブ処理を実行する（Ｓ０７）。ジョブ処理には、ジョブ処理を他のジョブ処理装置２０に移動する処理が含まれる。第一のジョブ処理装置２１は移動プログラム１０９を実行する。
【００５９】
ここで、移動プログラム１０９について説明する。移動プログラム１０９は、予め管理サーバ１０に格納されたプログラムである。移動プログラム１０９は、ジョブ処理の移動元のジョブ処理装置２０をジョブ処理に必要な入力情報の設定処理、ジョブ処理依頼の送信処理、ジョブ処理中の待ち処理、およびジョブ処理結果の取得処理を実行する手段として機能させる。
【００６０】
本実施例での移動プログラム１０９は、第一のジョブ処理装置２１の制御部１１１が実行する。ジョブ処理装置２１は移動プログラム１０９により以下の処理を実行する。図１１は、第一のジョブ処理装置２１が実行するジョブ処理の移動処理のフローチャートである。
【００６１】
第一のジョブ処理装置２１は、ジョブ処理の実行依頼情報１９６を作成するための情報を取得する（Ｓ４１）。ジョブ処理の実行依頼情報１９６は、例えば、ジョブ処理が移動する先の第二のジョブ処理装置２２の識別情報、ジョブ実行ファイル名情報、ジョブ実行ファイルのジョブ処理を実行するための入力データファイル情報１７３、および送信元である第一のジョブ処理装置２１の識別情報である。
【００６２】
管理サーバ１０は、ジョブ処理に必要なジョブ実行ファイル１７１を図５のＳ０１で利用者端末から受信し、管理サーバ１０の記憶部１０４に格納する。なお、第二のジョブ処理装置２２が実行するジョブ処理「ｂ」に対応するジョブ実行ファイル「ｂ」１７１−２のファイル名は、
図１０のＳ３４にてファイル名を置換した移動プログラム１０９（以後、置換移動プログラム１０９−１とする。）のファイル名である。置換移動プログラム１０９−１のファイル名は、管理サーバ１０によってジョブ実行ファイル名に変更されている。したがって、管理サーバ１０は、置換移動プログラム１０９−１のファイル名からジョブ処理の対象となるジョブ実行ファイル名情報を知ることができる。例えば、Ｐｅｒｌではメイン関数の引数情報ａｒｇｖ［０］にファイル名情報が格納される。この構成によって第一のジョブ処理装置２１は置換移動プログラム１０９−１からファイル名情報を参照することが可能となる。この結果、ジョブ実行ファイル名情報を別に記憶する処理が不要となる。
【００６３】
第一のジョブ処理装置２１は、ジョブ依頼の実行依頼情報１９６を第二のジョブ処理装置２２に送信する（Ｓ４２）。例えば、第一のジョブ処理装置２１は、標準入力情報、ジョブ実行ファイル情報、およびジョブ処理に必要な入力データ情報を第二のジョブ処理装置２２に送信する。標準入力情報は例えば、第二のジョブ処理装置２２がジョブ処理の実行を開始する旨の命令、ジョブ処理に必要な入力情報である。
【００６４】
第一のジョブ処理装置２１は、第二のジョブ処理装置２２でのジョブ処理の実行が完了し、結果情報を取得する間、待つ（Ｓ４３：Ｎｏ）。第一のジョブ処理装置２１は第一のジョブ処理装置２１でジョブ処理「ｂ」が実行されたように見える。一方、第二のジョブ処理装置２２は、ジョブ処理を実行する。第二のジョブ処理装置２２は、ジョブ処理を実行した結果情報、およびジョブ処理装置２２で出力された標準出力あるいは標準エラー情報を第一のジョブ処理装置２１に送信する。第二のジョブ処理装置２２が送信する先の装置は、ジョブ処理の実行依頼情報１９６に含まれる送信元である第一のジョブ処理装置２１の識別情報から抽出する。なお、ジョブ処理の結果情報は、ジョブ処理結果情報そのもの、正常終了した場合の標準出力情報あるいはジョブ処理が異常終了した場合の標準エラー情報を含む。例えば、管理サーバ１０は第二のジョブ処理装置２２にジョブを依頼する時に、予め標準出力、標準エラー情報をファイル情報としてジョブ処理の依頼元のジョブ処理装置に送信する手順を含む手順ファイルを作成する。第二のジョブ処理装置２２は手順ファイルを実行することにより、標準出力情報あるいは標準エラー情報を第一のジョブ処理装置２１に送信することが可能となる。
【００６５】
第一のジョブ処理装置２１は、第二のジョブ処理装置２２でのジョブ処理が完了したことにより、ジョブ処理の結果情報を取得すると（Ｓ４３：Ｙｅｓ）、予め設定された出力結果を格納すべき場所に取得した結果情報等を格納する（Ｓ４４）。例えば、ジョブ処理結果情報は、仮にジョブ処理「ｂ」が第一のジョブ処理装置で実行された場合に、ジョブ処理「ｂ」の処理結果が格納される場所に格納される。
【００６６】
また、第一のジョブ処理装置２１は、第二のジョブ処理装置２２での標準出力情報あるいは標準エラー情報をファイル形式で取得し、標準出力情報あるいは標準エラー情報を出力する（Ｓ４５）。第一のジョブ処理装置２１は第二のジョブ処理装置２２から取得した標準出力、標準エラーのファイルをそれぞれ第一のジョブ処理装置２１の標準出力あるいは標準エラーとして出力する場所に格納する。標準出力情報および標準エラー情報は、仮にジョブ処理「ｂ」が第一のジョブ処理装置で実行された場合に、標準出力情報あるいは標準エラー情報が格納される場所に格納される。
【００６７】
第一のジョブ処理装置２１はジョブ処理の結果情報によって引き続きジョブ処理を実行する。以上が移動プログラム１０９の処理である。図５の説明に戻る。
【００６８】
第一のジョブ処理装置２１は、第二のジョブ処理装置２２にジョブ処理を移動する処理命令が格納された移動プログラム１０９を実行することによって、ジョブ処理の実行依頼１８−２を第二のジョブ処理装置２２に送信する（Ｓ０８）。第二のジョブ処理装置２２はジョブ処理依頼を取得するとジョブ実行ファイルの取得依頼１８５−２を管理サーバ１０に送信する（Ｓ０９）。管理サーバ１０は、第二のジョブ処理装置２２がジョブ処理を実行するために必要なジョブプログラムを作成する（Ｓ１０）。管理サーバ１０は、第二のジョブ処理装置２２がジョブ処理を実行するために必要なジョブプログラム１９−２を送信する（Ｓ１１）。
【００６９】
第二のジョブ処理装置２２はジョブ処理を実行する（Ｓ１２）。第二のジョブ処理装置２２が実行するジョブ処理は、第二のジョブ処理装置２２にて実行される。第二のジョブ処理装置２２はジョブ処理が完了すると、ジョブ処理の結果情報、および標準出力情報あるいは標準エラー情報を含む結果情報５１を第一のジョブ処理装置２１に送信する（Ｓ１３）。第一のジョブ処理装置２１は、第二のジョブ処理装置２２にからジョブ処理結果を取得した続きのジョブ処理を実行する（Ｓ１４）。図５では、第一のジョブ処理装置２１はジョブ処理「ａ」の後処理を実行する。
【００７０】
第一のジョブ処理装置２１はジョブ処理「ａ」が完了すると、ジョブ処理の結果情報５２を管理サーバ１０に送信する（Ｓ１５）。
【００７１】
管理サーバ１０は、ジョブ処理の結果情報５３を利用者端末に送信する（Ｓ１６）。
【００７２】
次に、本実施例の一つの例を説明する。図１２はジョブ処理の例である。ジョブ処理依頼は、ジョブ実行ファイル「Ｓ」１７１１、Ｗｉｎｄｏｗｓ（登録商標）  ＯＳ用のジョブ実行ファイル「Ｐ」用１７１２、Ｌｉｎｕｘ（登録商標）  ＯＳ用のジョブ実行ファイル「Ｐ」、およびジョブ手順ファイル１７２２である。ジョブは、Ｌｉｎｕｘ（登録商標）  ＯＳを有するジョブ処理装置が前処理および後処理のＳｈｅｌｌスクリプトであるジョブ処理「ｓ」を実行し、ジョブ処理「Ｓ」中でＷｉｎｄｏｗｓ（登録商標）  ＯＳあるいはＬｉｎｕｘ（登録商標）  ＯＳを有するジョブ処理装置がシミュレーションのジョブ処理「Ｐ」を実行する。ジョブ実行ファイル「Ｐ」１７１２およびジョブ実行ファイル「Ｐ」１７１３は独自に開発したシミュレーションのプログラムであり、利用者はＷｉｎｄｏｗｓ（登録商標）用のジョブ実行ファイル「Ｐ」１７１２およびＬｉｎｕｘ（登録商標）用のジョブ実行ファイル「Ｐ」１７１３をバイナリファイルで有するものとする。Ｗｉｎｄｏｗｓ（登録商標）  ＯＳのジョブ処理装置のみでは、前処理および後処理のジョブ処理は実行できない。また、Ｌｉｎｕｘ（登録商標）  ＯＳのジョブ処理装置のみが実行する場合、グリッドコンピューティングシステム１上のジョブ処理を実行し得るジョブ処理装置は限られる。
【００７３】
まず利用者は、ジョブ処理依頼を管理サーバ１０に投入する（１）。
【００７４】
管理サーバ１０は、ジョブ処理「Ｓ」をジョブ処理装置ｌｉｎ２１０にジョブ処理の実行をさせ、ジョブ処理「Ｐ」をジョブ処理装置ｗｉｎ２２０にジョブ処理を実行させることと決定する。
【００７５】
管理サーバはジョブ処理装置ｌｉｎ２１０にジョブ処理の実行を依頼する（２）。ジョブ処理装置ｌｉｎ２１０は実行依頼を受けると、制御部はジョブ処理の配置処理（ｄｅｐｌｏｙ＿ｒｅｑｕｉｒｅ）を実行する。ジョブ処理装置ｌｉｎ２１０は、ジョブ実行ファイル「Ｓ」１７１１、ジョブ実行ファイル「Ｐ」１７１２あるいはジョブ実行ファイル「Ｐ」１７１３の取得依頼を管理サーバ１０に送信する（３）。
【００７６】
管理サーバ１０はジョブ処理装置ｌｉｎ２１０にジョブ実行ファイル「Ｓ」を送信する。また、ジョブ処理「Ｐ」はジョブ処理装置ｗｉｎ２２０にて実行させることが決定しているため、転送プログラムのファイル名をジョブ実行ファイル名「Ｐ」に変更して送信する。
【００７７】
ジョブ処理装置ｌｉｎ２１０はジョブ処理を実行する（４）。ジョブ処理装置ｌｉｎ２１０は、Ｓのジョブ処理を実行すると、Ｐのジョブ処理に至る。Ｐは移動プログラムである。ジョブ処理装置ｌｉｎ２１０は、ジョブ処理の実行依頼をジョブ処理装置ｗｉｎ２２０に送信する（５）。
【００７８】
ジョブ処理装置ｗｉｎ２２０は、ジョブ実行ファイル「P」の取得依頼を管理サーバ１０に送信する（６）。なお、管理サーバ１０はＷｉｎｄｏｗｓ（登録商標）  ＯＳ用とＬｉｎｕｘ（登録商標）  ＯＳ用の二つのジョブ実行ファイル「Ｐ」を有する。管理サーバ１０は転送要求に含まれるジョブ処理装置ｗｉｎ２２０のＯＳの情報に合致するジョブ実行ファイル「Ｐ」を検索する。管理サーバ１０はジョブ処理装置ｗｉｎ２２０にＷｉｎｄｏｗｓ（登録商標）  ＯＳ用のジョブ実行ファイル「Ｐ」を送信する。ジョブ処理装置ｗｉｎ２２０は、ジョブ処理「Ｐ」を実行する。
ジョブ処理装置ｗｉｎ２２０は、ジョブ処理「Ｐ」の処理結果をジョブ処理装置ｌｉｎ２１０に送信する。
【００７９】
ジョブ処理装置ｌｉｎ２１０は、ジョブ処理装置ｗｉｎ２２０によるジョブ処理「Ｐ」の結果情報を取得する。ジョブ処理装置ｌｉｎ２１０は、ジョブ処理「Ｓ」の後処理を引き続き実行し、ジョブ処理「Ｓ」の結果を管理サーバ１０に送信する。管理サーバ１０はジョブ処理の結果を利用者に送信する。
【００８０】
一方、管理サーバ１０がジョブ処理「Ｓ」およびジョブ処理「Ｐ」を共に、ジョブ処理装置ｌｉｎ２１０で実行させることを決定した場合、管理サーバ１０は、ジョブ実行ファイル「Ｓ」、「Ｐ」をジョブ処理装置ｌｉｎ２１０に送信する。
【００８１】
以上の本実施例の説明によって、管理サーバはジョブ処理を複数のジョブ処理装置で実行させることが可能となる。
【００８２】
本特許の手法では、システム１の利用者がジョブ処理を実行し得る条件を設定するのみで、管理サーバ１０は、適切なジョブ処理装置を選択することが可能となる。この時に、利用者はジョブ処理のジョブ処理装置間の移動について考慮する必要はない。また、利用者はジョブ処理装置毎にジョブ記述を変更する必要はない。さらに、ジョブ処理装置は新規にソフトウェアをインストールする必要はない。また、管理サーバがジョブ処理を割り当てることが可能なジョブ処理装置の数が増加するため、グリッドコンピューティングシステムのジョブ処理能力の高いジョブ処理装置にジョブ処理を割り当てることが可能となる。一方、ジョブ処理装置テーブル４０の情報を細かく設定することにより、管理サーバ１０は、例えば、インストールされたソフトウェアに応じてジョブ処理を実行するジョブ処理装置を決定することが可能となる。更に、本実施例では、３以上のジョブ処理が階層構造となる場合でもジョブ処理を実行することが可能である。
【図面の簡単な説明】
【００８３】
【図１】グリッドコンピューティングシステム１の構成図である。
【図２】管理サーバ１０のハードウェア構成図である。
【図３】ジョブ処理装置テーブル４０の構成例である。
【図４】ジョブ処理装置２０のハードウェア構成図である。
【図５】ジョブの処理の流れを示す図である。
【図６】ジョブ処理依頼１７の構成例である。
【図７】管理サーバ１０のジョブ処理装置２０を決定する処理のフローチャートである。
【図８】ジョブ処理の実行依頼１８の構成例である。
【図９】ジョブプログラム１９の構成例である。
【図１０】管理サーバ１０がジョブプログラム１９を作成する処理のフローチャートである。
【図１１】第一のジョブ処理装置２１が実行するジョブ処理の移動処理のフローチャートである。
【図１２】ジョブ処理の例である。
【符号の説明】
【００８４】
１  グリッドコンピューティングシステム
１０  管理サーバ
２０  ジョブ処理装置
２１  第一のジョブ処理装置
２２  第ニのジョブ処理装置
３０  ネットワーク
４０  ジョブ処理装置テーブル
１０１  制御部
１０２  メモリ
１０３  入力部
１０４  記憶部
１０５  出力部
１０６  ネットワークインターフェース部
１０７  バス
１０８  ジョブ管理プログラム
１０９  移動プログラム
１１１  制御部
１１２  メモリ
１１３  入力部
１１４  記憶部
１１５  出力部
１１６  ネットワークインターフェース部
１１７  バス
１１８  ジョブ実行プログラム
【図１】
2008293278.tif 000003
【図２】
2008293278.tif 000004
【図３】
2008293278.tif 000005
【図４】
2008293278.tif 000006
【図５】
2008293278.tif 000007
【図６】
2008293278.tif 000008
【図７】
2008293278.tif 000009
【図８】
2008293278.tif 000010
【図９】
2008293278.tif 000011
【図１０】
2008293278.tif 000012
【図１１】
2008293278.tif 000013
【図１２】
2008293278.tif 000014