(57)【要約】【課題】マスターノードの過負荷を軽減し、マスターノードがジョブの各ノードへの割り振り処理を効率よく行うことができる情報処理装置及び情報処理システムを提供する。【解決手段】クライアント１０は、大規模演算を構成する複数のジョブをいくつかのブロックに区分し、マスターノード２０が常に所定数以下のジョブに対して割り振り処理を行うことになるようにブロック単位でジョブの処理をマスターノード２０に依頼する。ここで、上記の所定数は、マスターノード２０が、たとえノードの数が多いときでも、それらのジョブを各ノードに割り振る処理を効率よく行うことができるような数であることが望ましい。このように、クライアント１０はマスターノード２０の負荷を制御する機能を有しているので、マスターノード２０の負荷が増加するのを防止することができる。【選択図】図１
2010287255.tif 000002
【特許請求の範囲】
【請求項１】
複数のジョブから構成される大規模演算の処理依頼を取得し、その大規模演算を構成する複数のジョブの処理をロードバランサに依頼する情報処理装置であって、取得した前記大規模演算を構成する複数のジョブを記憶する記憶手段と、
前記記憶手段に記憶されている、前記大規模演算を構成する複数のジョブを、前記記憶手段に記憶されているグループ化ルール情報に基づいていくつかのジョブグループにまとめるグループ化処理手段と、
前記グループ化処理手段で生成された複数のジョブグループについて、前記ロードバランサに処理を依頼しているジョブグループの数が常に所定数以下になるように前記ロードバランサにジョブグループの処理を依頼する管理手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記グループ化処理手段で生成された複数のジョブグループについて、前記記憶手段に記憶されている負荷見積もりルール情報に基づいて各ジョブグループの処理の負荷を見積もる負荷見積手段を更に備え、
前記管理手段は、前記負荷見積手段によって得られた各ジョブグループの処理の負荷についての見積もり結果に基づいて、負荷の重いジョブグループから負荷の軽いジョブグループの順に各ジョブグループの処理を前記ロードバランサに依頼することを特徴とする請求項１記載の情報処理装置。
【請求項３】
複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、前記クライアントから取得した複数のジョブの処理依頼を前記各ノードに割り振るマスターノードとがネットワーク接続された情報処理システムにおいて、
前記クライアントは、取得した前記大規模演算を構成する複数のジョブを記憶手段に記憶しておき、前記記憶手段に記憶されている、前記大規模演算を構成する複数のジョブについて、少なくとも互いに依存関係のあるジョブをまとめていくつかのブロックに区分し、前記マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるように前記クライアントが前記ブロック単位でジョブの処理を前記マスターノードに依頼し、前記マスターノードは前記ブロックの処理を前記各ノードに割り振ることを特徴とする情報処理システム。
【請求項４】
前記クライアントは、前記大規模演算を構成する複数のジョブについて各ジョブの処理の負荷を見積もり、その見積もって得られた結果にしたがって負荷の重いジョブから負荷の軽いジョブの順に各ジョブの処理を前記マスターノードに依頼することを特徴とする請求項３記載の情報処理システム。
【請求項５】
複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、
各ジョブの処理を実行する複数のノードと、
前記クライアントから取得した複数のジョブの処理依頼を前記各ノードに割り振る少なくとも１つのマスターノードと、
前記大規模演算のデータを格納するための記憶手段と
がネットワーク接続された情報処理システムにおいて、
前記クライアントは、前記大規模演算を構成する複数のジョブをいくつかのブロックに区分し、前記マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるように前記ブロック単位でジョブの処理を前記マスターノードに処理依頼し、かつ、前記ブロックの識別情報と共に前記記憶手段に格納されたジョブの演算内容及びその演算に用いる変数の所在を示す情報を、当該ブロックが割り振られたノードに送信することを特徴とする情報処理システム。
【請求項６】
前記各ノードは、前記マスターノードに割り振られたブロックに含まれるジョブについて、前記所在を示す情報に基づいて前記大規模演算にアクセスし、ジョブの演算内容及びその演算に用いる変数を取得してジョブの処理を実行することを特徴とする請求項５に記載の情報処理システム。
【請求項７】
前記各ノードは、ジョブの処理結果を前記記憶手段に送信して格納することを特徴とする請求項５に記載の情報処理システム。
【請求項８】
複数のクライアントが前記ネットワーク接続され、各クライアントは前記マスターノードに処理依頼しているジョブの数についての情報を相互に通知する機能をさらに備え、同一のマスターノードに処理依頼するジョブ数の合計が常に所定数以下になるように調整することを特徴とする請求項５に記載の情報処理システム。
【請求項９】
前記クライアントがマスターノードに処理依頼しているジョブの数を管理するジョブ数管理手段と、複数のクライアントが前記ネットワークに更に接続され、
前記ジョブ数管理手段は前記複数のクライアントが前記マスターノードに処理依頼しているジョブの数の合計が常に所定数以下になるように、前記クライアントから取得するジョブの数の情報を受信したときに、当該ジョブを受け付けたならばマスターノードに処理依頼されるジョブ数の合計が上限数を超えるか否かを判断し、上限数を超えない場合にジョブの処理依頼を許容する指示をクライアントに送信することを特徴とする請求項５に記載の情報処理システム。
【請求項１０】
前記クライアント、マスターノード、ノードの各機能の内、複数の機能をひとつの計算機が兼ね備えていることを特徴とする請求項５に記載の情報処理システム。
【請求項１１】
複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、前記クライアントから取得した複数のジョブの処理依頼を前記各ノードに割り振るマスターノードとがネットワーク接続された情報処理システムにおいて、
前記クライアントは、記憶手段に記憶されている、前記大規模演算を構成する複数のジョブをいくつかのブロックに区分し、前記マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるように前記ブロック単位でジョブの処理を前記マスターノードに依頼し、
前記クライアントは、前記ジョブの処理依頼したマスターノードに対して当該処理が終了したか否かを一定期間毎にあるいは、必要に応じて任意のタイミングで問い合わせし、前記マスターノードから処理が終了した旨の通知が送られる度に、未だ処理依頼していない前記ブロックのうち所定のブロックの処理を前記マスターノードに依頼することを特徴とする情報処理システム。
【請求項１２】
前記クライアント、マスターノード、ノードの各機能の内、複数の機能をひとつの計算機が兼ね備えていることを特徴とする請求項１１に記載の情報処理システム。
【請求項１３】
複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、前記クライアントから取得した複数のジョブの処理依頼を前記各ノードに割り振るマスターノードとがネットワーク接続された情報処理システムにおいて、
前記クライアントは、記憶手段に記憶されている、前記大規模演算を構成する複数のジョブのうち所定数のジョブを１つのブロックとして、当該ブロックを複数設定し、
第１のブロックである所定数のジョブの処理を前記マスターノードに依頼し、前記マスターノードから当該ブロックについて処理がすべて終了した旨の通知が送られる度に、未だ処理を依頼していない前記ブロックの内の一つを前記マスターノードに処理依頼することを特徴とする情報処理システム。
【請求項１４】
前記クライアント、マスターノード、ノードの各機能の内、複数の機能をひとつの計算機が兼ね備えていることを特徴とする請求項１３に記載の情報処理システム。
【請求項１５】
請求項１又は２に記載の情報処理装置の機能をコンピュータに実現させるためのプログラム。
【請求項１６】
請求項３乃至１４のいずれかに記載の情報処理システムの機能をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のジョブから構成される大規模演算の処理をネットワーク接続された複数のコンピュータで分かち合って実行する情報処理装置及び情報処理システムに関する。
【背景技術】
【０００２】
コンピュータによる情報処理の高効率化技術の一つとして、分散処理がある。分散処理は複数のマシンでジョブを実行し、並列的に処理を行う技術である。特に、複数のマシンで処理を分かち合う技術としては、多重化システムやグリッドコンピューティングなどと呼ばれるものもある。
【０００３】
このうち、多重化システムは、マシンが故障等のトラブルを起こしたときにも、それまでに処理されたデータを保護する目的、或いは提供中のサービスを継続させる目的に用いられる技術である。このため、多重化システムでは、同一の処理が複数のマシンで実行される。
【０００４】
一方、グリッドコンピューティングは、代表的には複数のコンピュータや記憶媒体をネットワークで接続して、仮想的に大規模高性能なコンピュータとして扱う技術である。例えば大量な計算を必要とする演算処理を、複数のコンピュータで分かち合って実行することで、実質的に演算結果を早く求めることができたりする。
【０００５】
ところで、複数のコンピュータで演算処理を分かち合うためには、各マシンにジョブを割り振る機能が必要になる。かかる機能は、一般的には、ロードバランサとかロードシェアリング（負荷分散）ソフトウェアなどと呼ばれるツールによって実現される。
【０００６】
次に、グリッドコンピューティングにおけるロードバランサの一般的な使われ方を説明する。図７はグリッドコンピューティングの技術を用いて構築された従来の情報処理システムの概略構成図である。かかる情報処理システムは、図７に示すように、クライアント１１０と、マスターノード１２０と、四つのノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄとを備えている。これらのマシン１１０，１２０，１３０ａ，１３０ｂ，１３０ｃ，１３０ｄはネットワークで接続されている。クライアント１１０は大規模演算の依頼元である。例えば、クライアント１１０が１０００個のジョブから構成される大規模演算をマスターノード１２０に依頼するものとする。ここで、「ジョブ」とは一つの演算の単位である。例えば「ｚ＝ｘ＋ｙ」という演算で「ｚ」を求めるというようなものである。そして、このとき、ｘとｙに代入される変数がｎ組あるものとする。つまり、一つのジョブでは代入される変数の数に依存した回数の演算が行われることになる。したがって、ジョブ数としては１０００個であるが、全体の演算数としてはその何十倍、何百倍という数になる。
【０００７】
ここで、クライアント１１０がマスターノード１２０に依頼する大規模演算は、所定の記憶装置等に記憶されている。この大規模演算のデータは元々、クライアント１１０とネットワークで接続された他のコンピュータから送信されたり、担当者によってクライアント１１０の入力装置を用いて入力されたりしたものである。その際、大規模演算のデータは既に所定数（例えば１０００個）のジョブに分割された状態で送信又は入力されるケースや、所定数のジョブに分割されずに送信又は入力されるケース等がある。後者のケースでは、クライアント１１０は、その送信又は入力された大規模演算のデータを所定のルールに基づいて所定数のジョブに分割することになる。以下、本明細書においては、特に断らない限り、大規模演算のデータが最初から１０００個のジョブに分割された状態でクライアントに送信又は入力されるケースについて説明する。
【０００８】
マスターノード１２０は、ロードバランサの機能を司るコンピュータであり、各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄにジョブを割り振る処理を行う。このジョブの割り振りの技術に関しては、各ノードの性能や負荷状況等に応じて適切な大きさのジョブを適切な数だけ当該ノードに送信するという技術が提案されている（例えば、特許文献１、特許文献２参照。）。また、各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄは、マスターノード１２０によって割り振られたジョブの演算処理を行うコンピュータである。
【０００９】
まず、クライアント１１０は、１０００個のジョブから構成される大規模演算のデータを受信すると、その１０００個のジョブをマスターノード１２０に送信する。次に、マスターノード１２０は、その受信した１０００個分のジョブを各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄに割り振る。各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄは、マスターノード１２０から送信されたジョブの演算処理を行い、その処理が完了したら当該ジョブが終了したことをマスターノード１２０に報告する。かかる報告を受けると、マスターノード１２０は、まだ割り振られていない未処理のジョブがあれば、そのジョブを当該ノードに送信する。こうして、マスターノード１２０は、未処理のジョブを各ノードに送信する処理と、ジョブが終了した旨の報告を受信する処理とを繰り返し行うことにより、すべてのジョブの演算処理を四つのノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄに実行させる。
【００１０】
また、マスターノード１２０は、あくまでもクライアント１１０から依頼されたジョブを各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄに効率よく割り振るという機能を実現するものであり、各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄでの演算処理結果について何らデータ処理を施すものではない。つまり、各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄでの演算処理結果は、最終的には大規模演算の依頼元であるクライアント１１０に集約されることが前提となっている。このため、例えば、マスターノード１２０は、各ノード１３０ａ，１３０ｂ，１３０ｃ，１３０ｄから演算処理結果が返ってきたときには、その演算処理結果をクライアント１１０に送信する必要がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】日本国特許出願公開平７−２１９９０７号公報
【特許文献２】日本国特許出願公開２００２−２６９０６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述したように、マスターノードは、管理下にある各ノードの処理状況・負荷状況を監視しながら、ジョブを次々に適切に割り振って各ノードに送信するというジョブの割り振り処理を行う。しかしながら、マスターノードの管理下にあるノードの数が多くなると、ジョブの割り振り処理の際、マスターノードには各ノードの処理状況・負荷状況を監視するだけでも相当の負荷が生じてしまうという問題がある。しかも、マスターノードは、各ノードの処理状況・負荷状況に応じて適切なノードに適量のジョブを割り振るための最適化処理を行うが、この最適化処理も高負荷となってしまう。
【００１３】
また、クライアントからマスターノードに依頼されるジョブの数が多くなると、マスターノードでは、各ノードから返ってきた演算処理結果をクライアントに送信するという処理が頻発することになる。このため、マスターノードでは、演算処理結果の送信に対する負荷が高まり、マスターノードの行う本来最も重要な処理であるジョブの割り振り処理の処理速度が低下してしまうことがある。
【００１４】
更に、ノードの数がそれほど多くないとしても、依頼されるジョブの数が増加することにより、マスターノードでは、ジョブの割り振り処理を行う際に適切なジョブを選択する負荷が増大すると共に、クライアントとの接続を維持してクライアントからの処理結果監視の要求に応じる負荷が余分に発生する。また、同様に、クライアントにとっても、マスターノードへ依頼するジョブの数が増加することにより、ジョブの処理結果を監視する負荷が増大する。
【００１５】
これらの問題を解消するために、例えば、マスターノード自体の負荷制御を行うことができるような仕組みを有する情報処理装置及び情報処理システムの実現が望まれている。
【００１６】
本発明は上記事情に基づいてなされたものであり、マスターノードの過負荷を軽減し、マスターノードがその本来の機能であるジョブの各ノードへの割り振り処理を効率よく行うことができる情報処理装置及び情報処理システムを提供することを目的とするものである。
【課題を解決するための手段】
【００１７】
上記の目的を達成するための本発明に係る情報処理装置は、複数のジョブから構成される大規模演算の処理依頼を取得し、その大規模演算を構成する複数のジョブの処理をロードバランサに依頼する情報処理装置であって、取得した大規模演算を構成する複数のジョブを記憶する記憶手段と、記憶手段に記憶されている、大規模演算を構成する複数のジョブを、記憶手段に記憶されているグループ化ルール情報に基づいていくつかのジョブグループにまとめるグループ化処理手段と、グループ化処理手段で生成された複数のジョブグループについて、ロードバランサに処理を依頼しているジョブグループの数が常に所定数以下になるようにロードバランサにジョブグループの処理を依頼する管理手段と、を備えるものである。
【００１８】
本発明に係る情報処理装置において、グループ化処理手段で生成された複数のジョブグループについて、記憶手段に記憶されている負荷見積もりルール情報に基づいて各ジョブグループの処理の負荷を見積もる負荷見積手段を更に備え、管理手段は、負荷見積手段によって得られた各ジョブグループの処理の負荷についての見積もり結果に基づいて、負荷の重いジョブグループから負荷の軽いジョブグループの順に各ジョブグループの処理をロードバランサに依頼することが望ましい。
【００１９】
上記の目的を達成するための本発明に係る情報処理システムは、複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、クライアントから取得した複数のジョブの処理依頼を各ノードに割り振るマスターノードとがネットワーク接続された情報処理システムにおいて、クライアントは、取得した大規模演算を構成する複数のジョブを記憶手段に記憶しておき、記憶手段に記憶されている、大規模演算を構成する複数のジョブについて、少なくとも互いに依存関係のあるジョブをまとめていくつかのブロックに区分し、マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるようにクライアントがブロック単位でジョブの処理をマスターノードに依頼し、マスターノードはブロックの処理を各ノードに割り振るものである。
【００２０】
本発明に係る情報処理システムにおいて、クライアントは、大規模演算を構成する複数のジョブについて各ジョブの処理の負荷を見積もり、その見積もって得られた結果にしたがって負荷の重いジョブから負荷の軽いジョブの順に各ジョブの処理をマスターノードに依頼することが望ましい。
【００２１】
上記の目的を達成するための本発明に係る情報処理システムは、複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、クライアントから取得した複数のジョブの処理依頼を各ノードに割り振る少なくとも１つのマスターノードと、大規模演算のデータを格納するための記憶手段とがネットワーク接続された情報処理システムにおいて、クライアントは、大規模演算を構成する複数のジョブをいくつかのブロックに区分し、マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるようにブロック単位でジョブの処理をマスターノードに処理依頼し、かつ、ブロックの識別情報と共に記憶手段に格納されたジョブの演算内容及びその演算に用いる変数の所在を示す情報を、当該ブロックが割り振られたノードに送信するものである。
【００２２】
本発明に係る情報処理システムにおいて、各ノードは、マスターノードに割り振られたブロックに含まれるジョブについて、所在を示す情報に基づいて大規模演算にアクセスし、ジョブの演算内容及びその演算に用いる変数を取得してジョブの処理を実行することが望ましい。
【００２３】
本発明に係る情報処理システムにおいて、各ノードは、ジョブの処理結果を記憶手段に送信して格納することが望ましい。
【００２４】
本発明に係る情報処理システムにおいて、複数のクライアントがネットワーク接続され、各クライアントはマスターノードに処理依頼しているジョブの数についての情報を相互に通知する機能をさらに備え、同一のマスターノードに処理依頼するジョブ数の合計が常に所定数以下になるように調整することが望ましい。
【００２５】
本発明に係る情報処理システムにおいて、クライアントがマスターノードに処理依頼しているジョブの数を管理するジョブ数管理手段と、複数のクライアントがネットワークに更に接続され、ジョブ数管理手段は複数のクライアントがマスターノードに処理依頼しているジョブの数の合計が常に所定数以下になるように、クライアントから取得するジョブの数の情報を受信したときに、当該ジョブを受け付けたならばマスターノードに処理依頼されるジョブ数の合計が上限数を超えるか否かを判断し、上限数を超えない場合にジョブの処理依頼を許容する指示をクライアントに送信することが望ましい。
【００２６】
本発明に係る情報処理システムにおいて、クライアント、マスターノード、ノードの各機能の内、複数の機能をひとつの計算機が兼ね備えていることが望ましい。
【００２７】
上記の目的を達成するための本発明に係る情報処理システムは、複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、クライアントから取得した複数のジョブの処理依頼を各ノードに割り振るマスターノードとがネットワーク接続された情報処理システムにおいて、クライアントは、記憶手段に記憶されている、大規模演算を構成する複数のジョブをいくつかのブロックに区分し、マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるようにブロック単位でジョブの処理をマスターノードに依頼し、クライアントは、ジョブの処理依頼したマスターノードに対して当該処理が終了したか否かを一定期間毎にあるいは、必要に応じて任意のタイミングで問い合わせし、マスターノードから処理が終了した旨の通知が送られる度に、未だ処理依頼していないブロックのうち所定のブロックの処理をマスターノードに依頼するものである。
【００２８】
本発明に係る情報処理システムにおいて、クライアント、マスターノード、ノードの各機能の内、複数の機能をひとつの計算機が兼ね備えていることが望ましい。
【００２９】
上記の目的を達成するための本発明に係る情報処理システムは、複数のジョブから構成される大規模演算の処理依頼を取得するクライアントと、各ジョブの処理を実行する複数のノードと、クライアントから取得した複数のジョブの処理依頼を各ノードに割り振るマスターノードとがネットワーク接続された情報処理システムにおいて、クライアントは、記憶手段に記憶されている、大規模演算を構成する複数のジョブのうち所定数のジョブを１つのブロックとして、当該ブロックを複数設定し、第１のブロックである所定数のジョブの処理をマスターノードに依頼し、マスターノードから当該ブロックについて処理がすべて終了した旨の通知が送られる度に、未だ処理を依頼していないブロックの内の一つをマスターノードに処理依頼するものである。
【００３０】
本発明に係る情報処理システムにおいて、クライアント、マスターノード、ノードの各機能の内、複数の機能をひとつの計算機が兼ね備えていることが望ましい。
【発明の効果】
【００３１】
本発明に係る情報処理装置では、グループ化処理手段は、記憶手段に記憶されている、大規模演算を構成する複数のジョブを、記憶手段に記憶されているグループ化ルール情報に基づいていくつかのジョブグループにまとめる。例えば１０００個のジョブがグループ化処理手段によって６００個のジョブグループにまとめられることになる。管理手段は、このグループ化処理手段で生成された複数のジョブグループについて、ロードバランサに処理を依頼しているジョブグループの数が常に所定数以下になるようにロードバランサにジョブグループの処理を依頼する。例えば上記の所定数が３００個に設定されていると、ロードバランサには常に最大でも３００個のジョブグループの処理が依頼されることになる。これにより、ロードバランサは常に１０００個のジョブを管理する必要がなくなり、３００個以下のジョブグループに含まれるジョブ数のジョブについてのみ各ノードへの割り振り処理を行えばよいことになる。このため、ロードバランサの負荷が増加するのを防止することができる。しかも、このようにロードバランサの負荷を軽減することができるので、ロードバランサは、ジョブグループの各ノードへの割り振り処理だけでなく、情報処理装置からの演算結果監視の要求に応じる処理をも効率よく行うことができる。更に、情報処理装置にとっても、ロードバランサに依頼するジョブの数が少なくなるので、演算結果監視の処理に対する負荷が軽減する。
【００３２】
本発明に係る情報処理装置では、負荷見積手段は、グループ化処理手段で生成された複数のジョブグループについて、記憶手段に記憶されている負荷見積もりルール情報に基づいて各ジョブグループの処理の負荷を見積もる。そして、管理手段は、その負荷見積手段によって得られた各ジョブグループの処理の負荷についての見積もり結果に基づいて、負荷の重いジョブグループから負荷の軽いジョブグループの順に各ジョブグループの処理をロードバランサに依頼する。これにより、ロードバランサは、負荷の最も重いジョブグループの処理を、処理能力の最も高いノードに割り振って、そのノードで最初に実行させることができると共に、各ノードでの全体的な処理時間が略均一になるようにジョブグループの割り振り処理を行うことができるので、大規模演算全体の処理時間の短縮を図ることができる。
【００３３】
本発明に係る情報処理システムでは、クライアントは、大規模演算を構成する複数のジョブをいくつかのブロックに区分し、マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるようにブロック単位でジョブの処理をマスターノードに依頼する。これにより、クライアントは、従来のようにすべてのジョブの処理を一括してマスターノードに依頼するのではなく、複数のジョブを、小規模のジョブを含むいくつかのブロックに区分し、そのブロック単位で少しずつマスターノードに依頼することができる。ここで、各ブロックに含まれるジョブの数は１から上記の所定数までの範囲で適宜決定される。また、上記の所定数は、当該マスターノードが、たとえノードの数が多いときでも、それらのジョブを各ノードに割り振る処理を効率よく行うことができるような数であることが望ましい。このようなクライアントはマスターノードの負荷を制御する機能を有していると考えることができる。このため、マスターノードは常に上記の所定数以下のジョブについてのみ各ノードへの割り振り処理を行えばよいことになるので、マスターノードの負荷が増加するのを防止することができる。しかも、このようにマスターノードの負荷を軽減することができるので、マスターノードは、ジョブの各ノードへの割り振り処理だけでなく、クライアントからの演算結果監視の要求に応じる処理をも効率よく行うことができる。更に、クライアントにとっても、マスターノードに依頼するジョブの数が少なくなるので、演算結果監視の処理に対する負荷が軽減する。
【００３４】
本発明に係る情報処理システムでは、クライアントは、大規模演算を構成する複数のジョブについて各ジョブの処理の負荷を見積もり、その見積もって得られた結果にしたがって負荷の重いジョブから負荷の軽いジョブの順に各ジョブの処理をマスターノードに依頼する。これにより、マスターノードは、負荷の最も重いジョブの処理を、処理能力の最も高いノードに割り振って、そのノードで最初に実行させることができると共に、各ノードでの全体的な処理時間が略均一になるようにジョブの割り振り処理を行うことができるので、大規模演算全体の処理時間の短縮を図ることができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施形態に係る情報処理システムの概略構成図である。
【図２】本実施形態の情報処理システムにおけるクライアントの概略構成ブロック図である。
【図３】大規模演算を構成するジョブの一例を説明するための図である。
【図４】クライアントのリスト生成手段によって生成されたリストの一例を示す図である。
【図５】クライアントが第一の依頼方法により行う処理の手順を説明するためのフローチャートである。
【図６】クライアントが第二の依頼方法により行う処理の手順を説明するためのフローチャートである。
【図７】グリッドコンピューティングの技術を用いて構築された従来の情報処理システムの概略構成図である。
【発明を実施するための形態】
【００３６】
以下に、図面を参照して、本願に係る発明を実施するための最良の形態について説明する。図１は本発明の一実施形態に係る情報処理システムの概略構成図である。
【００３７】
本実施形態の情報処理システムは、例えば、大規模演算を複数のコンピュータで分かち合って実行する際に使用されるものであり、図１に示すように、クライアント１０と、マスターノード２０と、四つのノード３０ａ，３０ｂ，３０ｃ，３０ｄとを備えるものである。クライアント１０、マスターノード２０、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄとしては、パーソナルコンピュータやワークステーション等が用いられる。また、クライアント１０、マスターノード２０、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄはネットワークで接続されている。ここで、ネットワークとしては例えばインターネットやＬＡＮ・ＷＡＮの社内ネットワーク等が用いられる。尚、クライアント１０は、請求項６記載の発明に係る情報処理装置に該当する。
【００３８】
クライアント１０は、大規模演算のデータを受信すると共に、かかる大規模演算の処理をマスターノード２０に依頼するものである。大規模演算は複数のジョブから構成されている。ここで、「ジョブ」とは一つの演算の単位である。この大規模演算のデータは、通常、外部のコンピュータ等からネットワークを介してクライアント１０に送信されるが、例えばクライアント１０の担当者が自ら入力したものであってもよい。外部のコンピュータ等から送信され又は担当者によって入力される大規模演算のデータは、クライアント１０での取得時に既にジョブという単位に分割されているものであってもよいし、ジョブという単位に分割されていないものであってもよい。クライアント１０は、ジョブという単位に分割される前の状態の大規模演算のデータを取得した場合、クライアント１０の有するジョブ分割機能によってその大規模演算のデータを所定数のジョブに分割することになる。このジョブ分割機能の具体的な内容については後述する。
【００３９】
また、クライアント１０は、大規模演算を構成する複数のジョブについて、互いに依存性のあるジョブを一つのジョブグループとしてまとめる処理を行う。本実施形態では、実際、大規模演算の処理の依頼は、このジョブグループ単位で行われることになる。更に、クライアント１０は、マスターノード２０に依頼したジョブグループの処理結果を監視する処理を行う。具体的には、クライアント１０は、マスターノード２０に依頼したジョブグループの処理が終了したかどうかの問い合わせを一定期間毎に或いは、必要に応じて任意のタイミングでマスターノード２０に対して行う。また、クライアント１０は、すべてのジョブグループの処理結果を受け取ったときにそれらの結果を統合する処理を行う。尚、このような機能を有するクライアント１０は、例えばワークステーションにその機能を実現するためのソフトウェアを組み込むことにより実現される。
【００４０】
ところで、クライアント１０は、ジョブグループの処理結果を受け取ったときにそれらの結果を統合する処理を行うが、これはクライアント１０が必ず何らかの情報処理を行うということを意味するわけではない。また、クライアント１０がジョブグループの処理結果を統合する統合処理を行うのではなく、外部のマシンが統合処理を行うこともある。つまり、例えば１０００個のジョブについて１０００個の結果が得られた場合、１０００個の結果そのものが外部のマシンに送信されるのであれば、クライアント１０は統合処理を行う必要はない。
【００４１】
マスターノード２０は、ロードバランサの機能を司るコンピュータであり、クライアント１０から依頼された各ジョブグループの処理を四つのノード３０ａ，３０ｂ，３０ｃ，３０ｄに割り振る処理を行う。ここで、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄにはジョブグループが例えば一個ずつ割り振られる。割り振りの処理自体には従来技術で説明した技術を適用することができる。どのジョブグループをどのノードに割り振るかが決まると、クライアント１０はそのジョブグループの内容、すなわち、当該ジョブグループに含まれるジョブの演算内容とその演算に用いる変数とを、当該ジョブグループが割り振られたノードに送信する。あるいは、ジョブの演算内容及びその演算に用いる変数を所定の記憶手段（不図示）に格納しておき、クライアント１０が、ジョブグループの識別情報を、当該ジョブグループに含まれるジョブの演算内容とその演算に用いる変数との所在を示す情報とともに、当該ジョブグループが割り振られたノードに送信するようにしてもよい。この場合、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄは、上記の記憶手段にアクセスして、自己に割り振られたジョブグループに含まれるジョブの演算内容とその演算に用いる変数とを取得することになる。
【００４２】
また、マスターノード２０は、クライアント１０からの問い合わせに応じて、例えば各ノード３０ａ，３０ｂ，３０ｃ，３０ｄでのジョブグループの処理が終了した旨の通知をクライアント１０に送信する。ここで、マスターノード２０は、クライアント１０からの問い合わせを受けた時だけでなく、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄからジョブグループの処理が終了した旨の報告を受けた時にも、処理終了の通知をクライアント１０に送信するようにしてもよい。更に、マスターノード２０は、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄからジョブグループの処理結果を受け取ったときに、その処理結果をクライアント１０に送信する。尚、このような機能を有するマスターノード２０は、例えばワークステーションにその機能を実現するためのソフトウェアを組み込むことにより実現される。
【００４３】
各ノード３０ａ，３０ｂ，３０ｃ，３０ｄは、マスターノード２０からの指示を受けて自己に割り振られたジョブグループの処理を実行するものである。マスターノード２０からの指示には、ジョブグループの処理内容や処理結果の格納先（又は送信先）等の情報が含まれている。ここで、本実施形態では、処理結果の格納先（又は送信先）としては、マスターノード２０が指定されているものとする。各ノード３０ａ，３０ｂ，３０ｃ，３０ｄは、ジョブグループの演算処理を終了すると、当該ジョブグループの処理が終了したことをマスターノード２０に報告すると共にその処理結果をマスターノード２０に送信する。そして、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄは次の指示が送られてくるのを待つことになる。こうして、マスターノード２０から各ノード３０ａ，３０ｂ，３０ｃ，３０ｄへの指示、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄからマスターノード２０への報告が繰り返し行われることにより、大規模演算の処理が実行される。このとき、マスターノード２０は、そのロードバランサ機能により、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄがジョブグループの処理終了を報告してから次の指示を受けるまでの待ち時間が少なくなるような制御をも行っている。
【００４４】
次に、クライアント１０の構成について詳しく説明する。図２は本実施形態の情報処理システムにおけるクライアント１０の概略構成ブロック図である。
【００４５】
クライアント１０は、図２に示すように、入力装置１１と、表示装置１２と、通信部１３と、記憶部１４と、制御部１５とを備える。入力装置１１は、例えば、各種の命令を入力したり、大規模演算のデータを入力したりするものである。この入力装置１１としては、キーボードやマウス等が用いられる。また、表示装置１２は、例えば、大規模演算のデータを入力するための入力画面を表示したり、その大規模演算の処理結果を表示したりするものである。
【００４６】
通信部１３は、マスターノード２０や他のマシン（コンピュータやデータベース等）に情報を送信したり、マスターノード２０や他のマシンから情報を受信したりするものである。具体的に、他のマシンからクライアント１０に送られる情報としては、例えば大規模演算のデータ等がある。また、クライアント１０からマスターノード２０に送られる情報としては、ジョブグループの処理を依頼するための処理命令、処理結果監視のための問い合わせ等があり、マスターノード２０からクライアント１０に送られる情報としては、各ジョブグループの処理結果等がある。
【００４７】
記憶部１４は、各種のアプリケーションプログラムや各種のデータ等を記憶するものである。記憶部１４としては、クライアント１０内のメモリやハードディスクドライブ、外部の記憶装置等を用いることができる。例えば、この記憶部１４には、大規模演算のデータ、グループ化ルール情報、負荷見積もりルール情報、ジョブグループのリスト、マスターノード２０が割り振り処理を行うジョブグループの上限数、各ジョブグループの処理結果等が記憶される。グループ化ルール情報、負荷見積もりルール情報、ジョブグループのリスト、マスターノード２０が割り振り処理を行うジョブグループの上限数については後述する。
【００４８】
ここで、大規模演算について具体的に説明する。いま、外部のマシンからネットワークを介して大規模演算のデータがクライアント１０に送られたとする。クライアント１０の通信部１３は、かかる大規模演算のデータを受信すると、記憶部１４に格納する。図３は大規模演算を構成するジョブの一例を説明するための図である。この例では、この大規模演算は、１０００個のジョブから構成されている。このうち、ジョブ“１”は「ｚ１  ＝ｘ＋ｙ」という演算であり、その変数の組（ｘ，ｙ）は例えば１０組あるものとする。ジョブ“２”は「ｚ＝ｚ１  ×ｘ１  」という演算である。すなわち、このジョブ“２”の変数は、ジョブ１の処理結果ｚ１  と変数ｘ１  とである。変数ｘ１  が二つの値をとるとすると、変数の組（ｚ１  ，ｘ１  ）は２０組あることになる。また、ジョブ“３”は「ｚ＝ｘ＋ｙ１  ＋ｙ２  」という演算である。この変数の組（ｘ，ｙ１  ，ｙ２  ）は例えば２０組あるものとする。その他のジョブについてもその演算内容と変数とが指定されている。大規模演算は、このようなジョブの集まりによって構成されている。尚、図３に示す大規模演算の例では、一つのジョブに一つの演算内容（演算式）が含まれているが、一般には、一つのジョブに複数の演算内容が含まれていることもある。また、図３に示す大規模演算の例では、各ジョブに含まれる演算内容（演算式）がそれぞれ異なっているが、大規模演算を構成する複数のジョブの中には、演算内容が同じで変数だけが異なっている複数のジョブが存在していてもよい。
【００４９】
ところで、クライアント１０は、上述したように、大規模演算のデータをジョブという単位に分割されない状態で外部のマシンから受信することがある。すなわち、大規模演算のデータに含まれるすべての演算内容とそれらに用いる変数のデータとが、例えば図３に示すようにジョブ“１”からジョブ“１０００”まで合計１０００個のジョブに分割された状態ではなく、その分割される前の状態で外部のマシンからクライアント１０に送信されることがある。この場合、クライアント１０は、そのクライアント１０に備えられたジョブ分割機能を利用して、その送信された大規模演算のデータを演算毎に分割し、その分割した各々の演算とそれに用いる変数とを組み合わせることにより、ジョブという単位に分割された状態の大規模演算のデータを得ることができる。また、大規模演算のデータは、外部のマシンからクライアント１０に直接送信されるのではなく、外部データベースに格納されていることがある。この場合、クライアント１０は、外部データベースの所在情報と大規模演算のデータについての分割の判断基準となるデータとだけを外部のマシンから予め受信することになる。そして、クライアント１０は、ジョブ分割機能を利用して、その外部データベースにアクセスし、分割の判断基準に基づいてその大規模演算のデータを複数のジョブに分割することにより、ジョブという単位に分割された状態の大規模演算のデータを取得することができる。
【００５０】
制御部１５は、クライアント１０の各部を統括して制御するものである。この制御部１５は、図２に示すように、グループ化処理手段１５ａと、負荷見積手段１５ｂと、リスト生成手段１５ｃと、管理手段１５ｄとを有する。
【００５１】
グループ化処理手段１５ａは、大規模演算を構成する複数のジョブについて、互いに依存性のあるジョブを一つのジョブグループとしてまとめるグループ化処理を行うものである。あるジョブとあるジョブとの間に関連性があったり、依存関係があったりすると、それらのジョブを別個に処理することが適当でない場合がある。例えば、図３に示すように、ジョブ“１”の処理結果を使ってジョブ“２”の演算が行われる場合には、ジョブ“１”の処理をマスターノード２０に依頼する前にジョブ“２”の処理を依頼したのでは、ジョブ“２”の処理が実行不可能となってしまう。そこで、グループ化処理手段１５ａは、記憶部１４に格納されているグループ化ルール情報を読み出し、この読み出したグループ化ルール情報に従って大規模演算を構成する複数のジョブをいくつかのジョブグループにまとめるグループ化処理を行う。かかるグループ化ルール情報は演算対象の大規模演算毎に予め記憶部１４に格納されている。また、グループ化ルール情報は、大規模演算のデータとともに外部のマシンから送信され、その際に記憶部１４に格納されることもある。例えば、物体の軌道を算出するための大規模演算に対するグループ化ルール情報では、演算の対象が物体の科学的性質や物理的性質の点で互いに共通しているジョブを一つのグループにまとめるというルールを定め、工場などで製品の生産計画を立てるための大規模演算に対するグループ化ルール情報では、演算の対象が製品の品種や大きさの点で互いに共通しているジョブを一つのグループにまとめるというルールを定めることができる。また、図３に示す大規模演算に対するグループ化ルール情報では、変数の利用関係があるジョブ同士を一つのグループにまとめるというルールを定めることができる。このルール情報を適用すると、図３の例では、グループ化処理手段１５ａは、各ジョブについて変数の利用関係を解析し、ジョブ“１”とジョブ“２”とを一つのジョブグループとしてまとめることになる。更に、グループ化ルール情報において、一つのジョブグループに含めることができるジョブの上限数を設定し、当該上限数を超えない範囲で複数のジョブを一つのグループにまとめるというルールを定めてもよい。また、上記のようなルールを複数組み合わせて得られるルールを定めることも可能である。例えば、工場などで製品の生産計画を立てるための大規模演算に対するグループ化ルール情報において、演算の対象が製品の品種や大きさの点で互いに共通しているジョブを一つのグループにまとめ、且つ、各グループには所定の上限値を超える数のジョブを含んではならないというルールを定めることができる。本実施形態では、具体的に、グループ化処理手段１５ａが、図３に示すような１０００個のジョブについてグループ化処理を行い、図１に示すように、６００個のジョブグループが得られたものとする。
【００５２】
負荷見積手段１５ｂは、グループ化処理手段１５ａによって得られた各ジョブグループについて、記憶部１４に格納されている負荷の見積もりルール情報に従ってその処理の負荷を見積もるものである。例えば、負荷見積もりルール情報には、各ジョブグループの処理の負荷の見積もりを、当該ジョブグループを構成する各ジョブについての変数の組の数の和に基づいて行うべきことが定められている。この変数の組の数の和は、当該ジョブグループの演算を行う際にそれに含まれるジョブの演算を行う回数である。このため、各ジョブの演算内容がほぼ同じ程度であれば、変数の組の数の和が多いほどそのジョブグループの処理の負荷が大きいと考えられる。尚、各ジョブの演算内容が大きく異なっていれば、それに応じても負荷が変わってくる。このような場合、負荷を正確に見積もるためには、変数の組の数に加えて、ジョブの内容をも考慮するように、負荷見積もりルール情報の内容を変更すればよい。このようなジョブの内容をも考慮した負荷の見積もりを行うには、例えば、ジョブの演算内容の程度を示すパラメータを外部から与えたり、或いは前回使用したパラメータを記憶部１４に格納しておき、再度読み出して利用したりする必要がある。
【００５３】
尚、負荷見積手段１５ｂによる見積もりの結果、非常に負荷の高いジョブグループがあった場合には、負荷見積手段１５ｂは、そのジョブグループをグループ化処理手段１５ａに戻し、当該ジョブグループを更に小規模に分割する処理をグループ化処理手段１５ａに行わせるようにしてもよい。この場合、グループ化ルール情報には、ジョブグループを更に小規模に分割するかどうかを判断するための負荷の閾値情報やその更なる分割を行うためのルールを含めておく必要がある。特に、互いに依存関係があるジョブをそれぞれ別のグループに分けることはできないので、このような分割できないジョブについてのルールもそのグループ化ルール情報に含めておく必要がある。一般には、グループ化ルール情報に含まれるルールを、ｉｆ−ｔｈｅｎルールや範囲指定ルール等、様々な形式のルールで定義することが可能である。
【００５４】
リスト生成手段１５ｃは、負荷見積手段１５ｂによって見積もられた各ジョブグループの処理の負荷に基づいて、複数のジョブグループをその負荷の重い順にソートして得られるジョブグループのリストを生成して記憶部１４に記憶するものである。図４にリスト生成手段１５ｃによって生成されたリストの一例を示す。このリストには、ジョブグループＩＤ欄と、対象ジョブ欄とが設けられている。ジョブグループＩＤ欄には、当該ジョブグループに付与されたＩＤ番号（識別情報）が記載され、対象ジョブ欄には、当該ジョブグループを構成するジョブの番号が記載される。図４のリストは、図３に示す１０００個のジョブから得られた６００個のジョブグループについてのものである。このリストの最上位に負荷の最も重いジョブグループが記述され、下位に行くほど負荷の軽いジョブグループが記述されている。この例では、ジョブ“１０００”のみから構成されるＩＤ番号“００１”のジョブグループの負荷が最も重く、次に、ジョブ“５”、ジョブ“６”及びジョブ“７”から構成されるＩＤ番号“００２”のジョブグループの負荷が二番目に重い。このように、図４の例では、リスト生成手段１５ｃは、６００個のジョブグループに対し、負荷の重いものから順番にＩＤ番号を付与している。このため、ジョブグループのＩＤ番号は、ジョブグループを識別する役割だけでなく、負荷の重い順番を表す役割をも果たしている。また、このリストには、各ジョブグループについて、依頼済欄と、受信済欄とが設けられている。依頼済欄は、当該ジョブグループの処理をマスターノード２０に依頼したことを示す依頼済フラグを付けるための欄であり、受信済欄は、当該ジョブグループの処理が終了したことを示す通知を受信したことを示す受信済フラグを付けるための欄である。具体的に、本実施形態では、依頼済欄及び受信済欄にはそれぞれ、当該処理が“済”でない状態にあるときに“０”というフラグが、当該処理が“済”の状態にあるときに“１”というフラグが付けられる。尚、これら依頼済フラグと受信済フラグとは管理手段１５ｄによって管理される。
【００５５】
管理手段１５ｄは、大規模演算を構成する各ジョブグループの処理をマスターノード２０に依頼するものである。具体的に、管理手段１５ｄは、大規模演算を構成する複数のジョブグループをいくつかのブロックに区分し、マスターノード２０が常に所定数以下のジョブグループに対して割り振り処理を行うことになるようにそのブロック単位でジョブグループの処理をマスターノード２０に依頼する。ここで、各ブロックに含まれるジョブグループの数は１から上記の所定数までの範囲で適宜決定される。すなわち、上記の所定数（マスターノード２０が割り振り処理を行うジョブグループの上限数）をＭとすると、一つのブロックにはｍ個のジョブグループが含まれることになる。ここで、ｍは１以上Ｍ以下の自然数である。また、マスターノード２０が割り振り処理を行うジョブグループの上限数Ｍは、マスターノード２０が、たとえノードの数が多いときでも、それらのジョブグループを各ノードに割り振る処理を効率よく行うことができるような数であることが望ましい。すなわち、このマスターノード２０が割り振り処理を行うジョブグループの上限数Ｍは、マスターノード２０の処理能力に応じて決められる。例えば、本実施形態では、マスターノード２０が割り振り処理を行うジョブグループの上限数Ｍを３００に決定している。ここで、このマスターノード２０が割り振り処理を行うジョブグループの上限数Ｍは、記憶部１４に格納されている。
【００５６】
また、管理手段１５ｄは、図４に示すリストの内容にしたがって負荷の重いジョブグループから負荷の軽いジョブグループの順に各ジョブグループの処理をマスターノード２０に依頼することが望ましい。もし最後に一番負荷の重いジョブグループの処理をマスターノード２０に依頼したとすると、そのジョブグループがある一つのノードで長い時間にわたって処理され、大規模演算全体に対する処理時間がとても長くなってしまう。負荷の重いジョブグループから順にその処理をマスターノード２０に依頼することにより、マスターノード２０は、負荷の最も重いジョブグループの処理を、処理能力の最も高いノードに割り振って、そのノードで最初に実行させることができると共に、各ノードでの全体的な処理時間が略均一になるようにジョブグループの割り振り処理を行うことができるので、当該大規模演算全体の処理時間の短縮を図ることができる。
【００５７】
ところで、管理手段１５ｄがマスターノード２０に対して行うジョブグループの依頼の方法としては、さまざまな方法が考えられる。本実施形態では、代表的に、以下に示す二つの依頼方法を説明する。
【００５８】
第一の依頼方法では、図４に示すように、大規模演算を構成する６００個のジョブグループのうち、図４のリスト上で最上位から３００番目までに記述されている３００個のジョブグループを第１ブロックとし、その他のジョブグループをそれぞれ、図４のリスト上で上位にあるものから順に、第ｎブロック（ｎ＝２，３，・・・，Ｎ）とする。ここで、Ｎ＝３０１である。すなわち、ＩＤ番号“００１”からＩＤ番号“３００”までの３００個のジョブグループを第１ブロック、ＩＤ番号“３０１”のジョブグループを第２ブロック、ＩＤ番号“３０２”のジョブグループを第３ブロック、・・・、ＩＤ番号“６００”のジョブグループを第３０１ブロックとする。そして、管理手段１５ｄは、最初に第１ブロックである３００個のジョブグループの処理をマスターノード２０に依頼し、マスターノード２０から一つのジョブグループについての処理が終了した旨の通知が送られる度に、未だ処理を依頼していないブロックのうち所定の一つのブロックの処理をマスターノード２０に依頼する。ここで、所定の一つのブロックの処理についての依頼は、その時点ですでに依頼されているブロックを除いて図４のリスト上で最も上位に記述されているブロックについて行う。例えば、現時点で第１ブロックから第１００ブロックまでの合計１００個のブロックがマスターノード２０に依頼されている場合に、管理手段１５ｄは、一つのジョブグループについての処理が終了した旨の通知が送られると、第１０１ブロックの処理をマスターノード２０に依頼することになる。
【００５９】
また、第二の依頼方法では、大規模演算を構成する６００個のジョブグループのうち、図４のリスト上で最上位から３００番目までに記述されている３００個のジョブグループを第１ブロックとし、そのリスト上で３０１番目から６００番目までに記述されている３００個のジョブグループを第２ブロックとする。そして、管理手段１５ｄは、最初に第１ブロックである３００個のジョブグループの処理をマスターノード２０に依頼し、その依頼したすべてのジョブグループの処理が終了した後に、第２ブロックである３００個のジョブグループの処理をマスターノード２０に依頼する。
【００６０】
第一の依頼方法を用いると、マスターノード２０は各ジョブグループを各ノード３０ａ，３０ｂ，３０ｃ，３０ｄに効率よく割り振ることができるので、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄにおいて長い処理待ちの時間が発生してしまうのを防止し、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄの処理効率の向上を図ることができる。一方、第二の依頼方法を用いた場合も、同様に、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄの処理効率の向上を図ることができる。但し、第二の依頼方法では、第１ブロックの処理が終了してから第２ブロックの処理が実際に開始されるまでに、各ノード３０ａ，３０ｂ，３０ｃ，３０ｄにおいて若干の処理待ち時間が発生する可能性があるので、この点を考慮すると、第一の依頼方法は第二の依頼方法に比べて各ノードの処理効率が優れていると思われる。
【００６１】
このように、本実施形態では、管理手段１５ｄは、大規模演算を構成する６００個のジョブグループをいくつかのブロックに区分し、マスターノード２０が常に３００個以下のジョブグループに対して割り振り処理を行うことになるようにそのブロック単位でジョブグループの処理をマスターノード２０に依頼する。このため、仮想的にみれば、マスターノード２０は、従来に比べて最大３００個という比較的小規模なジョブグループについてノードへの割り振り処理を行うことになるので、マスターノード２０の負荷が増加することを防止することができる。すなわち、本実施形態では、クライアント１０（管理手段１５ｄ）がマスターノード２０の負荷制御機能として働くことになり、これにより、マスターノード２０及びクライアント１０は全体的に高負荷状態から解放される。
【００６２】
また、管理手段１５ｄは、リスト生成手段１５ｃによって生成されたリストを利用して、各ジョブグループの処理の依頼状況を管理する。すなわち、管理手段１５ｄは、ジョブグループの処理をマスターノード２０に依頼すると、図４のリストにおいて、その依頼したジョブグループに対する依頼済欄に依頼済フラグ“１”を付ける。また、管理手段１５ｄは、その依頼したジョブグループの処理が終了したかどうかの問い合わせを一定期間毎に或いは、必要に応じて任意のタイミングでマスターノード２０に対して行うが、マスターノード２０から当該ジョブグループの処理が終了した旨の通知が送られると、図４のリストにおいて、その通知を受けたジョブグループに対する受信済欄に受信済フラグ“１”を付ける。このため、管理手段１５ｄは、リスト上で各ジョブグループについて依頼済フラグ“１”が付けられているかどうかを判断することにより、当該ジョブグループの処理をマスターノード２０に依頼したかどうかを認識することができると共に、リスト上で各ジョブグループについて受信済フラグ“１”が付けられているかどうかを判断することにより、当該ジョブグループの処理が終了したかどうかを認識することができる。
【００６３】
次に、本実施形態の情報処理システムにおいて大規模演算を処理する手順を説明する。
【００６４】
最初に、クライアント１０が第一の依頼方法により処理を行う場合に、本実施形態の情報処理システムにおいて大規模演算を処理する手順を説明する。図５はクライアント１０が第一の依頼方法により行う処理の手順を説明するためのフローチャートである。
【００６５】
まず、例えば、ネットワークを介してクライアント１０に大規模演算のデータが送信される。ここでは、かかる大規模演算が図３に示すような１０００個のジョブから構成されているものとする。クライアント１０は、かかる大規模演算のデータを受信すると、その大規模演算を構成する１０００個のジョブについて、互いに依存性のあるジョブを一つのジョブグループとしてまとめるグループ化処理を行う（Ｓ１１）。ここでは、クライアント１０がグループ化処理を行うことにより、図１に示すように６００個のジョブグループが得られたものとする。
【００６６】
次に、クライアント１０は、各ジョブグループについて、その処理の負荷を見積もる（Ｓ１２）。例えば、かかる負荷の見積もりは、当該ジョブグループを構成する各ジョブについての変数の組の数の和に基づいて行われる。この場合、クライアント１０は、変数の組の数の和が多いほどそのジョブグループの処理の負荷が大きいと判定する。
【００６７】
次に、クライアント１０は、ステップＳ１２の処理で得られた各ジョブグループの処理の負荷に基づいて、６００個のジョブグループをその負荷の重い順にソートして得られるジョブグループのリストを生成する（Ｓ１３）。ここでは、図４に示すようなリストが生成されたものとする。
【００６８】
次に、クライアント１０は、６００個のジョブグループを３０１個のブロックに区分する。具体的には、図４のリスト上で最上位から３００番目までに記述されているＩＤ番号“００１”からＩＤ番号“３００”までの３００個のジョブグループを第１ブロックとし、その他のジョブグループをそれぞれ、図４のリスト上で上位にあるものから順に、第２ブロック、第３ブロック、・・・、第３０１ブロックとする。ここで、第１ブロックには３００個のジョブグループが含まれ、第ｎブロック（ｎ＝２，３，・・・，３０１）には１個のジョブグループだけが含まれる。こうして、合計３０１個のブロックが得られる。その後、クライアント１０は、最初に第１ブロックである３００個のジョブグループの処理をマスターノード２０に依頼する（Ｓ１４）。そして、クライアント１０は、ジョブグループの処理をマスターノード２０に依頼したときに、リスト上で、その依頼したジョブグループに対する依頼済欄に依頼済フラグ“１”を付ける。
【００６９】
こうしてクライアント１０から３００個のジョブグループの処理が依頼されると、マスターノード２０は、これらのジョブグループの処理を各ノード３０ａ，３０ｂ，３０ｃ，３０ｄに割り振る。各ノード３０ａ，３０ｂ，３０ｃ，３０ｄは自己に割り振られたジョブグループの処理を実行する。各ノード３０ａ，３０ｂ，３０ｃ，３０ｄは当該ジョブグループの処理が終了すると、その旨の報告と共に処理結果をマスターノード２０に送信する。
【００７０】
一方、クライアント１０は、ジョブグループの処理をマスターノード２０に依頼したときには、その依頼したジョブグループの処理が終了したかどうかの問い合わせを一定期間毎に或いは、必要に応じて任意のタイミングでマスターノード２０に対して行う。マスターノード２０は、この問い合わせを受けたときに、処理が終了しているジョブグループがあれば、当該ジョブグループの処理が終了した旨の通知とその処理結果とをクライアント１０に送信する。そして、クライアント１０は、当該ジョブグループの処理が終了した旨の通知を受信すると、リスト上で、当該ジョブグループに対する受信済欄に受信済フラグ“１”を付ける（Ｓ１５）。
【００７１】
ステップＳ１５の処理の後、クライアント１０は、リスト上で依頼済フラグ“１”の付けられていないジョブグループがあるかどうかを判断する（Ｓ１６）。まだ依頼済フラグ“１”の付けられていないジョブグループがあれば、クライアント１０は、現時点ですでに依頼されているジョブグループを除いて図４のリスト上で最も上位に記述されているジョブグループの処理をマスターノード２０に依頼する（Ｓ１７）。また、クライアント１０は、リスト上で、その依頼したジョブグループに対する依頼済欄に依頼済フラグ“１”を付ける。その後はステップＳ１５に移行する。ステップＳ１５、Ｓ１６及びＳ１７の処理は、ステップＳ１６においてクライアント１０が依頼済フラグ“１”の付けられていないジョブグループがあると判断する限り、繰り返し行われる。ここで、依頼済フラグ“１”の付けられていないジョブグループがある限りは、マスターノード２０に処理が依頼されているジョブグループの数は常に３００個である。すなわち、依頼済フラグ“１”の付けられていないジョブグループがある限り、マスターノード２０は、常に３００個のジョブグループについて各ノード３０ａ，３０ｂ，３０ｃ，３０ｄへの割り振り処理を行うことになる。
【００７２】
かかるステップＳ１５、Ｓ１６及びＳ１７の処理が３００回繰り返し行われた後に、クライアント１０があるジョブグループの処理が終了した旨の通知を受信すると（Ｓ１５）、クライアント１０は、リスト上で依頼済フラグ“１”の付けられていないジョブグループがないと判断することになる（Ｓ１６）。すなわち、この時点で、６００個のジョブグループすべての処理がマスターノード２０に依頼されたことになる。次に、クライアント１０は、リスト上で受信済フラグ“１”の付けられていないジョブグループがあるかどうかを判断する（Ｓ１８）。まだ受信済フラグ“１”の付けられていないジョブグループがあれば、ステップＳ１９に移行する。このステップＳ１９では、クライアント１０は、あるジョブグループの処理が終了した旨の通知を受信したときに、リスト上で当該ジョブグループに対する受信済欄に受信済フラグ“１”を付ける。その後はステップＳ１８に移行する。ステップＳ１８及びＳ１９の処理は、ステップＳ１８においてクライアント１０が受信済フラグ“１”の付けられていないジョブグループがあると判断する限り、繰り返し行われる。このとき、ステップＳ１９の処理が一回行われる度に、マスターノード２０に処理が依頼されているジョブグループの数は、一つずつ減ることになる。したがって、リスト上ですべてのジョブグループに対して依頼済フラグ“１”が付けられた後は、マスターノード２０は、常に３００個以下のジョブグループについて各ノード３０ａ，３０ｂ，３０ｃ，３０ｄへの割り振り処理を行うことになる。
【００７３】
ステップＳ１８及びステップＳ１９の処理が３００回繰り返し行われた後には、クライアント１０は、リスト上で受信済フラグ“１”の付けられていないジョブグループがないと判断することになる（Ｓ１８）。すると、クライアント１０は、大規模演算の処理が終了したことを認識し、処理結果の統合を行う（Ｓ２０）。以上で、図５に示すクライアント１０の処理フローが終了する。
【００７４】
次に、クライアント１０が第二の依頼方法により処理を行う場合に、本実施形態の情報処理システムにおいて大規模演算を処理する手順を説明する。図６はクライアント１０が第二の依頼方法により行う処理の手順を説明するためのフローチャートである。
【００７５】
図６の処理フローにおけるステップＳ５１、ステップＳ５２、ステップＳ５３の各処理の内容はそれぞれ、図５の処理フローにおけるステップＳ１１、ステップＳ１２、ステップＳ１３の各処理の内容と同じである。このため、ここでは、これらの説明を省略する。
【００７６】
ステップＳ５３の処理の後、クライアント１０は、６００個のジョブグループを、二つのブロックに区分する（Ｓ５４）。具体的には、図４のリスト上で最上位から３００番目までに記述されている３００個のジョブグループを第１ブロックとし、そのリスト上で３０１番目から６００番目までに記述されている３００個のジョブグループを第２ブロックとする。
【００７７】
次に、クライアント１０は、一つのブロックの処理をマスターノード２０に依頼する（Ｓ５５）。ここでは、マスターノードに依頼するブロックの順番を、最初に第１ブロック、次に第２ブロックとする。したがって、この場合には、まず、第１ブロックである３００個のジョブグループの処理がマスターノード２０に依頼されることになる。また、クライアント１０は、ジョブグループの処理をマスターノード２０に依頼したときに、リスト上で、その依頼したジョブグループに対する依頼済欄に依頼済フラグ“１”を付ける。
【００７８】
その後、クライアント１０は、その依頼したジョブグループの処理が終了したかどうかの問い合わせを一定期間毎に或いは、必要に応じて任意のタイミングでマスターノード２０に対して行う。そして、クライアント１０は、その問い合わせに対してあるジョブグループの処理が終了した旨の通知をマスターノード２０から受け取ると、リスト上で当該ジョブグループに対する受信済欄に受信済フラグ“１”を付ける（Ｓ５６）。
【００７９】
次に、クライアント１０は、リスト上で依頼済フラグ“１”の付けられているジョブグループのうち、受信済フラグ“１”の付けられていないジョブグループがあるかどうかを判断する（Ｓ５７）。まだ受信済フラグ“１”の付けられていないジョブグループがあれば、ステップＳ５６に移行する。ステップＳ５６及びステップＳ５７の処理は、今回依頼した３００個のジョブグループの処理がすべて終了していないと判断される限り、繰り返し行われる。
【００８０】
かかるステップＳ５６及びステップＳ５７の処理が２９９回繰り返し行われた後に、クライアント１０がジョブグループの処理が終了した旨の通知を受信すると（Ｓ５６）、クライアント１０は、リスト上で依頼済フラグ“１”の付けられているジョブグループのすべてについて、受信済フラグ“１”が付けられていると判断することになる（Ｓ５７）。すなわち、この時点で、第１ブロックである３００個のジョブグループすべての処理が終了したことになる。次に、クライアント１０は、まだマスターノード２０に処理を依頼していないブロックがあるかどうかをリスト上の依頼済フラグ“１”に基づいて判断する（Ｓ５８）。この場合には、第２ブロックに含まれるジョブグループについてはまだマスターノード２０に処理を依頼しておらず依頼済フラグ“１”が付けられていないので、このステップＳ５８の判断は肯定的となる。ステップＳ５８の判断が肯定的であれば、ステップＳ５５に移行する。このステップＳ５５においては、第２ブロックである３００個のジョブグループの処理がマスターノード２０に依頼されることになる。
【００８１】
こうして、第２ブロックである３００個のジョブグループの処理がすべて終了し（Ｓ５７）、マスターノード２０に処理を依頼していないブロックがなくなると（Ｓ５８）、クライアント１０は、大規模演算の処理が終了したことを認識し、処理結果の統合を行う（Ｓ５９）。以上で、図６に示すクライアント１０の処理フローが終了する。
【００８２】
本実施形態の情報処理システムでは、クライアントは、大規模演算を構成する複数のジョブをいくつかのジョブグループにまとめた後、それらのジョブグループを更にブロックに区分すると共に、マスターノードが常に所定数以下のジョブグループに対して割り振り処理を行うことになるようにブロック単位でジョブグループの処理をマスターノードに依頼する。これにより、クライアントは、従来のようにすべてのジョブの処理を一括してマスターノードに依頼するのではなく、複数のジョブグループの処理を、ブロック単位で少しずつマスターノードに依頼することができる。このようなクライアントはマスターノードの負荷を制御する機能を有していると考えることができる。このため、マスターノードは常に上記の所定数のジョブグループに含まれるジョブ数のジョブだけを各ノードに割り振るという処理を行えばよいことになるので、マスターノードの負荷が増加するのを防止することができる。しかも、このようにマスターノードの負荷を軽減することができるので、マスターノードは、ジョブグループの各ノードへの割り振り処理だけでなく、クライアントからの演算結果監視の要求に応じる処理をも効率よく行うことができる。更に、クライアントにとっても、マスターノードに依頼するジョブの数が少なくなるので、演算結果監視の処理に対する負荷が軽減する。
【００８３】
尚、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内において種々の変形が可能である。
【００８４】
上記の実施形態では、マスターノードから各ノードへの指示において処理結果の格納先としてマスターノードを指定しており、各ノードがジョブグループの処理結果をマスターノードに送信し、マスターノードがその処理結果をクライアントに送信する場合について説明したが、例えば、マスターノードから各ノードへの指示において処理結果の格納先として所定のデータベースを指定するようにしてもよい。この場合、各ノードは、ジョブグループの演算処理を終了すると、当該ジョブグループの処理が終了したことをマスターノードに報告すると共にその処理結果を当該指定されたデータベースに格納することになる。そして、クライアントは、マスターノードからジョブグループの処理終了の通知を受け取ったときに、そのデータベースにアクセスして、当該ジョブグループの処理結果を取得することになる。
【００８５】
また、上記の実施形態では、クライアントは、各ジョブグループの処理の負荷を見積もり、その見積もって得られた結果にしたがって負荷の重いジョブグループから負荷の軽いジョブグループの順に各ジョブグループの処理をマスターノードに依頼する場合について説明したが、クライアントは、必ずしもジョブグループの処理の負荷を見積もり、その負荷の重いジョブグループの順に各ジョブグループをマスターノードに依頼する必要はない。すなわち、クライアントは、各ジョブグループを任意の順番でマスターノードに依頼するようにしてもよい。
【００８６】
更に、上記の実施形態では、クライアントは、互いに依存性のあるジョブを一つのグループとしてまとめるグループ化処理を行う場合について説明したが、例えば、ジョブとして互いに依存性のないものが用いられているのであれば、クライアントは、必ずしもジョブのグループ化処理を行う必要はない。また、演算の基本単位であって他の演算結果に依存しないものを「ジョブ」と定義するようにしてもよい。これらの場合には、当然に、ジョブとジョブグループとを同一視することができる。尚、ジョブとして互いに依存性のないものが用いられている場合には、グループ化ルール情報として、一つのジョブグループに含めることができるジョブの上限数についての情報を用い、グループ化処理手段が、その上限数についての情報に基づいて、複数のジョブをいくつかのジョブグループに区分するようにしてもよい。
【００８７】
また、上記の実施形態では、一つのクライアントから一つのマスターノードにジョブ（又はジョブグループ）の依頼が行われる場合について説明したが、例えば、複数のクライアントから一つのマスターノードにジョブ（又はジョブグループ）の依頼が同時に行われる場合も考えられる。この場合には、複数のクライアントに、ブロック単位でジョブ（又はジョブグループ）の依頼を行うという本発明の特徴的な機能の他に、それらのクライアントの間で連携をとる機能を持たせることが望ましい。これにより、各クライアントは、互いに連携を取って、マスターノードに依頼されるジョブ（又はジョブグループ）の合計数が常に所定数以下となるように調整することができる。このような連携機能を実現する方法としては、各クライアントが互いに通信を行い、マスターノードに現在依頼しているジョブ（又はジョブグループ）の数についての情報を相互に通知するという方法を用いることができる。また、別の方法として、マスターノードに、或いはクライアントでもマスターノードでもない他のマシンに、マスターノードに現在依頼しているジョブ（又はジョブグループ）の数を管理するジョブ数管理手段を設けるという方法を用いることができる。具体的に、このジョブ数管理手段は、マスターノードが依頼を受け付けることができるジョブ（又はジョブグループ）の上限数についての情報を有している。各クライアントは、マスターノードにジョブ（又はジョブグループ）の処理を依頼する際に、ジョブ数管理手段に対してその依頼するジョブ（又はジョブグループ）の数についての情報を送信する。ジョブ数管理手段は、各クライアントからジョブ（又はジョブグループ）の数についての情報が送られたときに、かかるジョブ（又はジョブグループ）の依頼を受け付けたならば、マスターノードに依頼されているジョブ（又はジョブグループ）の合計数が上記上限数を超えるかどうかを判断する。そして、ジョブ数管理手段は、その合計数が上記上限数を超えないと判断すると、当該クライアントにジョブ（又はジョブグループ）の依頼を許容する旨の指示を送信し、一方、その合計数が上記上限数を超えると判断すると、当該クライアントに対してジョブ（又はジョブグループ）の依頼を待機又は中止すべき旨の命令を送信する。このため、複数のクライアントから一つのマスターノードにジョブの依頼が行われる場合にも、マスターノードの処理の負荷を軽減することができる。
【００８８】
また、逆に、一つのクライアントから複数のマスターノードにジョブ（又はジョブグループ）の依頼が行われる場合にも本発明を適用することができる。このようなジョブ（又はジョブグループ）の依頼形態は、クライアントから依頼するジョブ（又はジョブグループ）の数が膨大である場合や、ジョブ（又はジョブグループ）の負荷が非常に高い場合に用いるのに好適である。この場合の処理手順は上記の実施形態とほぼ同様である。但し、複数のマスターノードのロードバランサ機能がそれぞれ異なるベンダー製品で構成されているなど、統一がとられていないようなケースもあり得る。このような場合には、クライアントからマスターノードへのジョブ（又はジョブグループ）の受け渡し処理、ノードでのジョブの処理結果を統合する処理等に関して調整を行うことが必要となることも考えられる。例えば、ジョブの演算内容や変数、ノードでのジョブの処理結果等をクライアント、マスターノード、ノードの間で直接的に送受信するのではなく、共通の外部データベースを経由してそれらの間で受け渡し、最終的にクライアントが当該処理結果を外部データベースから収集して統合する処理を行うようにすればよい。尚、上述したことから分かるように、複数のクライアントから複数のマスターノードにジョブ（又はジョブグループ）の依頼が行われる場合にも本発明を適用することが可能である。
【００８９】
更に、上記の実施形態では、クライアントが、大規模演算を構成する複数のジョブ（又はジョブグループ）をいくつかのブロックに区分し、マスターノードが常に所定数以下のジョブ（又はジョブグループ）に対して割り振り処理を行うことになるようにブロック単位でジョブ（又はジョブグループ）の処理をマスターノードに依頼する場合について説明したが、例えば、クライアントは従来と同様にすべてのジョブ（又はジョブグループ）の処理を一括してマスターノードに依頼し、マスターノードがその依頼された複数のジョブ（又はジョブグループ）をいくつかのブロックに区分し、そのブロック単位でジョブ（又はジョブグループ）の割り振り処理を行うようにしてもよい。すなわち、本発明の特徴的な機能を、クライアントではなくマスターノードに設けるようにしてもよい。これにより、マスターノードは、例えばクライアントから１０００個のジョブを依頼されたとしても、各ノードへの割り振り処理の対象を常に所定数（例えば３００）以下のジョブだけに制限することができるので、マスターノードの処理の負荷を十分に軽減することができる。つまり、従来の情報処理システムでは、例えば１０００個のジョブの処理がマスターノードに依頼された場合、マスターノードは、１０００個のジョブのすべてをロードバランサ機能の対象として常に管理しなければならなかったが、本発明の情報処理システムでは、マスターノードが常に管理しなければならないジョブを例えば３００個に抑えることができる。但し、この場合には、クライアントは従来と同様にすべてのジョブの処理を一括してマスターノードに依頼することになるので、クライアントには無駄な処理待ちが発生し、上記の実施形態に比べてクライアントの処理効率が若干劣ってしまう可能性がある。しかしながら、情報処理システム全体としては処理の負荷を軽減することができる。
【００９０】
加えて、上記の実施形態では、クライアントとマスターノードとをそれぞれワークステーション等で実現する場合について説明したが、例えば、クライアントとマスターノードとを一つのワークステーション等で実現するようにしてもよい。すなわち、一つのワークステーションに、クライアント及びマスターノードの機能を実現するためのソフトウェアを組み込むようにしてもよいし、さらには当該ワークステーションがノードの機能をも兼ね備えるようにしてもよい。尚、上記の実施形態では、あるワークステーションが固定的にクライアントやマスターノードである場合や、あるワークステーションがクライアント及びマスターノードの機能を兼用している場合について説明したが、本発明はこれに限定されるものではない。つまり、複数のワークステーションに、クライアント、マスターノード及びノードの各機能として動作するためのソフトウェアをインストールしておけば、これらの各ワークステーションがある時はクライアントとして動作し、ある時はマスターノードやノードとして動作するような流動的な運用も可能である。
【００９１】
本発明の目的は、上述した実施形態の装置の機能を実現するソフトウェアのプログラムコード（実行形式を含む）を、その全体あるいは一部を記録した記録媒体により、本実施形態の装置に供給し、その装置のコンピュータ（又はＣＰＵ、ＭＰＵ）が記録媒体に格納されたプログラムコードを読み出して、動作の全部あるいは一部を実行することによっても達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が本実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００９２】
プログラムコードを供給するための記録媒体としては、ＲＯＭ、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード等を用いることができる。さらに、通信回線を介してダウンロードすることによってプログラムコードを供給するようにしてもよいし、ＪＡＶＡ（登録商標）などの技術を利用してプログラムコードを供給して実行するようにしてもよい。
【００９３】
また、コンピュータが読み出したプログラムコードを実行することにより、本実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部又は全部を行い、その処理によって本実施形態の機能が実現される場合も本発明に含まれることは言うまでもない。
【００９４】
更に、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータが接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって本実施形態の機能が実現される場合も本発明に含まれることは言うまでもない。
【００９５】
加えて、本発明はコンピュータに上記の実施形態の装置の機能を実現させるためのプログラムを含むプログラム・プロダクトであってもよい。ここで、プログラム・プロダクトというのは、コンピュータ・プログラムだけでなく、プログラムを記録した記録媒体あるいはコンピュータを含むものである。
【産業上の利用可能性】
【００９６】
以上説明したように、本発明の情報処理システムでは、クライアントは、大規模演算を構成する複数のジョブをいくつかのブロックに区分し、マスターノードが常に所定数以下のジョブに対して割り振り処理を行うことになるようにブロック単位でジョブの処理をマスターノードに依頼する。これにより、クライアントは、従来のようにすべてのジョブの処理を一括してマスターノードに依頼するのではなく、複数のジョブを、小規模のジョブを含むいくつかのブロックに区分し、そのブロック単位で少しずつマスターノードに依頼することができる。このようなクライアントはマスターノードの負荷を制御する機能を有していると考えることができる。このため、マスターノードは常に上記の所定数以下のジョブについてのみ各ノードへの割り振り処理を行えばよいことになるので、マスターノードの負荷が増加するのを防止することができる。しかも、このようにマスターノードの負荷を軽減することができるので、マスターノードは、ジョブの各ノードへの割り振り処理だけでなく、クライアントからの演算結果監視の要求に応じる処理をも効率よく行うことができる。更に、クライアントにとっても、マスターノードに依頼するジョブの数が少なくなるので、演算結果監視の処理に対する負荷が軽減する。したがって、本発明は、複数のジョブから構成される大規模演算の処理をネットワーク接続された複数のコンピュータで分かち合って実行する情報処理システムに適用することができる。
【符号の説明】
【００９７】
１０  クライアント
１１  入力装置
１２  表示装置
１３  通信部
１４  記憶部
１５  制御部
１５ａ  グループ化処理手段
１５ｂ  負荷見積手段
１５ｃ  リスト生成手段
１５ｄ  管理手段
２０  マスターノード
３０ａ，３０ｂ，３０ｃ，３０ｄ  ノード
【図１】
2010287255.tif 000003
【図２】
2010287255.tif 000004
【図３】
2010287255.tif 000005
【図４】
2010287255.tif 000006
【図５】
2010287255.tif 000007
【図６】
2010287255.tif 000008
【図７】
2010287255.tif 000009