(57)【特許請求の範囲】
【請求項１】
通信可能なワーカ計算機に処理群を割り当てるマスタ計算機を、
前記ワーカ計算機に先に送信された処理群の実行時間と、当該先に送信された処理群を前記ワーカ計算機が受信してから実行を開始するまでの待機時間とを前記ワーカ計算機から受信する受信手段、
前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得する取得手段、
前記受信手段によって受信された前記実行時間および前記待機時間と、前記取得手段によって取得された前記経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出する第１の算出手段、
前記実行時間と前記先に送信された処理群の処理数とに基づいて、前記ワーカ計算機の処理性能値を算出する第２の算出手段、
前記第１の算出手段によって算出された前記通信時間と、前記第２の算出手段によって算出された前記処理性能値とに基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出する第３の算出手段、
前記第３の算出手段によって算出された前記処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成する生成手段、
前記生成手段によって生成された前記処理群を前記ワーカ計算機に送信する送信手段、
として機能させることを特徴とする分散処理プログラム。
【請求項２】
前記第３の算出手段は、
前記通信時間と前記処理性能値とに基づいて、前記通信時間が、前記ワーカ計算機における処理群の実行時間以下となる当該処理群の処理数を算出することを特徴とする請求項１に記載の分散処理プログラム。
【請求項３】
前記受信手段は、
前記ワーカ計算機に第１の処理群および第２の処理群がそれぞれ送信された結果、前記第１の処理群および前記第２の処理群のうちの先に送信された処理群の実行が完了した場合に、前記先に送信された処理群の実行時間と、前記先に送信された処理群を前記ワーカ計算機が受信してから実行を開始するまでの待機時間とを前記ワーカ計算機から受信することを特徴とする請求項１または２に記載の分散処理プログラム。
【請求項４】
通信可能なワーカ計算機に処理群を割り当てる分散処理装置であって、
前記ワーカ計算機に先に送信された処理群の実行時間と、当該先に送信された処理群を前記ワーカ計算機が受信してから実行を開始するまでの待機時間とを前記ワーカ計算機から受信する受信手段と、
前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得する取得手段と、
前記受信手段によって受信された前記実行時間および前記待機時間と、前記取得手段によって取得された前記経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出する第１の算出手段と、
前記実行時間と前記先に送信された処理群の処理数とに基づいて、前記ワーカ計算機の処理性能値を算出する第２の算出手段と、
前記第１の算出手段によって算出された前記通信時間と、前記第２の算出手段によって算出された前記処理性能値とに基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出する第３の算出手段と、
前記第３の算出手段によって算出された前記処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成する生成手段と、
前記生成手段によって生成された前記処理群を前記ワーカ計算機に送信する送信手段と、
を備えることを特徴とする分散処理装置。
【請求項５】
通信可能なワーカ計算機に処理群を割り当てる分散処理方法であって、
前記ワーカ計算機に先に送信された処理群の実行時間と、当該先に送信された処理群を前記ワーカ計算機が受信してから実行を開始するまでの待機時間とを前記ワーカ計算機から受信する受信工程と、
前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得する取得工程と、
前記受信工程によって受信された前記実行時間および前記待機時間と、前記取得工程によって取得された前記経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出する第１の算出工程と、
前記実行時間と前記先に送信された処理群の処理数とに基づいて、前記ワーカ計算機の処理性能値を算出する第２の算出工程と、
前記第１の算出工程によって算出された前記通信時間と、前記第２の算出工程によって算出された前記処理性能値とに基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出する第３の算出工程と、
前記第３の算出工程によって算出された前記処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成する生成工程と、
前記生成工程によって生成された前記処理群を前記ワーカ計算機に送信する送信工程と、
を含んだことを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マスタ計算機（以下、単に「マスタ」という）が複数のワーカ計算機（以下、単に「ワーカ」という）に一連の処理群を分散処理させる分散処理プログラム、分散処理装置、および分散処理方法に関する。
【背景技術】
【０００２】
従来、ネットワークを介して通信可能なマスタ／ワーカ間でやり取りされる処理の流れでは、まず、マスタが処理（その実行に必要なデータを含む）をワーカに投入する。つぎに、投入されたワーカは、処理を実行する。そして、そのワーカは、処理の実行結果をマスタに返す。マスタは、これらを複数のワーカに対しておこなうことにより、処理全体をワーカに分散処理させている。
【０００３】
また、下記特許文献１には、オンライン分散システムにおいて、同じ処理プロセスで処理する１つ以上のトランザクションをまとめて処理要求する技術が記載されている。具体的には、トランザクションデータを処理するための処理プロセスを決定し、処理プロセスにトランザクションデータを引き渡すオンラインコントロール処理において、処理待ち状態にあるトランザクションから同じ処理プロセスで処理する１つ以上のトランザクションをまとめて１回の処理要求で処理プロセスにデータを引き渡す。
【０００４】
また、下記特許文献２には、複数のタスクから構成されるタスクグループ単位で処理の割り当てをおこなう技術が記載されている。具体的には、まず、上位管理装置から下位管理装置にタスクグループの処理を割り当てる。つぎに、下位管理装置からタスク実行装置にタスクグループに含まれるタスクを割り当て、タスク実行装置によりタスクを実行し、その実行結果を下位管理装置に送信する。そして、下位管理装置により、タスクの実行結果を収集し、その収集結果を上位管理装置に送信する。最後に、上位管理装置により、収集結果を集約して出力する。
【０００５】
【特許文献１】特開平９−７３４３２号公報
【特許文献２】特開２００４−１１０３１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１に記載の従来技術は、いくつのトランザクションをまとめて処理プロセスに引き渡すのかが、分散処理の効率性に大きな影響を与えるにもかかわらず、そのまとめ数については何ら言及されていない。
【０００７】
例えば、トランザクションのまとめ数を多くすれば、処理要求の転送回数を削減することはできるが、その実行結果を得るまでの応答時間は増加する一方である。また、トランザクションを過剰にまとめてしまうと、利用可能なワーカ数が増加したときに、トランザクションを各ワーカに均等に割り当てることができない場合がある。
【０００８】
さらに、利用可能なワーカ数が少ない場合には、キューにあるトランザクションの数が少なくなったときに、全トランザクションを１台のワーカで処理することとなる可能性がある。このように、不適切にトランザクションをまとめてしまうと、利用可能なワーカを十分に活用することができず、ひいては分散処理にかかる所要時間の長期化を招くという問題がある。
【０００９】
上述した特許文献２に記載の従来技術に関しても、タスクグループを構成するタスクの数（まとめ数）については何ら言及されておらず、特許文献１に記載の従来技術と同様に、利用可能なワーカを十分に活用することができず、ひいては分散処理にかかる所要時間の長期化を招くという問題がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するため、実行時間の短い処理を適切にまとめた処理群を割り当てることにより、マスタ／ワーカ間の通信トラフィックの低減化および分散処理の効率化を図ることができる分散処理プログラム、分散処理装置、および分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、この分散処理プログラム、分散処理装置、および分散処理方法は、一連の処理群のうち、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報をワーカ計算機から受信し、前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得し、受信された情報と取得された経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出し、算出された通信時間に基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出し、算出された処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成し、生成された処理群を前記ワーカ計算機に送信することを要件とする。
【００１２】
この分散処理プログラム、分散処理装置、および分散処理方法によれば、実行時間の短い処理をマスタ／ワーカ間の通信時間に応じた適切な処理数でまとめた処理群を、ワーカに割り当てることができる。
【００１３】
また、この分散処理プログラム、分散処理装置、および分散処理方法において、さらに、前記ワーカ計算機のスループット値から処理性能値を算出し、算出された通信時間および処理性能値に基づいて、前記ワーカ計算機に割り当てる前記処理の処理数を算出する。
【００１４】
この分散処理プログラム、分散処理装置、および分散処理方法によれば、実行時間の短い処理を動的に変化するワーカの処理性能に応じた適切な処理数でまとめた処理群を、ワーカに割り当てることができる。
【００１５】
また、この分散処理プログラム、分散処理装置、および分散処理方法において、前記ワーカ計算機に割り当て済みの２つの処理群のうち、先に送信された処理群の実行が完了した場合に、受信処理、第１の算出処理、第２の算出処理、生成処理および送信処理を再度実行する。
【００１６】
この分散処理プログラム、分散処理装置、および分散処理方法によれば、前々回に割り当てた処理群の実行が完了した場合に、つぎの処理群を割り当てることで、前回に割り当てた処理群の実行中に、つぎの処理群の受け渡しをおこなうことができる。
【００１７】
また、この分散処理プログラム、分散処理装置、および分散処理方法において、前記通信時間が、前記ワーカ計算機における処理群の実行時間以下となる処理数を算出する。
【００１８】
この分散処理プログラム、分散処理装置、および分散処理方法によれば、実行時間が通信時間よりも長くなると予測される処理群を割り当てることで、マスタ／ワーカ間の通信オーバーヘッドを適切に削減することができる。
【発明の効果】
【００１９】
この分散処理プログラム、分散処理装置、および分散処理方法によれば、実行時間の短い処理を適切にまとめた処理群を割り当てることにより、マスタ／ワーカ間の通信トラフィックの低減化および分散処理の効率化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この分散処理プログラム、分散処理装置、および分散処理方法の好適な実施の形態を詳細に説明する。なお、本明細書において、分散処理装置とは、マスタまたはワーカであり、分散処理プログラムとは、分散処理装置にインストールされたプログラムである。
【００２１】
（システムのシステム構成）
まず、本実施の形態にかかるシステム１００のシステム構成について説明する。図１は、システムのシステム構成図である。図１において、システム１００は、インターネット、ＬＡＮ、ＷＡＮなどのネットワーク１１０を介して通信可能なマスタＭとワーカＷ１〜Ｗｍ群とから構成される。
【００２２】
システム１００には、本実施の形態で説明するマスタＭとワーカＷ１〜Ｗｍとからなる分散処理システムの他に、例えば、複数のデータベースサーバを仮想的に１台の統合データベースサーバとしてみなす検索システムや、ポータルサーバと複数のアプリケーションサーバとからなるＷｅｂサービスシステムなどを適用することができる。
【００２３】
各ワーカＷ１〜Ｗｍは、異なる処理能力を持つこととしてもよく、また、ＯＳやハードウェア・アーキテクチャなど異なる構造を持つこととしてもよい。さらに、ネットワーク１１０の通信品質は、一定または画一的である必要もない。
【００２４】
このシステム１００では、マスタＭが実行時間の短い処理をまとめた処理群を生成し、生成された一連の処理群を適切なワーカＷ１〜Ｗｍに投入する。そして、ワーカＷ１〜Ｗｍが投入された処理群を実行し、その実行結果をマスタＭに返す。このとき、処理の実行結果は、処理単位で返すのではなく、処理群単位で返す。
【００２５】
ここでは、処理群を構成する各処理の実行時間は一様であることとする。つまり、各処理の粒度（処理量）は揃っている、あるいは、無視できる程度のばらつきである。また、各処理の実行時間は、マスタ／ワーカ間の通信時間（転送時間）よりも短い時間とする。
【００２６】
処理の具体例としては、例えば、金融機関などのオプション・リスク計算において、モンテカルロ法を用いて確率的にシナリオをシミュレーションする際の数万〜数千万個の処理や、統合データベースに対して発行されるデータの検索、更新、削除などの命令を表わすクエリが挙げられる。
【００２７】
このような実行時間の短い処理を大量に実行するケースでは、処理単位でマスタＭからワーカＷ１〜Ｗｍに投入すると、マスタ／ワーカ間の通信時間やワーカＷ１〜Ｗｍにおけるアイドル時間といった通信オーバーヘッドが顕在化してしまう。そこで、複数の処理をまとめた処理群を１つの処理単位とすることにより、レイテンシハイディングによる通信オーバーヘッドの隠蔽を可能とするのに十分な実行時間を確保する。
【００２８】
ここで、ワーカＷ１を例に挙げて、システム１００における処理の投入例を説明する。まず、マスタＭにおいて、入力された処理Ｔ１，Ｔ２，Ｔ３を３個にまとめた処理群ＴＧ１を生成する。つぎに、割当先に決定されたワーカＷ１に生成された処理群ＴＧ１を投入（ネットワーク１１０経由で送信）する。
【００２９】
このあと、ワーカＷ１において、マスタＭから投入された処理群ＴＧ１を実行し、処理群ＴＧ１を構成するすべての処理Ｔ１，Ｔ２，Ｔ３の実行が完了したあと、処理Ｔ１，Ｔ２，Ｔ３の処理結果Ｒ１，Ｒ２，Ｒ３をまとめた処理結果ＲＧ１をマスタＭに返す。
【００３０】
このように、複数の処理Ｔ１，Ｔ２，Ｔ３をまとめた処理群ＴＧ１を１つの処理単位として分散処理させることにより、マスタ／ワーカ間の通信回数を削減し、通信時間やアイドル時間などの通信オーバーヘッドの隠蔽を図る。実行結果は、すべての処理Ｔ１，Ｔ２，Ｔ３の実行が完了したあとに、ワーカＷ１からマスタＭに一括して返すことで、ネットワーク１１０上のトラフィックの低減化を図る。
【００３１】
また、各ワーカＷ１〜Ｗｍにおいて、マスタＭから投入された処理群の実行が完了すると、直ちにつぎの処理群の実行を開始できるように、処理群の実行処理と並列に他の処理群の受信処理をおこなう。このとき、ワーカＷ１〜Ｗｍにおける、実行中の処理群を除く実行待ちの処理群の数を「１」とする。この場合、各ワーカＷ１〜Ｗｍは、以下に説明する３つの状態間の状態遷移を繰り返すこととなる。
【００３２】
図２は、ワーカＷの状態遷移を示す説明図である。以降において、特に指定する場合を除いて「ワーカＷ１〜Ｗｍ」を単に「ワーカＷ」と表記する。図２において、状態１はマスタＭからの処理群が未割当の状態である。状態２はマスタＭから処理群が１つ割り当てられた状態である。状態３はマスタＭから処理群が２つ割り当てられた状態である。
【００３３】
状態遷移の流れは、まず、マスタＭからワーカＷに処理群が１つ割り当てられると、状態１から状態２に遷移する。さらに、状態２において、マスタＭから割り当てられた処理群の実行中に、マスタＭから新たな処理群が割り当てられると、状態２から状態３に遷移する。
【００３４】
一方、状態３において、マスタＭから割り当てられた２つ処理群のうち１つの処理群の実行が完了し、その実行結果をマスタＭに返すと、状態３から状態２に遷移する。また、状態２において、マスタＭから割り当てられた処理群の実行が完了し、その実行結果をマスタＭに返すと、状態２から状態１に遷移する。
【００３５】
ここで、一連の処理群の分散処理にかかる所要時間について具体的に説明する。図３は、分散処理にかかる所要時間を具体的に示すガントチャートである。図３中、「通信１」はマスタ／ワーカ間の処理群の受け渡しにかかる通信時間である。「処理実行」はワーカＷにおける処理群の実行にかかる実行時間である。「通信２」はマスタ／ワーカ間の実行結果の受け渡しにかかる通信時間である。
【００３６】
図３において、グラフ３１０は、１つの処理群の分散処理が完了したあとに、つぎの処理群の分散処理を開始する場合の所要時間を示している。この場合、全体の所要時間（開始時刻〜終了時刻１）は、処理群ごとの「通信１」、「処理実行」および「通信２」を直列に並べたものとなる。
【００３７】
一方、グラフ３２０は、１つの処理群の実行中に、つぎの処理群の受信を開始する場合の所要時間を示している。この場合、全体の所要時間（開始時刻〜終了時刻２）は、「処理実行」と「通信１」および「通信２」とを並列に並べた分だけ、グラフ３１０に示す所要時間（開始時刻〜終了時刻１）に比べて短縮されている。
【００３８】
このように、ワーカＷによる処理群の実行処理と並列に、マスタ／ワーカ間の通信処理を実行することで、マスタ／ワーカ間の通信時間（通信１，通信２）を、処理群の実行時間によって隠蔽し、一連の処理群の分散処理にかかる所要時間の短縮化を図る。
【００３９】
（分散処理装置のハードウェア構成）
つぎに、本実施の形態にかかる分散処理装置のハードウェア構成について説明する。図４は、分散処理装置のハードウェア構成を示すブロック図である。
【００４０】
図４において、分散処理装置は、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、ＨＤＤ（ハードディスクドライブ）４０４と、ＨＤ（ハードディスク）４０５と、ＦＤＤ（フレキシブルディスクドライブ）４０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）４０７と、ディスプレイ４０８と、Ｉ／Ｆ（インターフェース）４０９と、キーボード４１０と、マウス４１１とを備えている。また、各構成部は、バス４００によってそれぞれ接続されている。
【００４１】
ここで、ＣＰＵ４０１は、分散処理装置の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記録している。ＲＡＭ４０３は、ＣＰＵ４０１のワークウェアとして使用される。ＨＤＤ４０４は、ＣＰＵ４０１の制御にしたがってＨＤ４０５に対するデータのリード／ライトを制御する。ＨＤ４０５は、ＨＤＤ４０４の制御で書き込まれたデータを記憶する。
【００４２】
ＦＤＤ４０６は、ＣＰＵ４０１の制御にしたがってＦＤ４０７に対するデータのリード／ライトを制御する。ＦＤ４０７は、ＦＤＤ４０６の制御で書き込まれたデータを記憶したり、ＦＤ４０７に記憶されたデータを分散処理装置に読み取らせたりする。
【００４３】
また、着脱可能な記録媒体として、ＦＤ４０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリカードなどであってもよい。ディスプレイ４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ４０８には、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４４】
Ｉ／Ｆ４０９は、通信回線を通じてインターネットなどのネットワーク１１０に接続され、このネットワーク１１０を介して他の装置に接続される。そして、Ｉ／Ｆ４０９は、ネットワーク１１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４５】
キーボード４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４６】
（ワーカ管理テーブルの記憶内容）
ここで、割当先となるワーカＷのＩＰアドレスおよび使用状態を特定する場合に用いられるワーカ管理テーブルについて説明する。図５は、ワーカ管理テーブルの記憶内容を示す説明図である。ワーカ管理テーブル５００はマスタＭに備えられる。図５において、ワーカ管理テーブル５００には、マスタＭの管理下にあるワーカＷごとに、ＩＰアドレスおよび状態情報が記憶されている。
【００４７】
状態情報は、各ワーカＷの使用状態を表している。具体的には、この状態は、マスタＭからの処理投入前は「空き」となる。そして、マスタＭから処理が投入されると「空き」から「使用中」に書き換えられる。また、ワーカＷから実行結果が返ってくると「使用中」から「空き」に書き換えられる。なお、ワーカＷの機能が停止している場合は「停止中」となり、停止から復帰すると「停止中」から「空き」に書き換えられる。
【００４８】
図示は省略するが、上記「使用中」の項目を詳細化して表わすこととしてもよい。例えば、図２に示した状態２または状態３を「使用中」の付加情報として記憶することとしてもよい。ワーカ管理テーブル５００は、図４に示したＲＡＭ４０３やＨＤ４０５などの記憶部によりその機能を実現する。
【００４９】
（スループットテーブルの記憶内容）
つぎに、ワーカＷの処理性能を特定する場合に用いられるスループットテーブルについて説明する。図６は、スループットテーブルの記憶内容を示す説明図である。スループットテーブル６００はマスタＭに備えられる。図６において、スループットテーブル６００には、ワーカＷごとのスループット値が記憶されている。
【００５０】
スループット値は、各ワーカＷの処理性能を表わす指標であり、例えば、単位時間当たりに実行可能な処理数によって表現することができる。このスループット値は、例えば、各ワーカＷのＣＰＵ４０１の処理能力（例えば、クロック周波数）を基準として、使用状況など（例えば、マスタＭとは異なる他のコンピュータ装置から投入された処理を実行中）に応じて動的に変化する。
【００５１】
また、未だ処理の割当先となっていないワーカＷ（例えば、ワーカＷ２）のスループット値は未登録となっている（図５中、「−」と表記）。スループットテーブル６００は、図４に示したＲＡＭ４０３やＨＤ４０５などの記憶部によりその機能を実現する。
【００５２】
（分散処理装置の機能的構成）
つぎに、分散処理装置の機能的構成について説明する。まず、マスタＭの機能的構成について説明する。図７は、マスタＭの機能的構成を示すブロック図である。図７において、マスタＭは、受信部７０１と、取得部７０２と、第１の算出部７０３と、第２の算出部７０４と、生成部７０５と、送信部７０６と、決定部７０７と、から構成されている。
【００５３】
これら各機能７０１〜７０７は、マスタＭの記憶部に記憶された当該機能７０１〜７０７に関するプログラムをＣＰＵに実行させることにより、または、入出力Ｉ／Ｆにより、当該機能を実現することができる。また、各機能７０１〜７０７からの出力データは上記記憶部に保持される。また、図７中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶部から読み込んで、当該機能に関するプログラムをＣＰＵに実行させるものとする。
【００５４】
まず、受信部７０１は、一連の処理群のうち、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報をワーカＷから受信する機能を有する。実行時間とは、ワーカＷが処理群の実行を開始してから、その処理群を構成するすべての処理の実行が完了するまでにかかった時間である。
【００５５】
また、待機時間とは、処理群がワーカＷに到達してから実際に実行が開始されるまでの待ち時間である。すなわち、受信部７０１は、マスタＭから割当先のワーカＷに処理群が割り当てられた結果、割り当てられた処理群の実行時間および待機時間に関する情報を割当先から受信することとなる。これら実行時間と待機時間とに関する情報は、受信された都度、例えば、後述するパラメータテーブル８００に記憶される。
【００５６】
取得部７０２は、先に送信された処理群をワーカＷに送信してから、先に送信された処理群の実行結果をワーカＷから受信するまでの経過時間を取得する機能を有する。具体的には、例えば、ワーカＷに処理群を送信してから、その処理群の実行結果をワーカＷから受信するまでの時間を計測することで、経過時間を取得することとしてもよい。
【００５７】
より具体的に説明すると、例えば、割当先に処理群を送信した送信日時と、その処理群の実行結果を割当先から受信した受信日時と、から経過時間を計測することができる。また、外部のコンピュータ装置により計測された経過時間を取得することとしてもよい。この経過時間は、例えば、取得された都度、後述するパラメータテーブル８００に記憶される。
【００５８】
第１の算出部７０３は、受信部７０１によって受信された情報と取得部７０２によって取得された経過時間とに基づいて、ワーカＷとの通信にかかる通信時間を算出する機能を有する。具体的には、例えば、マスタ／ワーカ間の処理群の受け渡し、およびマスタ／ワーカ間の処理群の実行結果の受け渡しにかかる通信時間を算出する。
【００５９】
また、第１の算出部７０３は、先に送信された処理群の実行時間に関する情報を用いて、ワーカＷの処理性能を算出する機能を有する。ワーカＷの処理性能とは、例えば、図６に示したワーカＷごとのスループット値である。詳細は後述するが、これら通信時間および処理性能は、ワーカＷごとに保持されているパラメータテーブル（例えば、パラメータテーブル８００）の記憶内容を用いて算出することができる。
【００６０】
第２の算出部７０４は、第１の算出部７０３によって算出された算出結果に基づいて、ワーカＷに割り当てる処理の処理数を算出する機能を有する。具体的には、例えば、ワーカＷとの通信にかかる通信時間およびワーカＷの処理性能に基づいて処理数を算出する。なお、第２の算出部７０４は、ワーカＷとの通信にかかる通信時間またはワーカＷの処理性能のいずれか一方に基づいて、処理数を算出することとしてもよい。
【００６１】
第２の算出部７０４は、例えば、ワーカＷとの通信にかかる通信時間が、ワーカＷにおける処理群の実行時間以下となる処理数を算出する。より具体的には、例えば、処理数ｎの処理をまとめた処理群のワーカＷにおける実行時間が、マスタ／ワーカ間の通信時間と同程度（例えば、１〜２倍程度）になるような処理数ｎを算出する。
【００６２】
生成部７０５は、第２の算出部７０４によって算出された算出結果に基づいて、ワーカＷに割り当てる処理群を生成する機能を有する。具体的には、例えば、マスタＭ内のキューにある複数の処理を処理数ｎでまとめることで１つの処理群を生成する。このとき、処理数ｎ分の処理がキューにない場合は、キューにあるすべての処理をまとめた処理群を生成する。
【００６３】
各処理には、固有の処理ＩＤ（例えば、図１に示したＴ１，Ｔ２，Ｔ３）が割り付けられており、さらに、１つの処理群を構成する各処理には共通の処理群ＩＤ（例えば、ＴＧ１）が割り付けられている。このように処理ＩＤおよび処理群ＩＤを割り付けることにより、複数の処理からなる処理群を認識することができる。
【００６４】
なお、キューとは、マスタＭ内の記憶部に構築されるデータ構造であり、マスタＭに入力された処理をキューイングする機能を有する。また、分散処理対象となる処理は、マスタＭに直接入力することとしてもよく、また、ネットワーク１１０を介して外部のコンピュータ装置から取得することとしてもよい。
【００６５】
送信部７０６は、生成部７０５によって生成された処理群をワーカＷに送信する機能を有する。具体的には、例えば、ワーカ管理テーブル５００を参照して、割当先のワーカＷのＩＰアドレスを宛先に設定することで処理群をワーカＷに送信することができる。また、送信部７０６により処理群が送信されると、ワーカ管理テーブル５００の記憶内容のうち、割当先のワーカＷの状態が「使用中」に書き換えられる。
【００６６】
このように、複数の処理をまとめた処理群をワーカＷに割り当てることで、処理単位でワーカＷに割り当てる場合に比べてマスタ／ワーカ間の通信回数を削減することができる。この結果、ワーカＷとの通信にかかる通信時間やワーカＷのアイドル時間などのオーバーヘッドを削減するとともに、分散処理の効率化を図ることができる。
【００６７】
ここで、第１および第２の算出部７０３，７０４による算出処理の具体例について説明する。まず、第１および第２の算出部７０３，７０４による算出処理に用いられるパラメータテーブルについて説明する。パラメータテーブルは、例えば、ワーカＷごとに、そのワーカ名と関連付けて、マスタＭに備えられる。
【００６８】
ここでは、ワーカＷｉのパラメータテーブルを例に挙げて説明する。図８は、パラメータテーブルの記憶内容の一例を示す説明図である。図８において、パラメータテーブル８００には、処理群を構成する処理数ｎ1〜ｎpごとに、パラメータ情報８００−１〜８００−ｐが記憶されている。
【００６９】
パラメータ情報８００−１〜８００−ｐは、パラメータｔ，ｗ，δを有している。パラメータｔは、ワーカＷｉに処理群を送信してから、その処理群の実行結果をワーカＷｉから受信するまでの経過時間を表わしている。パラメータｗは、ワーカＷｉが処理群を受信してから、その処理群の実行を開始するまでの待機時間を表わしている。パラメータδは、ワーカＷｉにおける処理群の実行時間を表わしている。
【００７０】
上記パラメータｔ，ｗ，δのうち、パラメータｗ，δは、受信部７０１によって実行時間と待機時間とに関する情報が受信された都度、記憶内容が更新される。具体的には、例えば、処理数ｎ1の処理群の実行時間および待機時間に関する情報をワーカＷｉから受信すると、パラメータ情報８００−１のうち、パラメータｗ1が受信された待機時間に書き換えられ、パラメータδ1が受信された実行時間に書き換えられる。
【００７１】
また、パラメータｔは、取得部７０２によって経過時間が取得された都度、記憶内容が更新される。具体的には、例えば、処理数ｎ1の処理群の経過時間を取得すると、パラメータ情報８００−１のうち、パラメータｔ1が取得された経過時間に書き換えられる。
【００７２】
なお、受信部７０１によって受信された情報が、パラメータテーブル８００に登録されていない処理数に関するものであった場合には、新たなパラメータ情報としてパラメータテーブル８００に登録される。パラメータテーブル８００は、図４に示したＲＡＭ４０３やＨＤ４０５などの記憶部によりその機能を実現する。
【００７３】
第１の算出部７０３は、パラメータテーブル８００の記憶内容を用いて、ワーカＷｉとの通信にかかる通信時間を算出する。マスタ／ワーカ間の通信時間とは、例えば、マスタＭからワーカＷへの処理群の受け渡し、およびワーカＷからマスタＭへの実行結果の受け渡しにかかる時間である。
【００７４】
ここで、マスタ／ワーカ間の通信時間は、例えば、下記式（１）に示す１次式によって表現することができる。ただし、通信時間をＫ、ジョブ群を構成するジョブ数をｎとし、マスタ／ワーカ間の通信時間に関するパラメータをｋ，ｃとする。
【００７５】
Ｋ＝ｋ×ｎ＋ｃ                              …（１）
【００７６】
これらパラメータｋ，ｃは、例えば、パラメータテーブル８００に記憶されているパラメータｔ，ｗ，δを用いて算出することができる。具体的には、例えば、パラメータｋ，ｃは、下記式（２）を用いて求めることができる。
【００７７】
ｔ＝ｗ＋δ＋（ｋ×ｎ＋ｃ）                  …（２）
【００７８】
より詳細に説明すると、上記式（２）を用いて、ｎx≠ｎyであるｘ，ｙ（ｘ，ｙは自然数）について、パラメータｋ，ｃの連立方程式（下記式（３）および（４））をたてることで、パラメータｋ，ｃを求めることができる。
【００７９】
ｔx＝ｗx＋δx＋（ｋ×ｎx＋ｃ）              …（３）
【００８０】
ｔy＝ｗy＋δy＋（ｋ×ｎy＋ｃ）              …（４）
【００８１】
つぎに、パラメータテーブル８００から、ｎx≠ｎyである２つのパラメータ情報８００−１〜８００−ｐを読み出す。そして、読み出したパラメータ情報８００−１〜８００−ｐに含まれるパラメータｎx，ｎy，ｔx，ｔy，ｗx，ｗy，δx，δyを上記式（３）および（４）に代入して、パラメータｋ，ｃを求める。
【００８２】
ｎx≠ｎyである２つのパラメータ情報８００−１〜８００−ｐを読み出す場合、例えば、現在時刻から遡って最も直近の時刻に記憶された２つのパラメータ情報８００−１〜８００−ｐを読み出すこととしてもよい。これにより、最近のワーカＷの使用状況が反映されたパラメータｋ，ｃを求めることができる。
【００８３】
なお、上記式（３）および（４）を用いて求めたパラメータｋ，ｃが「０以下」となった場合には、予め設定された初期値をパラメータｋ，ｃとして用いることとしてもよい。パラメータｋ，ｃの初期値は、任意に設定することとしてもよく、また、過去に求めたパラメータｋ，ｃの平均値を設定することとしてもよい。
【００８４】
また、パラメータｋ，ｃを求めるために必要となるパラメータ情報８００−１〜８００−ｐがパラメータテーブル８００に記憶されていない場合には（例えば、初回の分散処理時）、予め設定されている初期値を用いることとしてもよい。
【００８５】
具体的には、上記パラメータｎx，ｎy，ｔx，ｔy，ｗx，ｗy，δx，δyに相当する初期値を上記式（３）および（４）に代入することで、パラメータｋ，ｃを求める。なお、パラメータｎ，ｔ，ｗ，δ，ｋ，ｃに関する初期値は、図４に示したＲＡＭ４０３やＨＤ４０５などの記憶部に予め記憶されている。
【００８６】
また、第１の算出部７０３は、パラメータテーブル８００の記憶内容を用いて、ワーカＷの処理性能を算出する。具体的には、例えば、パラメータテーブル８００に記憶されているパラメータδ，ｎを用いて、処理単位の実行時間を表わすパラメータτを算出する。より具体的には、例えば、パラメータτは、下記式（５）を用いて求めることができる。
【００８７】
【数１】
0004962327.tif 000002
【００８８】
これは、パラメータテーブル８００に記憶されているパラメータδ1〜δpおよびパラメータｎ1〜ｎpを用いて、処理単位の実行時間の平均値を求めることを意味している。なお、図６に示したスループット値は、パラメータτの逆数（１／τ）によって表現することができる。このスループット値は、パラメータτの値が算出された都度、その逆数（１／τ）を求めることで更新される。
【００８９】
まず、第２の算出部７０４は、上記式（３）および（４）から求めたパラメータｋ，ｃと、上記式（５）から求めたパラメータτとを下記式（６）に代入することにより、割当先に割り当てる処理の仮処理数ｎ’を算出する。ただし、ｓは、処理数ｎの処理群の実行時間が通信時間Ｋのｓ倍であることを示す数値（例えば、ｓ＝１）である。
【００９０】
【数２】
0004962327.tif 000003
【００９１】
つぎに、第２の算出部７０４は、上記式（６）から求めた仮処理数ｎ’を下記式（７）に代入することにより、割当先に割り当てる処理の処理数ｎを算出する。これは、上記式（６）を用いて求めた仮処理数ｎ’に、数％のゆらぎを持たせたものを実際にワーカＷに割り当てる処理の処理数ｎとすることを意味している。
【００９２】
【数３】
0004962327.tif 000004
【００９３】
なお、「ｎ’≦０」となった場合の処理数ｎ（ここでは、ｎ＝１）は、例えば、図４に示したキーボード４１０やマウス４１１などをユーザが操作することで、任意に設定可能である。同様に、パラメータｓの値も任意に設定可能である。具体的には、キューにある処理数が多い場合には、パラメータｓの値を大きくし（例えばｓ＝３）、キューにある処理数が少なくなるにつれて、パラメータｓの値を小さくする（例えばｓ＝１）こととしてもよい。
【００９４】
さらに、割当先のワーカＷから割り当てる処理の処理数を増やすリクエストを受信した場合に、パラメータｓの値を増加（例えば、１増やす）させることとしてもよい。また、パラメータｗの値が正、かつ割当先のワーカＷの処理群の実行が完了したときに、つぎに実行すべき処理群が割当済みのときに、実行時間の通信時間に対する割合がパラメータｓに比べて小さかった場合、パラメータｓの値を減少（例えば、１減らす）させることとしてもよい。なお、増減の繰り返しを回避するため、パラメータｓの値を減らすのは、例えば、一定周期（例えば、３つの処理群の分散処理終了時）ごとにおこなうこととしてもよい。
【００９５】
決定部７０７は、管理下にあるワーカＷ群の中から一連の処理群の割当先を決定する機能を有する。つまり、システム１００内のワーカＷ群の中から、適切なワーカＷを割当先に決定し、その割当先に一連の処理群を分散処理させる。
【００９６】
具体的には、例えば、決定部７０７は、各ワーカＷの使用状態に基づいて、ワーカＷ群の中から割当先を決定することとしてもよい。より具体的には、例えば、ワーカ管理テーブル５００を参照して、使用状態が「空き」のワーカＷ群の中から割当先を決定する。
【００９７】
このように、ワーカＷ群のうち、マスタＭから割り当てられた処理群を実行中、または、機能を停止中のワーカＷを排除することで、割当先候補を絞り込むことができる。さらに、使用状態が「空き」のワーカＷが存在しない場合に、「使用中」のワーカ群のうち、状態２（処理群が１つ割当済み）のワーカＷを割当先に決定することとしてもよい。
【００９８】
また、決定部７０７は、各ワーカＷの処理性能に基づいて、ワーカＷ群の中から割当先を決定することとしてもよい。より具体的には、例えば、スループットテーブル６００を参照して、スループット値が最大のワーカＷを割当先に決定する。これにより、処理群を高速に実行可能なワーカＷを割当先に決定することができる。
【００９９】
また、上記受信部７０１、取得部７０２、第１の算出部７０３、第２の算出部７０４、生成部７０５および送信部７０６は、ワーカＷに割当済みの２つの処理群のうち、先に送信された処理群の実行が完了した場合に、受信処理、取得処理、第１の算出処理、第２の算出処理、生成処理および送信処理を再度実行することとしてもよい。
【０１００】
より具体的には、例えば、前々回に送信された処理群の実行時間と、当該前々回に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報がワーカＷから送信された場合に、受信部７０１、取得部７０２、第１の算出部７０３、第２の算出部７０４、生成部７０５および送信部７０６による各種処理を再度実行することとなる。
【０１０１】
この結果、ワーカＷは、マスタＭ内のキューにある処理がなくなるまで、図２に示した状態２と状態３との間の状態遷移を繰り返すこととなる。これにより、ワーカＷにおける処理群の実行時間によって、マスタ／ワーカ間の通信時間を隠蔽し、一連の処理群の分散処理にかかる所要時間の短縮化を図ることができる。
【０１０２】
つぎに、ワーカＷの機能的構成について説明する。図９は、ワーカＷの機能的構成を示すブロック図である。図９において、ワーカＷは、受信部９０１と、実行部９０２と、送信部９０３と、計測部９０４と、から構成されている。
【０１０３】
これら各機能９０１〜９０４は、ワーカＷの記憶部に記憶された当該機能９０１〜９０４に関するプログラムをＣＰＵ３０１に実行させることにより、または、入出力Ｉ／Ｆにより、当該機能を実現することができる。また、各機能９０１〜９０４からの出力データは上記記憶部に保持される。また、図９中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶部から読み込んで、当該機能に関するプログラムをＣＰＵに実行させるものとする。
【０１０４】
まず、受信部９０１は、処理群をマスタＭから受信する機能を有する。また、実行部９０２は、マスタＭから割り当てられた処理群を実行する機能を有する。処理群は、ワーカＷのＣＰＵによって実行され、その実行結果はワーカＷ内の記憶部に保持される。
【０１０５】
送信部９０３は、実行部９０２によって処理群を構成するすべての処理の実行が完了した結果、処理群の実行結果をマスタＭに送信する機能を有する。具体的には、例えば、不図示の検出部により、実行部９０２によって処理群を構成するすべての処理の実行が完了したことを検出する。
【０１０６】
そして、送信部９０３は、不図示の検出部によってすべての処理の実行が完了したことが検出された場合、処理群の実行結果をマスタＭに送信する。このとき、処理群から特定されるＩＰアドレスを宛先に設定することで実行結果をマスタＭに送信することができる。
【０１０７】
計測部９０４は、受信部９０１によって処理群が受信されてから、実行部９０２によって処理群の実行が開始されるまでの待機時間を計測する機能を有する。具体的には、例えば、処理群が受信された受信日時と、処理群の実行が開始された開始日時とから待機時間を計測することができる。
【０１０８】
また、計測部９０４は、実行部９０２による処理群の実行時間を計測する機能を有する。具体的には、例えば、処理群の実行が開始された開始日時と、処理群の実行が完了した完了日時とから実行時間を計測することができる。
【０１０９】
また、送信部９０３は、計測部９０４によって計測された待機時間または／および実行時間に関する情報をマスタＭに送信する機能を有する。この情報は、マスタＭの第１の算出部７０３による算出処理に用いられる。
【０１１０】
また、送信部９０３は、実行部９０２による処理群の実行完了時に、受信部９０１によるつぎに実行すべき処理群の受信が完了していない場合は、割り当てる処理の処理数を増やすリクエストをマスタＭに送信することとしてもよい。
【０１１１】
具体的には、例えば、マスタＭから割り当てられた前回の処理群の実行時間に比べて、今回の処理群の受け渡しにかかる通信時間が大きい場合に、次回の処理群の処理数を増やすリクエストをマスタＭにする。これにより、マスタ／ワーカ間の処理群の受け渡しにかかる通信時間を適切に隠蔽することができる。
【０１１２】
（分散処理装置の分散処理手順）
つぎに、分散処理装置の分散処理手順について説明する。ここでは、マスタＭ内のキューに処理があり、その処理をワーカＷに分散処理させる場合の分散処理手順について説明する。まず、マスタＭにおける分散処理手順について説明する。図１０は、マスタＭにおける分散処理手順の一例を示すフローチャートである。
【０１１３】
図１０のフローチャートにおいて、まず、決定部７０７により、管理下にあるワーカＷ群の中から、キューにある処理の割当先のワーカＷを決定する割当先決定処理を実行する（ステップＳ１００１）。このあと、ステップＳ１００１において決定された割当先のワーカＷに割り当てる処理の処理数を算出する処理数算出処理を実行する（ステップＳ１００２）。
【０１１４】
つぎに、生成部７０５により、ステップＳ１００２において算出された処理数ｎに基づいて、割当先のワーカＷに割り当てる処理群を生成する（ステップＳ１００３）。このとき、処理数ｎがキューにある全処理数Ｎよりも大きい場合には、キューにある処理数Ｎの処理をまとめた処理群を生成することとなる。
【０１１５】
このあと、送信部７０６により、ステップＳ１００３において生成された処理群を割当先のワーカＷに送信する（ステップＳ１００４）。つぎに、キューに残余の処理があるか否かを判断し（ステップＳ１００５）、残余の処理がある場合には（ステップＳ１００５：Ｙｅｓ）、割当先のワーカＷに２つの処理群を割当済みか否かを判断する（ステップＳ１００６）。
【０１１６】
ここで、２つの処理群を割当済みではない場合（ステップＳ１００６：Ｎｏ）、ステップＳ１００３に戻って一連の処理を繰り返す。一方、２つの処理群を割当済みの場合は（ステップＳ１００６：Ｙｅｓ）、前々回に送信された処理群の実行結果を受信したか否かを判断する（ステップＳ１００７）。
【０１１７】
ここで、前々回に送信された処理群の実行結果を受信するのを待って（ステップＳ１００７：Ｎｏ）、受信した場合（ステップＳ１００７：Ｙｅｓ）、ステップＳ１００２に戻って一連の処理を繰り返す。また、ステップＳ１００５において、残余の処理がない場合には（ステップＳ１００５：Ｎｏ）、本フローチャートによる一連の処理を終了する。
【０１１８】
つぎに、図１０に示したステップＳ１００１における割当先決定処理の詳細な処理手順について説明する。図１１は、割当先決定処理手順の一例を示すフローチャートである。図１１において、まず、ワーカ管理テーブル５００に基づいて、未使用（空き）のワーカＷがあるか否かを判断する（ステップＳ１１０１）。ここで、未使用のワーカＷがない場合には、いずれかのワーカＷが使用可能となるのを待つ（ステップＳ１１０１：Ｎｏ）。
【０１１９】
一方、未使用のワーカＷがあった場合（ステップＳ１１０１：Ｙｅｓ）、スループットテーブル６００に基づいて、未使用のワーカＷの中から、スループット値Ｔが最大のワーカＷを選択する（ステップＳ１１０２）。そして、ステップＳ１１０２において選択されたワーカＷを割当先に決定し（ステップＳ１１０３）、図１０に示したステップＳ１００２に移行する。
【０１２０】
つぎに、図１０に示したステップＳ１００２における処理数算出処理の詳細な処理手順について説明する。図１２は、処理数算出処理手順の一例を示すフローチャートである。図１１において、受信部７０１により、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報を割当先のワーカＷから受信したか否かを判断する（ステップＳ１２０１）。
【０１２１】
ここで、実行時間と待機時間とに関する情報を受信した場合（ステップＳ１２０１：Ｙｅｓ）、取得部７０２により、先に送信された処理群を割当先に送信してから、先に送信された処理群の実行結果を割当先から受信するまでの経過時間を表わすパラメータｔ、およびステップＳ１２０１において受信された実行時間と待機時間とに関する情報から特定されるパラメータｎ，δ，ｗを取得する（ステップＳ１２０２）。
【０１２２】
このあと、ステップＳ１２０１における情報の受信が初回の受信か否かを判断し（ステップＳ１２０３）する。ここで、初回の受信ではない場合（ステップＳ１２０３：Ｎｏ）、第１の算出部７０３により、ステップＳ１２０２において取得されたパラメータｔ，ｎ，δ，ｗと、パラメータテーブルの記憶内容とを用いて、割当先との通信にかかる通信時間に関するパラメータｋ，ｃを算出する（ステップＳ１２０４）。
【０１２３】
このあと、第１の算出部７０３により、ステップＳ１２０２において取得されたパラメータδと、パラメータテーブル８００の記憶内容とを用いて、処理単位の実行時間を表わすパラメータτを算出する（ステップＳ１２０５）。そして、第２の算出部７０４により、パラメータｋ，ｃ，τを用いて、割当先に割り当てる処理の処理数ｎを算出して（ステップＳ１２０６）、図１０に示したステップＳ１００３に移行する。
【０１２４】
また、ステップＳ１２０１において実行時間と待機時間とに関する情報を受信していない場合（ステップＳ１２０１：Ｎｏ）、または、ステップＳ１２０３において初回の受信の場合（ステップＳ１２０３：Ｙｅｓ）、予め設定されている初期値を用いて、割当先との通信にかかる通信時間に関するパラメータｋ，ｃを算出する（ステップＳ１２０７）。このあと、予め設定されている初期値を用いて、処理単位の実行時間を表わすパラメータτを算出して（ステップＳ１２０８）、ステップＳ１２０６に移行する。
【０１２５】
つぎに、ワーカＷにおける分散処理手順について説明する。図１３は、ワーカＷにおける分散処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、受信部９０１により、処理群をマスタＭから受信したか否かを判断する（ステップＳ１３０１）。
【０１２６】
ここで、処理群を受信するのを待って（ステップＳ１３０１：Ｎｏ）、受信した場合（ステップＳ１３０１：Ｙｅｓ）、計測部９０４により、処理群が受信されてから、処理群の実行が開始されるまでの待機時間の計測を開始する（ステップＳ１３０２）。
【０１２７】
このあと、実行部９０２により、マスタＭから割り当てられた処理群を実行する（ステップＳ１３０３）。このとき、計測部９０４により、待機時間の計測を終了するとともに、処理群の実行時間の計測を開始する（ステップＳ１３０４）。
【０１２８】
そして、処理群を構成するすべての処理の実行が完了したことが検出されると（ステップＳ１３０５）、計測部９０４により、処理群の実行時間の計測を終了する（ステップＳ１３０６）。最後に、送信部９０３により、計測部９０４による計測結果とともに処理群の実行結果をマスタＭに送信して（ステップＳ１３０７）、本フローチャートによる一連の処理を終了する。
【０１２９】
以上説明したように、本実施の形態によれば、実行時間の短い処理をマスタ／ワーカ間の通信時間とワーカＷの処理性能とに応じた適切な処理数でまとめた処理群を、ワーカＷに割り当てることができる。これにより、マスタ／ワーカ間の通信回数を削減し、通信オーバーヘッドの隠蔽化を図ることができる。
【０１３０】
また、ワーカＷによる処理群の実行処理と並列に、マスタ／ワーカ間の通信処理を実行することで、マスタ／ワーカ間の通信時間を処理群の実行時間によって隠蔽することができる。これにより、一連の処理群の分散処理にかかる所要時間の短縮化を図ることができる。
【０１３１】
より具体的には、例えば、マスタ／ワーカ間の通信時間が、処理群の実行時間以下となる最小の処理数でまとめた処理群をワーカＷに割り当てることで、実行結果を得るまでの応答時間の増大化を抑えるとともに、マスタ／ワーカ間の通信オーバーヘッドを適切に削減することができる。
【０１３２】
さらに、処理数を最小限に抑えることで、ワーカＷ数の増加に柔軟に対応することができ、分散処理の効率化を図ることができる。ここで、ワーカＷ数の増加時における本実施の形態の効果を具体的に説明する。図１４は、ワーカＷ数の増加時における処理群の割り当て状況を示す説明図である。図１４中、両向き矢印の長さは、処理群を構成する処理の処理数を表わしている。
【０１３３】
図１４において、（１）は、ワーカＷに割り当てる処理群の処理数が多い場合の一例である。この場合、多くの処理数でまとめたことにより、ワーカＷ数が２台から４台に増加した際に、ワーカＷｃ，Ｗｄに処理群を割り当てることができない。
【０１３４】
（２）は、ワーカＷに割り当てる処理群の処理数が少ない場合の一例である。この場合、少ない処理数でまとめたことにより、ワーカＷ数が２台から４台に増加した際に、各ワーカＷａ〜Ｗｄに処理群を均等に割り当てることができる。このように、まとめる処理数を最小限に抑えることで、ワーカＷ数の増加時に、より多くのワーカＷを利用でき、効率的な分散処理を実現することができる。
【０１３５】
以上のことから、上述した実施の形態のシステム１００では、実行時間の短い処理を適切にまとめた処理群をワーカＷに割り当てることにより、マスタ／ワーカ間の通信トラフィックの低減化および分散処理の効率化を図ることができる。
【０１３６】
また、本実施の形態で説明した分散処理装置は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述した分散処理装置の機能７０１〜７０６，９０１〜９０４をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、分散処理装置を製造することができる。
【０１３７】
なお、本実施の形態で説明した分散処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１３８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３９】
（付記１）通信可能なワーカ計算機に一連の処理群を割り当てるマスタ計算機を、
前記一連の処理群のうち、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報を前記ワーカ計算機から受信する受信手段、
前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得する取得手段、
前記受信手段によって受信された情報と前記取得手段によって取得された経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出する第１の算出手段、
前記第１の算出手段によって算出された通信時間に基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出する第２の算出手段、
前記第２の算出手段によって算出された処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成する生成手段、
前記生成手段によって生成された処理群を前記ワーカ計算機に送信する送信手段、
として機能させることを特徴とする分散処理プログラム。
【０１４０】
（付記２）前記第１の算出手段は、
さらに、前記ワーカ計算機のスループット値から処理性能値を算出し、
前記第２の算出手段は、
前記第１の算出手段によって算出された通信時間および処理性能値に基づいて、前記処理数を算出することを特徴とする付記１に記載の分散処理プログラム。
【０１４１】
（付記３）前記マスタ計算機に、
前記ワーカ計算機に割り当て済みの２つの処理群のうち、先に送信された処理群の実行が完了した場合、前記受信手段、前記第１の算出手段、前記第２の算出手段、前記生成手段および前記送信手段による処理を再度実行させることを特徴とする付記１または２に記載の分散処理プログラム。
【０１４２】
（付記４）前記第２の算出手段は、
前記通信時間が、前記ワーカ計算機における前記処理をまとめた処理群の実行時間以下となる処理数を算出することを特徴とする付記１〜３のいずれか一つに記載の分散処理プログラム。
【０１４３】
（付記５）前記マスタ計算機を、
管理下にあるワーカ計算機群の中から前記一連の処理群の割当先を決定する決定手段として機能させ、
前記受信手段は、
前記一連の処理群のうち、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報を前記決定手段によって決定された割当先のワーカ計算機から受信することを特徴とする付記１〜４のいずれか一つに記載の分散処理プログラム。
【０１４４】
（付記６）前記決定手段は、
前記各ワーカ計算機の使用状態に基づいて、前記ワーカ計算機群の中から前記割当先を決定することを特徴とする付記５に記載の分散処理プログラム。
【０１４５】
（付記７）前記決定手段は、
前記各ワーカ計算機の処理性能に基づいて、前記ワーカ計算機群の中から前記割当先を決定することを特徴とする付記５または６に記載の分散処理プログラム。
【０１４６】
（付記８）マスタ計算機と通信可能なワーカ計算機を、
前記マスタ計算機から割り当てられた処理群を実行する実行手段、
前記マスタ計算機から前記処理群を受信する受信手段、
前記受信手段によって前記処理群が受信されてから、前記実行手段によって前記処理群の実行が開始されるまでの待機時間を計測する計測手段、
前記計測手段によって計測された待機時間に関する情報を前記マスタ計算機に送信する送信手段、
として機能させることを特徴とする分散処理プログラム。
【０１４７】
（付記９）前記計測手段は、
前記実行手段による前記処理群の実行時間を計測し、
前記送信手段は、
前記計測手段によって計測された実行時間に関する情報を前記マスタ計算機に送信することを特徴とする付記８に記載の分散処理プログラム。
【０１４８】
（付記１０）通信可能なワーカ計算機に一連の処理群を割り当てる分散処理装置であって、
前記一連の処理群のうち、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報を前記ワーカ計算機から受信する受信手段と、
前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得する取得手段と、
前記受信手段によって受信された情報と前記取得手段によって取得された経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出する第１の算出手段と、
前記第１の算出手段によって算出された算出結果に基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出する第２の算出手段と、
前記第２の算出手段によって算出された処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成する生成手段と、
前記生成手段によって生成された処理群を前記ワーカ計算機に送信する送信手段と、
を備えることを特徴とする分散処理装置。
【０１４９】
（付記１１）マスタ計算機から割り当てられた処理群を実行する実行手段と、
前記マスタ計算機から前記処理群を受信する受信手段と、
前記受信手段によって前記処理群が受信されてから、前記実行手段によって前記処理群の実行が開始されるまでの待機時間を計測する計測手段と、
前記計測手段によって計測された待機時間に関する情報を前記マスタ計算機に送信する送信手段と、
を備えることを特徴とする分散処理装置。
【０１５０】
（付記１２）通信可能なワーカ計算機に一連の処理群を割り当てる分散処理方法であって、
前記一連の処理群のうち、先に送信された処理群の実行時間と、当該先に送信された処理群を受信してから実行を開始するまでの待機時間とに関する情報を前記ワーカ計算機から受信する受信工程と、
前記先に送信された処理群を前記ワーカ計算機に送信してから、前記先に送信された処理群の実行結果を前記ワーカ計算機から受信するまでの経過時間を取得する取得工程と、
前記受信工程によって受信された情報と前記取得工程によって取得された経過時間とに基づいて、前記ワーカ計算機との通信にかかる通信時間を算出する第１の算出工程と、
前記第１の算出工程によって算出された算出結果に基づいて、前記ワーカ計算機に割り当てる処理の処理数を算出する第２の算出工程と、
前記第２の算出工程によって算出された処理数に基づいて、前記ワーカ計算機に割り当てる処理群を生成する生成工程と、
前記生成工程によって生成された処理群を前記ワーカ計算機に送信する送信工程と、
を含んだことを特徴とする分散処理方法。
【０１５１】
（付記１３）マスタ計算機から割り当てられた処理群を実行する実行工程と、
前記マスタ計算機から前記処理群を受信する受信工程と、
前記受信工程によって前記処理群が受信されてから、前記実行工程によって前記処理群の実行が開始されるまでの待機時間を計測する計測工程と、
前記計測工程によって計測された待機時間に関する情報を前記マスタ計算機に送信する送信工程と、
を含んだことを特徴とする分散処理方法。
【図面の簡単な説明】
【０１５２】
【図１】システムのシステム構成図である。
【図２】ワーカＷの状態遷移を示す説明図である。
【図３】分散処理にかかる所要時間を具体的に示すガントチャートである。
【図４】分散処理装置のハードウェア構成を示すブロック図である。
【図５】ワーカ管理テーブルの記憶内容を示す説明図である。
【図６】スループットテーブルの記憶内容を示す説明図である。
【図７】マスタＭの機能的構成を示すブロック図である。
【図８】パラメータテーブルの記憶内容の一例を示す説明図である。
【図９】ワーカＷの機能的構成を示すブロック図である。
【図１０】マスタＭにおける分散処理手順の一例を示すフローチャートである。
【図１１】割当先決定処理手順の一例を示すフローチャートである。
【図１２】処理数算出処理手順の一例を示すフローチャートである。
【図１３】ワーカＷにおける分散処理手順の一例を示すフローチャートである。
【図１４】ワーカ数の増加時における処理群の割り当て状況を示す説明図である。
【符号の説明】
【０１５３】
１００  システム
３１０，３２０  グラフ
５００  ワーカ管理テーブル
６００  スループットテーブル
７０１  受信部
７０２  取得部
７０３  第１の算出部
７０４  第２の算出部
７０５  生成部
７０６  送信部
７０７  決定部
８００  パラメータテーブル
８００−１〜８００−ｐ  パラメータ情報
９０１  受信部
９０２  実行部
９０３  送信部
９０４  計測部
Ｍ  マスタ
Ｗ，Ｗ１〜Ｗｍ  ワーカ
【図１】
0004962327.tif 000005
【図２】
0004962327.tif 000006
【図３】
0004962327.tif 000007
【図４】
0004962327.tif 000008
【図５】
0004962327.tif 000009
【図６】
0004962327.tif 000010
【図７】
0004962327.tif 000011
【図８】
0004962327.tif 000012
【図９】
0004962327.tif 000013
【図１０】
0004962327.tif 000014
【図１１】
0004962327.tif 000015
【図１２】
0004962327.tif 000016
【図１３】
0004962327.tif 000017
【図１４】
0004962327.tif 000018