(57)【要約】【課題】複数の情報処理装置によりジョブの分散処理を行うシステムにおいて、各情報処理装置へのジョブの割り当てを継続しながらプログラムを更新することができるようにする。【解決手段】前記情報処理装置のそれぞれと通信可能に接続される、管理装置が、前記プログラムの実行順序を管理するジョブキューを有し、更新対象となる前記プログラムを特定するプログラム特定情報を記憶し、記憶した前記プログラム特定情報により特定される前記プログラムを更新するためのプログラムである更新プログラムが、前記ジョブキューに登録されている前記プログラムよりも先に実行されるように、前記更新プログラムを前記ジョブキューに登録する。【選択図】    図１１
2007079936.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置が同一のプログラムを実行することにより同一のジョブを分散して処理するジョブ処理システムの制御方法であって、
前記情報処理装置のそれぞれと通信可能に接続され、前記プログラムの実行順序を管理するジョブキューを有する管理装置が、
更新対象となる前記プログラムを特定するプログラム特定情報を記憶し、
記憶した前記プログラム特定情報により特定される前記プログラムを更新するためのプログラムである更新プログラムが、前記ジョブキューに登録されている前記プログラムよりも先に実行されるように、前記更新プログラムを前記ジョブキューに登録すること、
を特徴とするジョブ処理システムの制御方法。
【請求項２】
請求項１に記載のジョブ処理システムの制御方法であって、
前記管理装置が、前記ジョブを処理するための前記プログラムを実行していない前記情報処理装置に対して、前記ジョブキューに登録されている前記プログラムを前記ジョブキューにおける前記実行順序で実行するように指示をすること、
を特徴とするジョブ処理システムの制御方法。
【請求項３】
請求項１に記載のジョブ処理システムの制御方法であって、
前記管理装置は、前記更新対象となる前記プログラムを特定する前記プログラム特定情報の入力を受け付けるためのユーザインタフェースを備えており、
前記管理装置が、前記ユーザインタフェースから前記プログラム特定情報の入力を受け付けること、
を特徴とするジョブ処理システムの制御方法。
【請求項４】
複数の情報処理装置と、前記情報処理装置のそれぞれと通信可能に接続される管理装置とを含んで構成され、複数の前記情報処理装置が同一のプログラムを実行することにより同一のジョブを分散して処理するジョブ処理システムであって、
前記管理装置は、
ＣＰＵとメモリと、
前記プログラムの実行順序を管理するジョブキューと、
更新対象となる前記プログラムを特定するプログラム特定情報を記憶する記憶部と、
記憶した前記プログラム特定情報により特定される前記プログラムを更新するためのプログラムである更新プログラムが、前記ジョブキューに登録されている前記プログラムよりも先に実行されるように、前記更新プログラムを前記ジョブキューに登録するプログラム登録部と、
を備えることを特徴とするジョブ処理システム。
【請求項５】
同一のプログラムを実行することにより同一のジョブを分散して処理する複数の情報処理装置のそれぞれと通信可能に接続され、
ＣＰＵとメモリと、
前記プログラムの実行順序を管理するジョブキューと、
更新するべき前記プログラムを特定するプログラム特定情報を記憶する更新対象記憶部と、
前記更新対象記憶部が記憶した前記プログラム特定情報により特定される前記プログラムを更新するためのプログラムである更新プログラムを、前記ジョブキューに登録されている前記プログラムよりも先に実行されるように前記ジョブキューに登録するプログラム登録部と、
を備えることを特徴とする管理装置。
【請求項６】
同一のプログラムを実行することにより同一のジョブを分散して処理する複数の情報処理装置のそれぞれと通信可能に接続され、前記プログラムの実行順序を管理するジョブキューを有する管理装置に、
更新対象となる前記プログラムを特定するプログラム特定情報を記憶するステップと、
記憶した前記プログラム特定情報により特定される前記プログラムを更新するためのプログラムである更新プログラムが、前記ジョブキューに登録されている前記プログラムよりも先に実行されるように、前記更新プログラムを前記ジョブキューに登録するステップと、
を実行させるためのプログラム。
【請求項７】
請求項６に記載のプログラムであって、前記管理装置に、前記ジョブを処理するための前記プログラムを実行していない前記情報処理装置に対して、前記ジョブキューに登録されている前記プログラムを前記ジョブキューにおける前記実行順序で実行するように指示をするステップをさらに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ処理システムの制御方法、ジョブ処理システム、管理装置の制御方法、管理装置、及びプログラムに関する。
【背景技術】
【０００２】
コンピュータにより実行されるプログラムは、機能改善やセキュリティ対策などのために、新たなプログラムに更新することが必要になる場合があるが、プログラムの更新による情報処理サービスへの影響は最小限に抑えることが望まれる。特許文献１では、分散処理を行うプロセッサを複数のクラスタに分割し、各クラスタ単位でプログラムの更新を行うことで、あるクラスタにおいてプログラムが更新されている間に他のクラスタにおいてジョブの処理を行う技術が提案されている。
【特許文献１】特許第３３８５４０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載の技術では、クラスタ毎にプログラムの更新が行われるため、更新中のクラスタに属するすべてのコンピュータのプログラムが更新されるまで、そのクラスタに属するコンピュータにジョブを割り当てることができない。
【０００４】
本発明は、このような背景を鑑みてなされたものであり、複数の情報処理装置によりジョブの分散処理を行うシステムにおいて、各情報処理装置へのジョブの割り当てを継続しながらプログラムを更新することのできる、ジョブ処理システムの制御方法、ジョブ処理システム、管理装置の制御方法、管理装置、及びプログラムを提供することを主な目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するための本発明の主たる発明は、複数の情報処理装置が同一のプログラムを実行することにより同一のジョブを分散して処理するジョブ処理システムの制御方法であって、前記情報処理装置のそれぞれと通信可能に接続され、前記プログラムの実行順序を管理するジョブキューを有する管理装置が、更新対象となる前記プログラムを特定するプログラム特定情報を記憶し、記憶した前記プログラム特定情報により特定される前記プログラムを更新するためのプログラムである更新プログラムが、前記ジョブキューに登録されている前記プログラムよりも先に実行されるように、前記更新プログラムを前記ジョブキューに登録することとする。
【発明の効果】
【０００６】
本発明によれば、複数の情報処理装置によりジョブの分散処理を行うシステムにおいて、各情報処理装置へのジョブの割り当てを継続しながらプログラムを更新することができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明する。
【０００８】
＝＝＝第１の実施形態＝＝＝
図１は、第１の実施形態に係るジョブ処理システムの全体構成を示す図である。同図に示すように、第１の実施形態のジョブ処理システムは、８台のノードコンピュータ（以下、単にノードと略記する。）１０と管理装置２０とを含んで構成されている。ノード１０と管理装置２０とは通信ネットワーク３０を介して接続されている。通信ネットワーク３０は例えばＬＡＮ（Local Area Network）や電話回線網、ＡＴＭ（Asynchronous Transfer Mode）網、フレームリレー網、インターネットなどである。
【０００９】
ノード１０は、管理装置２０からの要求に応じてプログラムを実行する、例えば、パーソナルコンピュータやワークステーション、メインフレームコンピュータなどのコンピュータである。本実施形態では、１つ以上のノード１０により同一のプログラムが実行されることによりひとつのジョブが処理される。
【００１０】
管理装置２０は、あるジョブについてノード１０の割り当てや、処理されるジョブの順序決定などのスケジューリングを行う、例えば、パーソナルコンピュータやワークステーション、メインフレームコンピュータなどのコンピュータである。
【００１１】
図２にノード１０のハードウェア構成を示す。同図に示すようにノード１０は、ＣＰＵ１０１、メモリ１０２、記憶装置１０３、及び通信インタフェース１０４を備えている。
【００１２】
記憶装置１０３は、プログラムやデータを記憶する、例えばハードディスクドライブやＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＯＭドライブなどである。  
記憶装置１０３に記憶されているプログラム１〜４（１３０）はジョブを処理するためのプログラム（以下、ジョブプログラムという。）である。また、記憶装置１０３に記憶されているジョブプログラム１３０を更新するためのプログラムが更新プログラム１３１である。更新プログラム１３１は、例えば、オペレーティングシステムやファームウェアに対する更新情報を提供しているサーバにアクセスして更新情報を取得し、取得した更新情報をオペレーティングシステムやファームウェアを実現するためのプログラムに更新情報を適用してプログラムを更新するためのプログラムである。ＣＰＵ１０１は、記憶装置１０３に記憶されているプログラムをメモリ１０２に読み出して実行することにより、各種の機能を実現する。  
通信インタフェース１０４は、通信ネットワーク３０に接続するためのインタフェースである。通信インタフェース１０４は、例えば、ＬＡＮなどに接続するためのイーサネット（登録商標）アダプタや、更新電話回線に接続するためのモデムなどである。
【００１３】
図３にノード１０のソフトウェア構成を示す。同図に示すようにノード１０は、処理要求受信部１１１、プログラム実行部１１２、及び終了通知送信部１１３を備えている。
【００１４】
処理要求受信部１１１は、管理装置２０から送信される、ジョブプログラム１３０を実行するように指示するコマンド（以下、処理要求という。）を受信する。処理要求には、ノード１０が実行すべきジョブプログラム１３０を特定する情報（以下、プログラム名という。）が設定される。  
プログラム実行部１１２は、処理要求に設定されているプログラム名のジョブプログラム１３０を実行する。  
終了通知送信部１１３は、プログラム実行部１１２により実行されたジョブプログラム１３０が終了したときに、ジョブプログラム１３０の実行が終了した旨を示すメッセージ（以下、終了通知という。）を管理装置２０に送信する。
【００１５】
なお、上述の処理要求受信部１１１、プログラム実行部１１２、及び終了通知送信部１１３はそれぞれ、ノード１０が備えるＣＰＵ１０１が記憶装置１０３に記憶されているプログラムを実行することにより実現される。
【００１６】
図４に管理装置２０のハードウェア構成を示す。同図に示すように、管理装置２０は、ＣＰＵ２０１、メモリ２０２、記憶装置２０３、通信インタフェース２０４、入力装置２０５、出力装置２０６を備えている。
【００１７】
記憶装置２０３は、プログラムやデータを記憶する、例えば、ハードディスクドライブやＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＯＭドライブなどである。ＣＰＵ２０１は記憶装置２０３に記憶されているプログラムをメモリ２０２に読み出して実行することにより、各種の機能を実現する。入力装置２０５は、データの入力を受け付ける、例えばキーボードやマウス、タッチパネルなどである。出力装置２０６は、データを出力する、例えばディスプレイやプリンタなどである。
【００１８】
図５に管理装置２０のソフトウェア構成を示す。同図に示すように、管理装置２０は、処理指示入力部２１１、更新指示入力部２１２、ジョブ割当部２１３、処理要求送信部２１４、終了通知受信部２１５、ノード管理テーブル２２、及びジョブキュー２３を備えている。
【００１９】
ノード管理テーブル２２は、各ノード１０においてジョブプログラム１３０が実行されているかどうかを示す情報を記憶する。図６にノード管理テーブル２２の構成を示す。同図に示すように、ノード管理テーブル２２は、ノード番号欄２２１、実行状態欄２２２、プログラム名欄２２３を備えている。ノード番号欄２２１には、ノード１０を特定する情報（以下、ノード番号という。）が設定される。実行状態欄２２２には、ノード１０においてジョブプログラム１３０が実行されているかどうかを示す情報が設定される。ノード１０においてジョブプログラムが実行されている場合には実行状態欄２２２には「実行中」が設定され、ノード１０においてジョブプログラムが実行されていない場合には「待機中」が設定される。プログラム名欄２２３には、ノード１０においてジョブプログラム１３０が実行されている場合、そのジョブプログラム１３０のプログラム名が設定される。後述するように、管理装置２０がジョブをノード１０に割り当てる場合、実行状態欄２２２に「待機中」が設定されているノード１０に対してジョブが割り当てられる。また、ジョブがノード１０に割り当てられた場合、実行状態欄２２２は「実行中」に更新される。さらに、ノード１０においてジョブプログラム１３０の実行が終了した場合、プログラム名欄２２３からは値が削除される（本実施形態では、「−」が設定されるものとする）。
【００２０】
ジョブキュー２３は、処理されるべきジョブを管理するための情報（以下、ジョブ情報という。）を記憶する。図７にジョブキュー２３の一例を示す。同図に示すように、ジョブキュー２３に登録されるジョブ情報は、プログラム名欄２３１、ノード数欄２３２、実行ノード指定欄２３３、実行状態欄２３４、優先度欄２３５を備えている。
【００２１】
プログラム名欄２３１には、ジョブを処理するためにノード１０において実行されるべきジョブプログラム１３０を示すプログラム名が設定される。ノード数欄２３２には、ノード１０の数（以下、単にノード数という。）が設定される。後述するように、管理装置２０は、ジョブ情報のノード数欄２３２に設定されている数の、ジョブプログラムを実行していないノード１０（以下、空きノードという。）に対して、ジョブ情報のプログラム名欄２３１に設定されているプログラム名のプログラムを実行するように処理要求を送信することによりジョブを割り当てる。実行ノード指定欄２３３には、ジョブを割り当てる先となるノード１０を特定するノード番号が設定される。なお、ジョブを割り当てるノード１０が特定されていない場合（どのノード１０がジョブプログラム１３０を実行してもよい場合）には、実行ノード指定欄２３３には「−」が設定されるものとする。
【００２２】
実行状態欄２３４には、ジョブがノード１０に割り当てられているかどうかを示す情報（以下、実行状態情報という。）が設定される。実行状態欄２３４には、ジョブがノード１０に割り当てられている場合には「実行中」が設定され、未だジョブがノード１０に割り当てられていない場合には「実行待ち」が設定される。また、ジョブが完了した場合には「実行完了」が設定される。
【００２３】
優先度欄２３５には、ジョブの実行優先度を示す情報が設定される。本実施形態では、優先度欄２３５に設定されるジョブの実行優先度は、「通常」と「最優先」との２種類であるものとする。ノード１０に更新プログラム１３１を実行させるジョブ（以下、更新ジョブという。）に係るジョブ情報では、優先度欄２３５に「最優先」が設定され、更新プログラム１３１以外のプログラムを実行させるジョブ（以下、通常ジョブという。）に係るジョブ情報では、優先度欄２３５に「通常」が設定される。更新プログラム１３１をノード１０に実行させるためのジョブ（以下、更新ジョブという。）についてのジョブ情報の優先度欄２３５には「最優先」が設定される。その他のジョブプログラム１３０をノード１０に実行させるためのジョブ（以下、通常ジョブという。）についてのジョブ情報の優先度欄２３５には「通常」が設定される。
【００２４】
なお、ジョブキュー２３において、優先度欄２３５に「最優先」が設定されているジョブ情報は、優先度欄２３５に「通常」が設定されているジョブ情報よりも先に読み出されるように配置される。
【００２５】
処理指示入力部２１１は、ジョブを処理する旨の指示（以下、処理指示という。）を受け付ける。本実施形態では、処理指示入力部２１１は、キーボードやマウスなどの入力装置２０５から、プログラム名とノード数との入力を受け付けるものとする。なお、例えば、ユーザが操作する端末から、ジョブを処理するように指示するメッセージを受信するようにしてもよい。処理指示入力部２１１は、入力されたプログラム名とノード数とに基づくジョブ情報を作成してジョブキュー２３に登録する。処理指示入力部２１１によるジョブ情報の登録処理の流れを図８に示す。
【００２６】
処理指示入力部２１１は、プログラム名及びノード数の入力を受け付け（Ｓ４０１）、ジョブ情報を作成し（Ｓ４０２）、作成したジョブ情報のプログラム名欄２３１に、入力されたプログラム名を設定し（Ｓ４０３）、ノード数欄２３２に、入力されたノード数を設定する（Ｓ４０４）。処理指示入力部２１１は、ジョブ情報の実行ノード指定欄２３３に「−」を設定し（Ｓ４０５）、優先度欄２３５には「通常」を設定する（Ｓ４０６）。処理指示入力部２１１は、上記のようにして作成したジョブ情報をジョブキュー２３に登録する（Ｓ４０７）。
【００２７】
更新指示入力部２１２は、ノード１０が記憶しているジョブプログラム１３０を更新する旨の指示（以下、更新指示という。）を受け付ける。本実施形態では、更新指示入力部２１２は、キーボードやマウスなどの入力装置２０５から指示を受け付けるものとする。例えば、画面に表示されたアイコンがマウスでクリックされたことにより、更新指示の入力を受け付けるようにすることができる。なお、更新指示入力２１２は、例えばユーザが操作する端末から更新指示を受信するようにしてもよい。更新指示入力部２１２は、更新指示の入力に応じてジョブ情報を作成してジョブキュー２３に登録する。更新指示入力部２１２によるジョブ情報の登録処理の流れを図９に示す。
【００２８】
更新指示入力部２１２は、更新指示の入力を受け付けると（Ｓ４２１）、ノード１〜８（１０）のそれぞれを処理対象として、以下の処理を行う。
【００２９】
更新指示入力部２１２は、ジョブ情報を作成し（Ｓ４２２）、ジョブ情報のプログラム名欄２３１に、更新プログラム１３１のプログラム名である「更新プログラム」を設定し（Ｓ４２３）、ノード数欄２３２に「１」を設定し（Ｓ４２４）、実行ノード指定欄２３３に処理対象のノード１０のノード番号を設定し（Ｓ４２５）、優先度欄２３５に「最優先」を設定する（Ｓ４２６）。更新指示入力部２１２は、上記のように作成したジョブ情報を、ジョブキュー２３に登録されているジョブ情報のうち、優先度欄２３５に「通常」が設定されているものよりも先に読み出されるようにジョブキュー２３に登録する（Ｓ４２７）。なお、ここでは簡単のためジョブ情報をジョブキュー２３の先頭に登録するようにしてもよい。
【００３０】
上記のようにして、更新ジョブに係るジョブ情報がジョブキュー２３に登録される。本実施形態では、更新指示入力部２１２は、各ノード１０を指定したジョブ情報を１つずつジョブキュー２３に追加するため、単独のノード１０で更新プログラム１３１を実行する更新ジョブが複数ジョブキュー２３に登録されることになる。
【００３１】
ジョブ割当部２１３は、ジョブキュー２３に登録されているジョブ情報に基づいて、ジョブプログラム１３０を実行すべきノード１０を特定する。なお、ノード１０を特定する処理の詳細については後述する。  
処理要求送信部２１４は、ジョブ割当部２１３が特定したノード１０に対して処理要求を送信し、終了通知受信部２１５は、処理要求に応じてノード１０から送信される終了通知を受信する。
【００３２】
図１０は、管理装置２０がジョブ情報に基づいてノード１０にジョブプログラム１３０を実行させる処理（以下、ジョブの割当処理という。）の流れを示す図である。なお、管理装置２０は、ジョブキュー２３に登録されているジョブ情報のそれぞれについて、ジョブキュー２３に配置されている順番に以下の処理を行う。
【００３３】
管理装置２０は、ジョブキュー２３からジョブ情報を読み出し（Ｓ４４１）、読み出したジョブ情報の実行状態欄２３４に「実行待ち」が設定されているかどうかを判断する（Ｓ４４２）。ジョブ情報の実行状態欄２３４に「実行待ち」が設定されていない場合には（Ｓ４４２：ＮＯ）、管理装置２０は処理を終了する。  
ジョブ情報の実行状態欄２３４に「実行待ち」が設定されていた場合（Ｓ４４２：ＹＥＳ）、管理装置２０は、ジョブ情報の実行ノード指定欄２３３にノード番号が設定されているかどうかを判断する（Ｓ４４３）。  
ジョブ情報の実行ノード指定欄２３３にノード番号が設定されていない場合（Ｓ４４３：ＮＯ）、管理装置２０は、ノード管理テーブル２２の実行状態欄２２２に「待機中」が設定されているノード１０の数を空き数としてカウントする（Ｓ４４４）。管理装置２０は、カウントした空き数が、ジョブ情報のノード数欄２３２に設定さているノード数以上であるかどうかを判断し（Ｓ４４５）、空き数がノード数以上であれば（Ｓ４４５：ＹＥＳ）、ノード管理テーブル２２において実行状態欄２２２に「待機中」が設定されているノード番号を空き数分選択する（Ｓ４４６）。  
なお、空き数がノード数未満であれば（Ｓ４４７：ＮＯ）、管理装置２０は処理を終了して、次のジョブ情報について処理を図１０に示す処理を行う。これにより、空き数が足りない場合には、他のジョブを先にノード１０に割り当てるようにして、ノード１０によるジョブプログラム１３０の実行が終了して空き数が増えた後に、再度ジョブの割当処理を行うようにすることができるので、ジョブ処理システム全体としての処理効率を高めることができる。
【００３４】
一方、ジョブ情報の実行ノード指定欄２３３にノード番号が設定されている場合（Ｓ４４３：ＹＥＳ）、管理装置２０は、実行ノード指定欄２３３に指定されたノード番号を選択し（Ｓ４４７）、選択したノード番号に対応するノード管理テーブル２２の実行状態欄２２２に「待機中」が設定されているかどうかを判断する（Ｓ４４８）。ここでノード管理テーブル２２の実行状態欄２２２に「待機中」が設定されていない場合（Ｓ４４８：ＮＯ）、管理装置２０は処理を終了する。  
管理装置２０は、上記のようにして選択したノード番号に対応するノード管理テーブル２２の実行状態欄２２２に「実行中」を設定し（Ｓ４４９）、ジョブ情報の実行状態欄２３４を「実行中」に設定してジョブキュー２３を更新する（Ｓ４５０）。  
管理装置２０は、ジョブ割当部２１３が選択したノード番号に対応する１つ以上のノード１０に対して、上記ジョブ情報のプログラム名欄２３１に設定されているプログラム名を設定した処理要求を送信する（Ｓ４５１）。  
処理要求を受信したノード１０のそれぞれは、受信した処理要求に設定されているプログラム名のジョブプログラム１３０を実行し（Ｓ４５２）、ジョブプログラム１３０の実行が終了すると、終了通知を管理装置２０に送信する（Ｓ４５３）。  
管理装置２０は、ノード１０から送信される終了通知を受信すると、受信した終了通知の送信元となるノード１０のノード番号に対応する、ノード管理テーブル２２の実行状態欄２２２を「待機中」に更新する（Ｓ４５４）。
【００３５】
上記のようにして、本実施形態に係るジョブ処理システムでは、既に割り当てられているジョブの処理を停止することなく、ノード１０が記憶しているジョブプログラム１３０の更新を行うことができる。また、更新プログラム１３１の実行が終了したノード１０には随時新たなジョブを割り当てることができる。したがって、ジョブ処理システム全体としての処理を継続しながら、ノード１０のジョブプログラム１３０を更新していくことができる。よって、ジョブ処理システムにおいてノード１０のジョブプログラム１３０を更新する際にも、ジョブ処理システム全体の処理効率の低下を少なくすることができる。また、更新プログラム１３１の実行が終了したノード１０から順に新しいジョブを割り当てていくことができるので、ジョブ処理システムの更新中であっても、多くのノード１０によるジョブプログラム１３０の実行を必要とする大規模ジョブの処理を迅速に開始することができる。
【００３６】
また、同一のジョブを割り当てる複数のノード１０において、更新が行われているものと行われていないものとが混在することがないため、同一のジョブについて異なるジョブプログラム１３０が実行されるような不具合を防ぐことができる。
【００３７】
また、例えば、ジョブ処理システムを４つのノード１０ずつの２個のクラスタに分割し、クラスタ毎に更新プログラム１３１を実行するようにすると、５つのノード１０によるジョブプログラム１３０の実行が必要なジョブについては、ノード１０すべての更新プログラム１３１の実行が終了するまで処理を行うことができないが、本実施形態のジョブ処理システムでは、５つのノード１０によるジョブプログラム１３０の実行が必要なジョブがあっても、更新処理を行うことができる。
【００３８】
図１１は各ノード１０においてジョブプログラム１３０が実行されるタイミングを示す図である。同図において、時点Ｔ１は、更新指示入力部２１２が更新指示の入力を受け付けた時間である。なお、図１１の時点Ｔ２におけるノード管理テーブル２２の状態を図１２に示す。また、時点Ｔ２におけるジョブキュー２３の状態を図１３に示す。
【００３９】
図１１に示すように、管理装置２０が更新指示の入力を受け付けた時点（Ｔ１）では、ノード１〜４（１０）がプログラム１（１３０）を実行する通常ジョブ５０１が処理中であり、ノード７、８（１０）がプログラム２（１３０）を実行する通常ジョブ５０２が処理中である。この時点Ｔ１において、更新ジョブについてのジョブ情報がジョブキュー２３に登録され、ジョブキュー２３は上記図７のような状態となる。ここで管理装置１０は更新ジョブをノード５、６（１０）に割り当て、ノード５、６（１０）において更新プログラム１３１が実行される（Ｓ５１１）。また、管理装置１０は、ノード１〜４（１０）からのプログラム１（１３０）についての終了通知を受信すると、ノード１〜４（１０）に更新ジョブを割り当てて、ノード１〜４（１０）が更新プログラム１３１を実行する（Ｓ５１２）。
【００４０】
ノード１〜４（１０）による更新プログラム１３１の実行が終了すると、ジョブキュー２３は図１３に示すような状態となり、ノード１〜４（１０）には新たなジョブを割り当てることができるようになる。  
この時点Ｔ２において、ノード７、８（１０）はまだプログラム２（１３０）の実行中であり、通常ジョブ５０２の処理は完了していないため、ノード７、８（１０）に対して更新ジョブを割り当てることはできない。このように時点Ｔ２において、ジョブ処理システム全体で見れば更新ジョブはまだ完了していない状態ではあるが、更新プログラム１３１の実行を終了したノード１〜６（１０）については、新たにジョブを割り当てることができるようになっている。すなわち、本実施形態のジョブ処理システムによれば、ノード７，８（１０）の更新ジョブの完了を待つことなく、ノード１〜６（１０）に対しては通常ジョブを割り当てるようにすることができる。
【００４１】
図１３に示したジョブキュー２３の例では、管理装置２０は、上述した図１０に示す処理により、プログラム名欄２３１に「プログラム３」が設定されているジョブ情報を読み出して、ノード１〜５（１０）に通常ジョブ５０３を割り当てることになる。ここで、通常ジョブ５０３を割り当てたノード１〜５（１０）は全て更新プログラム１３１の実行を既に終了していることになるので、同一のジョブを行う複数のノード１０において、更新されたジョブプログラム１３０と更新されていないジョブプログラム１３０とが混在してしまうことに起因する不具合の発生を防ぐことができる。
【００４２】
ノード７、８（１０）においてプログラム２（１３０）の実行が終了すると、管理装置２０はノード７、８（１０）に更新ジョブを割り当て、ノード７、８（１０）は更新プログラム１３１を実行する（Ｓ５１３）。ノード７、８（１０）による更新プログラム１３１の実行が終了した時点Ｔ３において、ジョブ処理システム全体としてのジョブプログラム１３０の更新処理が終了することになる。
【００４３】
上述のように、本実施形態のジョブ処理システムによれば、各ノード１０毎にジョブプログラム１３０を更新することができる。すなわち、各ノード１０で実行されているジョブプログラム１３０がある場合には、その実行を中断することなくの終了後に更新プログラム１３１が実行される。したがって、ジョブの処理を継続しながら、効率的にシステムを更新することができる。
【００４４】
また、従来は更新指示が入力された時点で実行中のジョブプログラム１３０を途中で終了して更新を行うことも行われていたが、本実施形態では、ノード１０で実行途中のジョブプログラム１３０についてはその実行が終了してから更新を行うため、ジョブプログラム１３０を実行しなおす必要がなくなり、ジョブ処理システムの処理効率を向上することができるようになっている。図１４に従来の方法によってジョブプログラム１３０が実行されるタイミングを示す。図１１に示す本実施形態の方法では、通常ジョブ５０３は時点Ｔ２から実行開始されているが、従来の方法では、終了したプログラム１（１３０）を実行する通常ジョブ５０１を処理しなおす必要があるため、通常ジョブ５０３の処理は時点Ｔ４から開始されることになる。また、同様に図１４では、通常ジョブ５０４の処理は、プログラム２（１３０）を実行する通常ジョブ５０２を実行しなおす必要があるため、時点Ｔ５から開始されることになる。したがって、図１１に示す本実施形態のジョブ処理システムによる処理では、従来の方法による処理に比べて、通常ジョブ５０３の処理を開始するタイミングを期間５２１だけ早めることができ、同様に通常ジョブ５０４の処理を開始するタイミングを期間５２２だけ早めることができることが分かる。
【００４５】
なお、本実施形態では、ジョブは２つ以上のノード１０により分散処理するものとしたが、単独のノード１０によりジョブプログラム１３０を実行するようにしてもよい。図１５に、単独のノード１０によりジョブプログラム１３０が実行されることによりジョブが処理される場合の、各ノード１０におけるジョブプログラムの実行タイミングを示す。時点Ｔ１に管理装置２０が更新指示の入力を受け付けた場合、時点Ｔ１においてジョブプログラム１３０を実行していないノード７、８（１０）に対して更新プログラム１３１を指定した処理要求が送信され、ノード７、８（１０）が更新プログラム１３１を実行する（Ｓ５３１）。管理装置２０は、ノード１〜６（１０）に対して、それぞれにおいて実行されているジョブプログラム１３０の終了通知を受信すると、更新ジョブを割り当てていく。更新プログラム１３１の実行が終了したノード１０は順に新しいジョブを割り当てることができるようになる。したがって、図１５においてノード７、８（１０）は、ノード１〜６（１０）よりも早く更新プログラム１３１の実行を終了している。したがって、ノード１〜６（１０）が更新プログラム１３１を実行している時点Ｔ６においても、ノード７、８（１０）には新しいジョブを割り当てることが可能である。図１５では時点Ｔ６においてノード７（１０）がプログラム３７の実行を開始し、ノード８（１０）がプログラム３８の実行を開始したことが示されている。
【００４６】
図１５に示すように、単独のノード１０によりジョブが処理される場合であっても、本実施形態のジョブ処理システムによれば、ジョブプログラム１３０の実行を中断することなく、ジョブプログラム１３０の更新を行うことができる。したがって、ジョブ処理システムの処理効率を向上することができる。
【００４７】
＝＝＝第２の実施形態＝＝＝
次に第２の実施形態に係るジョブ処理システムについて説明する。第２の実施形態に係るジョブ処理システムは、上述した第１の実施形態と同様の図１に示した構成である。ノード１０及び管理装置２０のハードウェア構成も、第１の実施形態のものと同様である。本実施形態と上述の第１の実施形態との違いは、本実施形態に係るジョブ処理システムでは、管理装置２０の代わりに、ノード１０が更新プログラム１３１を実行するタイミングを管理することである。
【００４８】
本実施形態に係るノード１０のソフトウェア構成を図１６に示す。同図に示すように、本実施形態のノード１０では、上述の第１の実施形態における図３の構成に加えて、更新要求受信部１２１を備えており、更新要求受信部１２１は、管理装置２０から送信される、ジョブプログラム１３０を更新するように指示するコマンド（以下、更新要求という。）を受信する。また、本実施形態において、ノード１０が備えるプログラム実行部１１２は、更新要求の受信に応じて、更新プログラム１３１を実行する。なお、更新プログラム１３１を実行する処理の詳細については後述する。
【００４９】
本実施形態に係る管理装置２０のソフトウェア構成を図１７に示す。同図に示すように、本実施形態の管理装置２０は、上述の第１の実施形態における図５の構成に加えて、更新要求送信部２４１を備えている。  
更新要求送信部２４１は、更新指示の入力を受け付けた場合に、ノード１０に対して更新要求を送信する。
【００５０】
本実施形態に係るノード管理テーブル２２の構成を図１８に示す。同図に示すように本実施形態のノード管理テーブル２２には、上述した第１の実施形態におけるノード管理テーブル２２に、受入状態欄２５１が追加されている。受入状態欄２５１には、ノード１０にジョブを割り当ててよいかどうかを示す情報が設定される。ノード１０にジョブを割り当ててよい場合には、受入状態欄２５１には「開始可」が設定され、そうでない場合には「開始不可」が設定される。本実施形態では、管理装置２０からノード１０に更新要求が送信されたときに受入状態欄２５１に「開始不可」が設定される。なお、管理装置２０はジョブをノード１０に割り当てる場合、実行状態欄２２２に「待機中」が設定されており、かつ受入状態欄２５１に「開始可」が設定されているノード１０を選択する。
【００５１】
本実施形態に係るジョブキュー２３の一例を図１９に示す。同図に示すように、本実施形態のジョブ情報では、上述した第１の実施形態におけるジョブ情報から実行ノード指定欄２３３及び優先度欄２３５が省略された構成となっている。
【００５２】
図２０は、本実施形態におけるジョブの割当処理の流れを示す図である。  
管理装置２０は、更新指示の入力を受け付けると（Ｓ６０１）、各ノード１０について、ノード管理テーブル２２の受入状態欄２５１に「開始不可」を設定し（Ｓ６０２）、ノード１０にジョブが割り当てられないようにする。ここで、管理装置２０が図１８のノード管理テーブル２２に対して上記のような処理を行うと、ノード管理テーブル２２は図２１に示すような状態になる。次に管理装置２０は、各ノード１０に対して更新要求を送信する（Ｓ６０３）。
【００５３】
各ノード１０は、管理装置２０から更新要求を受信すると、現在ジョブプログラム１３０を実行している場合は（Ｓ６０４：ＹＥＳ）、そのジョブプログラム１３０の実行を終了するまで待機する（Ｓ６０５）。なお、ここでノード１０はジョブプログラム１３０の実行終了時に終了通知を管理装置２０に送信しないようにする。ノード１０は、更新プログラム１３１を実行し（Ｓ６０６）、更新プログラム１３１の実行が終了すると、終了通知を管理装置２０に送信する（Ｓ６０７）。
【００５４】
管理装置２０は、ノード１０から送信される終了通知を受信すると、終了通知の送信元となるノード１０のノード番号に対応する、ノード管理テーブル２２の受入状態欄２５１に「開始可」を設定し（Ｓ６０８）、実行状態欄２２２に「待機中」を設定する（Ｓ６０９）。
【００５５】
ノード管理テーブル２２が上記図２１のような状態であった場合に、管理装置２０がノード５及び６（１０）から終了通知を受信したときには、ノード管理テーブル２２は図２２のような状態になる。図２２に示すノード管理テーブル２２では、ノード５及び６（１０）について、ノード管理テーブル２２の受入状態欄２５１に「開始可」が設定され、実行状態欄２２２に「待機中」が設定されているので、管理装置２０は、ノード５及び６（１０）に対してジョブを割り当てることができる。上記のように、ジョブの割り当てができるようになるのはノード１０単位であり、終了通知が送信されていないノード１０については、ジョブを割り当てることができないようになっている。
【００５６】
上記のようにして、ノード１０においてジョブプログラム１３０が実行されている間に管理装置２０から更新要求が送信されても、ノード１０は実行中のジョブプログラム１３０を中断することなく、ジョブプログラム１３０の実行終了後に更新プログラム１３１を実行する。また、ジョブプログラム１３０が実行された後に更新プログラム１３１が実行されるので、更新プログラム１３１の実行とその他のジョブプログラム１３１の実行とが排他的に行われる。したがって、ジョブ処理システム全体としてのジョブの処理効率の低下を抑えて、ジョブプログラム１３０の更新を確実に行うことができる。
【００５７】
なお、更新プログラム１３１の実行により、ノード１０の再起動が必要な場合には、ノード１０は、例えば記憶装置１０３に、更新後に終了通知の送信が必要であることを示すデータを記憶しておき、起動時に記憶装置１０３に上記のデータが記憶されている場合には、終了通知を管理装置２０に送信するようにしてもよい。
【００５８】
また、例えば、ノード１０のハードウェア部品の耐用年数が経過した場合や、ハードウェア部品の性能や容量を変更したい場合などにノード１０の動作を停止して行う、ハードウェア部品の交換する場合に、本実施形態に係る更新ジョブの割当処理を適用することもできる。この場合、ジョブ処理システムを停止することなくハードウェア部品の交換を行うことができる。
【００５９】
ノード１０の再起動を伴う更新プログラム１３１を実行する場合、上述の図２０に示す処理の（Ｓ６０６）及び（Ｓ６０７）に代えて、ノード１０は図２３に示すような処理を行う。
【００６０】
ノード１０は、ノード１０が再起動されることを示すメッセージを出力する（Ｓ６２１）。メッセージの出力は、例えば、ディスプレイなどの出力装置に文字情報や画像情報を出力するようにしてもよいし、スピーカなどから音声情報を出力するようにしてもよい。ここで、ハードウェア部品の交換を促すメッセージを出力するようにすることもできる。
【００６１】
ノード１０は、再起動後に終了通知を管理装置２０に送信すべきことを示すデータ（以下、通知フラグという。）を記憶装置１０３などに記憶する（Ｓ６２２）。ノード１０は電源を切断するように自身を停止する制御を行う（Ｓ６２３）。このようにしてノード１０が停止することにより、システム管理者などはノード１０のハードウェアを交換することができる。
【００６２】
ノード１０に電源が投入されると、ノード１０は起動処理を行い（Ｓ６２４）、起動後記憶装置１０３に通知フラグが記憶されているかどうかを判断し（Ｓ６２５）、通知フラグが記憶されている場合には（Ｓ６２５：ＹＥＳ）、終了通知を管理装置２０に送信する（Ｓ６２６）。
【００６３】
上記のようにして再起動を伴うノード１０におけるジョブプログラム１３０の更新処理を行った場合でも、管理装置２０に終了通知が送信されるので、再起動後にノード１０にジョブを割り当てることができる。
【００６４】
また、上記のような処理をハードウェア部品を交換する場合に適用することで、ジョブ処理システム全体としての運用を停止することなく、ノード１０のハードウェア部品を交換することができる。さらに、同一のジョブを実行するノード１０間でハードウェア部品を交換しているものとしていないものが混在することがないため、ノード１０間のハードウェア構成の相違に起因する不整合の発生を未然に防ぐことができる。
【００６５】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００６６】
【図１】第１の実施形態に係るジョブ処理システムの全体構成を示す図である。
【図２】ノード１０のハードウェア構成を示す図である。
【図３】ノード１０のソフトウェア構成を示す図である。
【図４】管理装置２０のハードウェア構成を示す図である。
【図５】管理装置２０のソフトウェア構成を示す図である。
【図６】ノード管理テーブル２２の構成を示す図である。
【図７】ジョブキュー２３の一例を示す図である。
【図８】処理指示入力部２１１によるジョブ情報の登録処理の流れを示すフロー図である。
【図９】更新指示入力部２１２によるジョブ情報の登録処理の流れを示すフロー図である。
【図１０】ジョブの割当処理の流れを示すフロー図である。
【図１１】本実施形態の各ノード１０においてジョブプログラム１３０が実行されるタイミングを示す図である。
【図１２】ノード管理テーブル２２の一状態を示す図である。
【図１３】ジョブキュー２３の一状態を示す図である。
【図１４】従来の方法によってジョブプログラム１３０が実行されるタイミングを示す図である。
【図１５】単独のノード１０によりジョブプログラム１３０が実行されることによりジョブが処理される場合の、各ノード１０においてジョブプログラム１３０が実行されるタイミングを示す図である。
【図１６】ノード１０のソフトウェア構成を示す図である。
【図１７】管理装置２０のソフトウェア構成を示す図である。
【図１８】ノード管理テーブル２２の構成例を示す図である。
【図１９】ジョブキュー２３の一例を示す図である。
【図２０】ジョブの割当処理の流れを示す図である。
【図２１】ノード管理テーブル２２の一状態を示す図である。
【図２２】ノード管理テーブル２２の一状態を示す図である。
【図２３】ノード１０のハードウェア部品を交換する際の処理の流れを示す図である。
【符号の説明】
【００６７】
１０    ノード                        １０１  ＣＰＵ
１０２  メモリ                        １０３  記憶装置
１０４  通信インタフェース            １１１  処理要求受信部
１１２  プログラム実行部              １１３  終了通知送信部
１３０  ジョブプログラム              １３１  更新プログラム
２０    管理装置                      ２０１  ＣＰＵ
２０２  メモリ                        ２０３  記憶装置
２０４  通信インタフェース            ２０５  入力装置
２０６  出力装置                      ２１１  処理指示入力部
２１２  更新指示入力部                ２１３  ジョブ割当部
２１４  処理要求送信部                ２１５  終了通知受信部
２２    ノード管理テーブル            ２２１  ノード番号欄
２２２  実行状態欄                    ２２３  プログラム名欄
２３    ジョブキュー                  ２３１  プログラム名欄
２３２  ノード数欄                    ２３３  実行ノード指定欄
２３４  実行状態欄                    ２３５  優先度欄
２４１  更新要求送信部                ２５１  受入状態欄
【図１】
2007079936.tif 000003
【図２】
2007079936.tif 000004
【図３】
2007079936.tif 000005
【図４】
2007079936.tif 000006
【図５】
2007079936.tif 000007
【図６】
2007079936.tif 000008
【図７】
2007079936.tif 000009
【図８】
2007079936.tif 000010
【図９】
2007079936.tif 000011
【図１０】
2007079936.tif 000012
【図１１】
2007079936.tif 000013
【図１２】
2007079936.tif 000014
【図１３】
2007079936.tif 000015
【図１４】
2007079936.tif 000016
【図１５】
2007079936.tif 000017
【図１６】
2007079936.tif 000018
【図１７】
2007079936.tif 000019
【図１８】
2007079936.tif 000020
【図１９】
2007079936.tif 000021
【図２０】
2007079936.tif 000022
【図２１】
2007079936.tif 000023
【図２２】
2007079936.tif 000024
【図２３】
2007079936.tif 000025