(57)【要約】【課題】ネットワーク接続されたノードからなるシステムにおいて、ノード数によらず、効率的にノード間の情報共有を行う。【解決手段】ノードは、送信先ノードに応じて、送信する情報の精度を変える。情報精度の変更方法としては、例えば、（１）複数のノードに関する情報に演算を施してより少ないノード数分の情報量の情報にして、その情報をこれら複数のノードに係る情報として扱う、（２）ノードごとに情報送信周期を変える、（３）ノードが持つ情報に対して一つ以上の重複部分を持つ情報の集合を定義するとともにノードの情報が属する集合が変わったときに情報を送信することとして、送信先ノードごとに集合の定義を変える、などの方法がある。【選択図】    図１
2004171123.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード間で相互にノード情報を共有する方法であって、
相手先ノードに応じて、当該相手先ノードに送信する情報の精度を変える、情報共有方法。
【請求項２】
複数のノード間で相互にノード情報を共有する方法であって、
相手先ノードに対して複数のノードに対応するノード情報を転送する際に、転送すべきノード情報に係るノードの範囲を前記相手先ノードに応じて選択し、
前記相手先ノードに応じて、前記ノード情報の情報量を減縮して送信する、
情報共有方法。
【請求項３】
複数のノード間で相互にノード情報を共有する方法であって、
送信先ノードに応じて異なる周期で情報を送信する情報共有方法。
【請求項４】
前記周期の開始時刻を送信先ノードに応じて異ならせる、情報共有方法。
【請求項５】
複数のノード間で互いのノード情報を共有する方法であって、
ノード情報の値域を複数の領域に分割し、ノード情報の値が変化して以前とは異なる領域に属した時にノード情報を送信する段階と、
相手先ノードに応じて前記値域を分割する定義を異ならせる段階と、
を有し、前記領域間で前記値域における重複部分を許す、情報共有方法。
【請求項６】
複数のノード間で互いのノード情報を共有する方法であって、
第１のノードが第２のノードに情報を送信する際に、
前記第２のノードである送信先ノードに応じた周期と該周期の開始時間を適用する処理と、
前記第１のノードが保持する他ノードの情報のうちから、前記第２のノードである相手先ノードに応じて、前記他ノードの情報のうちから送信すべき情報を選択し、前記選択した情報のうち、所定数のノードの情報を１ノードに相当する情報として送信する処理であって、前記所定数を前記第２のノードである送信先ノードに応じて変化させる処理と、
各ノード情報のとりうる値域を複数の領域に分割するとともに、ノード情報の値が変化して以前とは異なる領域に属した時に当該ノード情報を送信する処理であって、領域間で前記値域における重複部分を許すとともに、相手先ノードに応じて前記値域を分割する定義を異ならせる処理と、
を実行する情報共有方法。
【請求項７】
複数のノード間で互いのノード情報を共有するためにノードに設けられる情報共有装置であって、
他ノードのノード情報を保持する記憶手段と、
ノード情報の送信に関し、送信先ノードに応じた周期と該周期の開始時間を適用する周期指定制御手段と、
自ノードが保持する他ノードの情報のうちから、相手先ノードに応じて、前記他ノードの情報のうちから送信すべき情報を選択して該選択した情報の情報量を圧縮する要約化制御手段と、
各ノード情報のとりうる値域を複数の領域に分割するとともに、ノード情報の値が変化して以前とは異なる領域に属した時に当該ノード情報が送信されるようにするとともに、領域間で前記値域における重複部分を許し、相手先ノードに応じて前記値域を分割する定義を異ならせる範囲指定制御手段と、
を有する情報共有装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報共有方法に関し、特に、複数のコンピュータあるいはプロセッサがネットワークで接続されたシステムにおいて、各コンピュータあるいはプロセッサがローカルに持つ情報をスケーラブルに共有する情報共有方法に関する。
【０００２】
【従来の技術】
従来、並列・分散システムなどの複数のコンピュータあるいはプロセッサがネットワークで接続されたシステムにおいては、負荷の分散や、障害の検出を行うために、各コンピュータあるいはプロセッサがローカルに保持する情報を共有することが行われている。負荷情報としては、例えば、ＣＰＵ（中央処理ユニット）のレディキューの長さ、メモリの使用量、ディスクアクセス数等が共有されており、障害情報としては、例えば、正常に動作しているディスクの数やＣＰＵの数等が共有されている。本発明が適用されるシステムにおいても、このような情報が共有されるものとする。
【０００３】
負荷分散・障害検出を行うために広く用いられている方法として、負荷・障害情報を収集するマスターノードを設置する方法がある。この方法は負荷・障害情報をマスターノードにおいて集中管理するものであることから、以下、この方法のことをＣＥＮＴＲＡＬ（セントラル）と呼ぶ。
【０００４】
ＣＥＮＴＲＡＬでは、情報共有を行うノードはマスターノードのみである。そのため、マスターノードが管理すべきスレーブノードの数が増えるにつれて、マスターノードの負荷が増大してしまう。また、マスターノードに情報を集めておき、スレーブノードは必要なときにマスターノードへ情報問い合わせを行うので、この情報問い合わせの際の遅延がスレーブノードの数によらず発生するという問題も生じる。これらの二つの問題は、例えば、スレーブノードにタスクが到着し、スレーブノードがマスターノードに対して負荷の問い合わせと負荷分散を行う場合などに顕著になる。さらにノード障害の発生のことも考慮すると、マスターノードに障害が発生した場合、その障害発生から、スレーブノードによりその障害が検出され、新たなマスターノードが選出されるまで、スレーブノードは情報を取得できなくなる。マスターノードの多重化は障害対策として考えられるものの一つであるが、余分なマスターノードの設置と、各マスターノードへのスレーブノードからの情報送信という、２種類のコストが付加される。
【０００５】
ここで、マスターノードが情報共有だけでなくその共有した情報を使った処理も行う場合、例えば、負荷分散を行う場合においてマスターノードが負荷情報を集めるだけでなく負荷分散も行う場合を考える。すると、スレーブノードからの情報問い合わせはなくなるものの、マスターノードが行う処理の増加によって、マスターノードでの処理がボトルネックになる傾向が一層強まる。さらに、各スレーブノードにタスクが到着する時には不均衡を解消する分のタスクの移送しか起こらないが、マスターノードで負荷分散を行う場合には、スレーブノードへのタスクの移送が常に生じること、バースト的にタスクが到着したときに生じる移送待ちタスクのキューイングによって遅延が生じてしまうことの二つが問題として生じる。また、マスターノードの障害が起こると、スレーブノードにタスクが到着しないのでタスクが全く実行されず、その結果、情報が取得できずに負荷の不均衡が生じる場合よりも、より重大な障害がもたらされることになる。
【０００６】
一方で、Ｓ．  Ｚｈｏｕによる論文、「Ａ  Ｔｒａｃｅ−Ｄｒｉｖｅｎ  Ｓｉｍｕｌａｔｉｏｎ  Ｓｔｕｄｙ  ｏｆ  Ｄｙｎａｍｉｃ  Ｌｏａｄ  Ｂａｌａｎｃｉｎｇ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎ  ｏｎ  Ｓｏｆｔｗａｒｅ  Ｅｎｇｉｎｅｅｒｉｎｇ，  １４（９），  ｐｐ．１３２７−１３４１，  Ｓｅｐｔｅｍｂｅｒ，  １９８８（非特許文献１）にあるＤＩＳＴＥＤという負荷分散アルゴリズムでは、周期的に自ノードの負荷情報を他の全ノードにノード毎に情報を送信して情報共有を図っている。この方法では全ノードが情報が等しく情報を分担するので、以下、この情報共有方法のことをＦＬＡＴ（フラット）と呼ぶ。
【０００７】
ＦＬＡＴでは、ＣＥＮＴＲＡＬとは異なってマスターノードが存在しないため、ＣＥＮＴＲＡＬで情報共有を行った場合に生じる、特定のノードへの負荷の集中や障害の問題は発生しない。全ノードが等しく情報共有の負荷を分担しているので、障害が発生しても、障害が起きなかったノードに関しては、障害が発生したノードの数の分だけ処理を行うノード数が減少したという以上の影響はないためである。しかしながらＦＬＡＴでは、情報共有コストが問題となる。ノード数をｎとすると、ＦＬＡＴでは、ノード数が増えるにつれて単位時間あたりの負荷情報の送信量がＯ（ｎ２）で増加し、情報共有のためのコストが高くなってしまう。情報共有コストとは、情報共有のために使用される計算及びネットワーク資源の量を指すが、ここでは単位時間あたりにノード間で生じる通信の回数でこれらを近似する。ＦＬＡＴのように各ノードが他の全ノードの情報を頻繁に収集する情報共有方法は、情報共有コスト以外の問題点を持たないため、ノード数が少ない場合には適切な情報共有方法である。ところが、ノード数が増えるにつれて、情報共有コストは大きな負荷となる。だからといってコスト低減のために情報更新の周期を長くする等の方策で更新頻度を削減すると、不正確な情報に基づいて負荷分散をしなければならなくなる。そのため、例えば情報更新時には低負荷であったが負荷分散を行う時には高負荷であるノードにタスクを移動してしまうことや、障害検出に時間がかかることが問題として生じる。
【０００８】
ＦＬＡＴでは各ノードが全ノードの情報を共有しているが、各ノードが全ノードではなくて一部のノードの情報を共有することで、情報共有コストを引き下げることができる。つまりノードのグループを作成して、グループ内で情報共有を行うことが考えられる。以下、この方法をＧＲＯＵＰ（グループ）と呼ぶ。ＧＲＯＵＰは、定数個のグループ内のノードと情報共有を行うので、その情報共有コストはシステムのノード数に依存せず、スケーラブルな情報共有方法である。ところがＧＲＯＵＰでは、情報共有の範囲が問題となる。グループ間での情報の共有が行われないため、例えばグループ間の情報共有なしに負荷分散を行うための負荷情報を共有した場合、グループ内での負荷の均衡は図れてもグループ間では負荷が不均衡になってしまうので、システム全体としての負荷分散が行えなくなってしまう。
【０００９】
米国特許第５，５３９，８８３号、「ＬＯＡＤ  ＢＡＬＡＮＣＩＮＧ  ＯＦ  ＮＥＴＷＯＲＫ  ＢＹ  ＭＡＩＮＴＡＩＮＩＮＧ  ＩＮ  ＥＡＣＨ  ＣＯＭＰＵＴＥＲ  ＩＮＦＯＲＭＡＴＩＯＮ  ＲＥＧＡＲＤＩＮＧ  ＣＵＲＲＥＮＴ  ＬＯＡＤ  ＯＮ  ＴＨＥ  ＣＯＭＰＵＴＥＲ  ＡＮＤ  ＬＯＡＤＯＮ  ＳＯＭＥ  ＯＴＨＥＲ  ＣＯＭＰＵＴＥＲＳ  ＩＮ  ＴＨＥ  ＮＥＴＷＯＲＫ」、Ｊｕｌｙ，  １９９６、（特許文献１）にあるように、ノードを（論理的に）木構造に配置して周期的にリンク方向に情報の共有を行い、階層的な情報共有を図る方法もある。この方法では木構造に基づいて階層的にノードの情報を共有するので、以下、この方法をＨＩＥＲＡＲＣＨＩＣＡＬ（ヒエラルキカル）と呼ぶ。ＨＩＥＲＡＲＣＨＩＣＡＬでは、下位のノードが情報を上位のノードに伝え、上位のノードが集めた情報を下位のノードに送信すれば、ＦＬＡＴと同様に各ノードが他の全ノードの情報を持つことができる。ＨＩＥＲＡＲＣＨＩＣＡＬでの情報共有コストは、Ｏ（ｎ  ｌｏｇ  ｎ）であるが、ＨＩＥＲＡＲＣＨＩＣＡＬでは、上位ノードがマスター的な役割を果たすため、上位ノードで障害が生じると、その下位のノードは、障害が起きたノードより下の階層の情報しか取得できなくなる。そして、障害の発生から、障害検出がなされ、障害が起きたノードの代わりを務めるノードが選択されるまで、下位のノードは上位のノードから情報を取得できない。さらに、情報が木構造でのリンク方向のみに移動するために、より離れたノード間ほど、つまり、より多くのリンクを経由して情報の交換を行うノード間ほど、通信遅延が大きくなる。したがって、ＨＩＥＲＡＲＣＨＩＣＡＬで情報を共有して負荷分散を行う場合、離れたノード間の負荷の均衡がとりにくいという問題がある。つまり、情報の精度が問題となる。
【００１０】
従来の情報共有方法に関する問題点として、情報共有におけるマスター・スレーブの従属関係と範囲、精度、情報共有コストの四つがある。各ノードが独立に、他の全ノードの正しい情報を十分低いコストで収集できるような情報共有方法あるいはシステムが望ましいが、従来の方法あるいはシステムでは、ノードの独立性、範囲、コストの少なくとも一つが問題となっている。
【００１１】
なお、この技術に関連する従来技術文献としては、上述したもののほか、以下に列挙する特許文献２〜６がある。
【００１２】
【特許文献１】
米国特許第５，５３９，８８３号明細書
【特許文献２】
特開２００１−３２６６６４
【特許文献３】
特開２００２−１５８７０９
【特許文献４】
特開２００２−１８９６４４
【特許文献５】
特開平９−１９０３９４
【特許文献６】
特開平１１−５３３２５
【非特許文献１】
Ｓ．  Ｚｈｏｕ  ｅｔ  ａｌ．，  ”Ａ  Ｔｒａｃｅ−Ｄｒｉｖｅｎ  Ｓｉｍｕｌａｔｉｏｎ  Ｓｔｕｄｙ  ｏｆ  Ｄｙｎａｍｉｃ  Ｌｏａｄ  Ｂａｌａｎｃｉｎｇ”，  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎ  ｏｎ  Ｓｏｆｔｗａｒｅ  Ｅｎｇｉｎｅｅｒｉｎｇ，  １４（９），  ｐｐ．  １３２７−１３４１，  Ｓｅｐｔｅｍｂｅｒ，  １９８８
【非特許文献２】
Ｊ．  Ａ．  Ｓｔａｎｋｏｖｉｃ，  ”Ｓｉｍｕｌａｔｉｏｎｓ  ｏｆ  Ｔｈｒｅｅ  Ａｄａｐｔｉｖｅ  Ｄｅｃｅｎｔｒａｌｉｚｅｄ  Ｃｏｎｔｒｏｌｌｅｄ，  Ｊｏｂ  Ｓｃｈｅｄｕｌｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ”，  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋｓ，  ８（３），  ｐｐ．  １９９−２１７，  Ｊｕｎｅ，  １９８４
【００１３】
【発明が解決しようとする課題】
そこで本発明の目的は、ネットワークやスイッチなどに接続された複数のノードからなるシステムにおいて情報を共有する際に、ノード数によらず、効率的にノード間での情報共有を達成できるようにすることにある。具体的には、情報共有方法および装置であって、（１）スケーラブルであり、（２）情報共有の範囲が広く、（３）各ノードの独立性が高い、という従来方法が同時に満たすことができなかった３つの条件を同時に満たす、情報共有方法及び装置を提供することにある。
【００１４】
【課題を解決するための手段】
本発明では、送信先ノードに応じて、送信する情報の精度を変え、これによって、ノード数によらずにノード間で効率的に情報を共有できるようにする。具体的には、各ノードが独立に広範囲の情報を共有するが、以下の４つの手法を用い、ノードが送信する情報の精度を送信先ノードごとに制御することで、情報共有コストを削減し、スケーラブルな情報共有方法を提供する。この４つの手法とは、
１．  周期指定（ｐｅｒｉｏｄ）、
２．  範囲指定（ｒａｎｇｅ）、
３．  要約化（ｓｕｍｍａｒｉｚｅ）及び
４．  間接転送（ｉｎｄｉｒｅｃｔ）である。
【００１５】
「周期指定（ｐｅｒｉｏｄ）」は、送信先ノードによって異なる周期で情報を送信するための方法であり、あるノードへの情報送信間隔は短く、別のノードへの情報送信間隔は長くすることで、短い情報送信間隔を持つノードを残しつつ、全てのノードへの送信間隔が短い場合に比べて単位時間あたりの情報送信回数を削減する方法である。これは、周期的なタイムドリブン型の情報送信回数を削減する方法であり、古い情報を送るノードがある代わりに、情報共有コストを削減できる。
【００１６】
「範囲指定（ｒａｎｇｅ）」は、共有する情報が取り得る値をいくつかの集合に分割して、値が属する集合が変化したときに情報を送信する方法である。例えば、共有する情報がノードのレディキューにつながれたタスクの数であるとし、レディキューの長さが変化したら情報を送信するイベントドリブン型の情報共有を考える。この方法では、［０，２），［２，５），［５，∞）というように、共有する情報が取り得る値をいくつかの集合に分割して、値が属する集合が変化したときに（例えば、レディキューの長さが１であれば、この値は集合［０，２）に属するが、レディキューの長さが２になると、この値は集合［２，５）に属する）、情報を送信する。この場合、情報送信先ノードごとに、集合を設定できるようにする。これによって、あるノードへは情報の変化は細かく伝え（情報送信回数は多い）、別のノードへは粗く伝える（情報送信回数は少ない）ことができる。これは、イベントドリブン型の情報送信回数を削減する方法であり、細かい値の変化を検出できないノードを作って、情報共有コストを削減する。
【００１７】
「要約化（ｓｕｍｍａｒｉｚｅ）」は、あるノードに対して複数のノードの情報を送信する際に、送信する情報の情報量を削減して、情報共有コストを削減する方法である。例えば、複数ノードの情報の平均値をそれらのノードの情報として扱うことや、ある特定のノードの情報を複数のノードを代表する情報として扱うことを行う。個々のノードの状態を正確に知ることはできない代わり、コストを削減できる。また、情報の削減量も送信先ノードによって変えることができる。例えばノード４は、ノード４，５，６，７の情報を持つとする。そして、ノード３にはノード４の情報を送り（情報量の削減はない）、ノード２にはノード４，５の情報の平均を送り（情報量は１／２）、ノード０にはノード４，５，６，７の情報の平均を送る（情報量は１／４）、ということができる。
【００１８】
「間接転送（Ｉｎｄｉｒｅｃｔ）」は、他のノードから受け取った情報を転送する方法である。転送を伴うために情報伝達遅延は大きくなるが、他ノードを使って自ノードの情報を送信できるので、コストを分散できる。また、送信先ノードごとに転送する情報を選択できる。
【００１９】
本発明では、以上の４つの手法を組み合わせることにより、（１）スケーラブルであり、（２）情報共有の範囲が広く、（３）各ノードの独立性が高い、という３つの条件を同時に満たす情報共有が可能になる。
【００２０】
【発明の実施の形態】
次に、本発明の好ましい実施の形態について、図面を参照して詳細に説明する。図１は、本発明の実施の一形態の情報共有方法が適用されるシステムの構成例を示すブロック図である。
【００２１】
このシステムでは、スイッチ、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（広域ネットワーク）、インターネット等のスイッチング装置１に対し、コンピュータ等のｎ台の情報処理装置２−１，２−２，…，２−ｎが接続している。ただしｎは２以上の自然数である。
【００２２】
各情報処理装置２−ｉ（ｉ＝１，…，ｎ）は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス等とノードＩＤ（識別番号）との間の変換機構を有し（ただしノードＩＤは、ノードを識別するための、０から始まる連続した非負の整数である）、外部とのデータ通信を行う通信部２１−ｉと、共有する情報の送受信を行う情報制御部２２−ｉと、データの蓄積を行う記憶部２３−ｉとを備えている。記憶部２３−ｉには、情報の交換方法が定義された情報共有リスト２４−ｉが含まれている。
【００２３】
図２は、図１に示した情報制御部２２−ｉの構成例を示すブロック図である。情報制御部２２−ｉは、要約化制御部３１−ｉ、間接転送制御部３２−ｉ、周期指定制御部３３−ｉ、範囲指定制御部３４−ｉ、情報管理部３５−ｉ、障害検出部３６−ｉ、送信情報管理部３７−ｉ、受信情報管理部３８−ｉを含んでいる。要約化制御部３１−ｉは、複数のノードに関する情報についてその情報量を削減するものであり、要約化処理前後での情報量の比は送信先ノードごとに制御できる。間接転送制御部３２−ｉは、他のノードから受け取った情報をさらに別のノードにフォワードするためのものであり、フォワードする情報は送信先ノードごとに制御できる。周期指定制御部３３−ｉは、送信先ノードごとに異なる周期で情報を送信するためのものである。範囲指定制御部３４−ｉは、情報が属する集合が何かを決定し、また情報が属する集合が変化したことを検出するものである。
【００２４】
情報管理部３５−ｉは、ノードＩＤの決定、情報共有参加ノードの検出、情報共有に関する制約条件が与えられたときの条件のパース（構文解析）を行う。障害検出部３６−ｉは、受け取るべき情報が正しく到着しているかどうかをチェックするためのものである。送信情報管理部３７−ｉは、通信部２３−ｉへの情報送信依頼、送信情報の記憶部２３−ｉへの格納を行う。
【００２５】
受信情報管理部３８−ｉは、通信部２３−ｉへの情報の到着を検知し、その情報を読み出し、記憶部２３−ｉに格納する。そして、更新された情報がどのノードによって送られた情報なのかを記憶し、記憶部２３−ｉ内の情報共有リスト２４−ｉへの情報更新時刻の書き込みを行う。自ノードの情報の更新も行う。また、受信した情報がどのノードから送られた情報なのか、更新された情報がどの情報から送られた情報なのか、という間接転送制御部３２−ｉからの問い合わせに答える。
【００２６】
次に、図１、図２、図３、図５及び図６を参照して、この実施の形態における情報共有の動作について詳細に説明する。
【００２７】
情報処理装置２−ｋ（ｋ＝０，１，…，ｎ：以下、ノードｋとも書く）は、それぞれ通信部２１−ｋにおいて、スイッチング装置１を介して情報共有に関する制約条件を受け取り、情報管理部３５−ｋは、制約条件を通信部２１−ｋから受け取る。または、あらかじめ記憶部２３−ｋに制約条件が保存されていれば、通信部２１−ｋは、情報共有を開始するメッセージを受け取り、これを情報管理部３５−ｋに通知し、情報管理部３５−ｋは記憶部２３−ｋから制約条件を読み込む（ステップＡ１）。制約条件には、少なくとも、情報共有に参加するノード、各ノードの情報送信先ノード、送信する情報、送信する条件を特定するのに必要な情報が含まれる。一つの制約条件の書き方としては、下記（表１参照）のように参加ノードごとに、情報送信先ノード、送信する情報、送信する条件、を指定していく方法がある。
【００２８】
【表１】
2004171123.tif 000003
【００２９】
ここで、「ｎｏｄｅｓ＝｛１０．５６．３２．１，  １０．５６．３２．２，  …，  １０．５６．３２．８｝」は、ブレイス内に指定されたＩＰアドレス１０．５６．３２．１から１０．５６．３２．８までを有するノードが情報共有に参加することを表している。ここでは便宜上、連続するＩＰアドレスが指定されているが、任意のＩＰアドレスを指定することができる。また、表記上の簡便さのため省略した表現でノードが指定されているが、実際には、「ｎｏｄｅｓ＝｛１０．５６．３２．１，  １０．５６．３２．２，  １０．５６．３２．３，  １０．５６．３２．４，  １０．５６．３２．５，  １０．５６．３２．６，  １０．５６．３２．７，  １０．５６．３２．８｝」と記述する。ノードの指定に用いるものとしては、情報処理装置のＩＰアドレスやＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス等、各情報処理装置が一意に持つものであればよいが、ここではＩＰアドレスを用いている。また、ＩＰアドレスは、別のノード識別子であるノードＩＤに、情報管理部３５−ｋによって対応づけられている。
【００３０】
「ｎｏｄｅｓ」の指定の後に書かれているのは、「情報送信元ノードＩＤ：（送信先ノードＩＤ，送信する情報，送信する条件）」というフォーマットで記述された制約条件である。上記の条件では、ノード０は、ノード７にノード０の情報を周期１で送信し、ノード６にノード０とノード１の情報の平均を周期２で送信し、ノード４にノード０，１，２，３の情報の平均を周期４で送ることが指定されている。また、「ｐｅｒｉｏｄ＝」という記述は、情報を送信する周期を指定し、「ａｖｇ（ノードＩＤ，ノードＩＤ，…）」は、引数のノードＩＤを持つノードの情報の平均を表す。また、引数のノードＩＤを持つノードを表す情報でもある。
【００３１】
また、送信条件はセミコロンで区切って複数書ける。例えば、「ｐｅｒｉｏｄ＝４」に「ｏｆｆｓｅｔ＝１」、という条件を加えて、「ｐｅｒｉｏｄ＝４；  ｏｆｆｓｅｔ＝１」という記述をしてもよい。これは、情報送信時刻の指定を行う記述であって、前記の記述は、時刻９，１７，２５，…というように、時刻が（４ｔ＋１）の時に情報を送信することを表す（ｔは自然数）。ただし、「ｏｆｆｓｅｔ」は省略可能で、省略時には「ｏｆｆｓｅｔ＝０」が指定されているものとして扱う。さらに、「ｉｎｔｅｒｖａｌ＝４」という条件を加えて、「ｐｅｒｉｏｄ＝４；  ｏｆｆｓｅｔ＝２；  ｉｎｔｅｒｖａｌ＝８」といった記述をしてもよい。「ｉｎｔｅｒｖａｌ＝８」という条件は、最大送信間隔を指定している。最大送信間隔以下の間隔で情報が更新されている限り、情報送信元ノードに障害が起きていないことを表す。例えば、「０：（７，  ａｖｇ（０），  ｐｅｒｉｏｄ＝１；  ｉｎｔｅｒｖａｌ＝２），  （６，  ａｖｇ（０，１），  ｐｅｒｉｏｄ＝２；  ｏｆｆｓｅｔ＝１；  ｉｎｔｅｒｖａｌ＝４），  （４，  ａｖｇ（０，１，２，３），  ｐｅｒｉｏｄ＝４；  ｏｆｆｓｅｔ＝２；  ｉｎｔｅｒｖａｌ＝８）」という条件が与えられたら、ノード０がノード７に送信する情報の送信間隔が時間２よりも長くなった場合、ノード７は、ノード０に障害が起きた、と判断することを表す。同様にノード６、４は、ノード０から送信される情報の送信間隔がそれぞれ時間４、８よりも長くなった場合に、ノード０に障害が起きた、と判断する。
【００３２】
送信条件に「ｓｅｔ  ＝［０，１），  ［０．５，２），  ［１，３），  ［２，４．３），  ［３，６），  ［６，∞）」といった記述を入れて範囲指定管理部３４−ｋを用いた情報送信を行うこともできるが、これについては後述する。
【００３３】
情報管理部３５−ｋは、通信部２１−ｋを用いて、他の情報共有参加ノードにノードＩＤを送信する。通信部２１−ｋでＩＤを受信した場合は、これを情報管理部３５−ｋに渡し、情報管理部３５−ｋは、受け取ったＩＤが情報共有に参加するノードのＩＤであれば、通信部３５−ｋを用いて自ノードのＩＤをアクノレッジ（ａｃｋｎｏｗｌｅｄｇｅ）として返信する。情報共有参加ノードであるが返信を返さないノードは無効なノードと判断し、存在しないものとして扱う。無効なノードには情報を送信せず、そのノードの情報を転送することになっていても無視する。
【００３４】
そして、情報管理部３５−ｋは、ＩＰアドレスとノードＩＤの対応を通信部２１−ｋに伝える。以降、情報処理装置２−ｋが送受信するメッセージに関して、送信部２１−ｋはＩＰアドレスとノードＩＤの変換を自動的に行う（ステップＡ２）。
【００３５】
情報管理部３５−ｋは、与えられた制約条件をパースする。このとき、ノードごとに少なくとも、情報送信先ノードＩＤ、送信する情報、情報送信条件、情報送信元ノードＩＤ、受信情報が分かる。そこで情報管理部３５−ｋは、情報送信先ノードＩＤ、送信する情報、情報送信条件からなる送信リストと、受信条件、情報送信元ノード、受信情報、情報更新時刻からなる受信リストを作成する。ただし受信情報は、送信された情報がどのノードの情報に基づいたものであるかを示すので、受信情報には一つ以上のノードＩＤが入る。これらのリストを一つにしたものが情報共有リスト２４−ｋである（ステップＡ３）。情報共有リストの例を、図４に示す。ただし、「ｉｎｔｅｒｖａｌ」が送信条件として指定されていない場合は、受信条件は常に成功するように指定される。そして情報管理部３５−ｋによって、情報共有リスト２４−ｋは記憶部２３−ｋに保存される。
【００３６】
また、情報管理部３５−ｋは、制約条件をパースする際、送信条件で「ｐｅｒｉｏｄ」の指定があれば、周期指定制御部３３−ｋにタイムドリブン型の情報更新があることを、「ｓｅｔ」の指定があれば、範囲指定制御部３４−ｋにイベントドリブン型の情報更新があることを通知する。
【００３７】
ステップＡ４では、受信情報の更新と障害検出を行う。ステップＡ４での動作は、図５に示す通りである。受信情報管理部３８−ｋは、通信部２１−ｋに新たに受信した情報があるかを監視し（ステップＡ４−１）、なければ、障害検出部３６−ｋが記憶部２３−ｋに含まれる受信リストの中に受信条件を満たしていないものがあるかを調べる（ステップＡ４−５）。そして、受信条件に反するものがあればステップＡ２へ移行し、なければステップＡ７に進む。ステップＡ４−１で受信した情報があれば、障害検出部３６−ｋは、受信した情報が受信条件を満たしているかを調べ（ステップＡ４−２）、満たしていなければステップＡ２へ進む。受信条件が満たされていれば、受信情報管理部３８−ｋは、受信した情報を記憶部２３−ｋに格納し（ステップＡ４−３）、情報更新時刻を記憶部２３−ｋ内の受信リスト（上述したように受信リストは情報共有リスト２４−ｋの一部を構成している）に書き込み、更新された情報が何かを記憶する（ステップＡ４−４）。ステップＡ５−５においては更新されていない情報の受信条件も障害検出部３６−ｋが調べ、受信条件に反するものがあればステップＡ２へ進み、なければステップＡ５に進む。
【００３８】
ステップＡ５では、送信情報管理部３７−ｋによって、自ノードの情報が更新される。その後、ステップＡ６が実行される。ステップＡ６では、情報共有リスト２４−ｋに書かれる送信条件に基づいて情報送信を行う。ステップＡ６での動作は、図６に示す通りである。
【００３９】
まず、周期指定制御部３３−ｋは、タイムドリブン型の送信条件を調べる（ステップＡ６−１）。満たされた条件がなければ、ステップＡ６−４へと進む。満たされた条件があれば、その条件に対応する送信情報に対して、要約化制御部３１−ｋ及び間接転送制御部３２−ｋが演算を施し、送信情報管理部３７−ｋに渡す（ステップＡ６−２）。送信情報管理部３７−ｋは、受け取った演算結果の送信を通信部２１−ｋに依頼し、通信部２１−ｋは演算結果を他のノードに送信し（ステップＡ６−３）、ステップＡ６−４に移行する。
【００４０】
ステップＡ６−４において、範囲指定制御部３４−ｋは、ステップＡ３においてイベントドリブン型の条件があるかどうかを既に知っているから、イベントドリブン型の条件が存在しなければ、ステップＡ４に進む。イベントドリブン型の条件が存在すれば、更新された情報に対して要約化制御部３１−ｋ及び間接転送制御部３２−ｋが演算を施し、その結果を送信情報管理部に渡す（ステップＡ６−５）。範囲指定制御部３４−ｋは、その結果に対して送信条件が満たされたかどうかを調べ、満たされた条件に対応する送信情報がどれかを送信情報管理部３７−ｋに通知する（ステップＡ６−６）。送信情報管理部３７−ｋは、通知された演算結果の送信を通信部２１−ｋに依頼し、通信部２１−ｋは演算結果を他のノードに送信する（ステップＡ６−７）。そして、ステップＡ４に進む。
【００４１】
以上のようにして、この実施形態によれば、スケーラブルな情報共有が達成される。
【００４２】
【実施例】
以下、本発明について、具体的な例を挙げて説明する。以下の実施例は、上述した本発明の好ましい実施の形態に対応するものである。
【００４３】
《実施例１》
ここでは、図１に示すシステムにおいて、自ノードが持つノード情報の一部の平均を送るという制約条件を与えられて、情報共有を行うものとする。ただし、一つのノードから送る情報であっても、送信先ノードによって、平均をとるノードの集合が異なるようにしている。また、図１におけるスイッチング装置１としてスイッチを、情報処理装置２−１〜２−ｎとしてパーソナルコンピュータまたはワークステーション（ノード）を備えているものとする。
【００４４】
各ノードは、互いにバスで接続された一つ以上のネットワークカード、プロセッサ、記憶装置（キャッシュメモリ、メインメモリ、ディスク等）を有しており、これらを用いて通信部、情報制御部、記憶部が実現されている。各ノードの性能は同一であるとする。また、各ノード間の通信にかかるコストは等しく、各ノードはＩＰアドレスを持つものとする。以下、上述の実施の形態の説明にフローチャート（図３、図５、図６）に対応させながら、この実施例の説明を行う。
【００４５】
始めに、情報共有開始メッセージが、情報を共有するノード全てに送信される。以下、情報共有開始メッセージを受け取ったノードｋの動作について述べる。情報共有開始メッセージは、通信部２１−ｋから情報管理部３５−ｋに渡され、情報管理部３５−ｋは、あらかじめ記憶部２３−ｋに蓄えられたファイルから、制約条件を得る（ステップＡ１）。制約条件として以下の条件（表２参照）が与えられたとする。ただし以下に示した条件は、上述の実施の形態での制約条件、「ノードＩＤ：（送信先ノードＩＤ，送信する情報，送信する条件）」という書き方の省略形で記載されている。また、ｍｙＩＤは自ノードのＩＤを表す。
【００４６】
【表２】
2004171123.tif 000004
【００４７】
ここで「ｍｏｄｕｌｏ＝８」は、ノードＩＤの演算を法８で行うことを表す。「ｉ＝［０，２］」はｉが０，１，２の値をとることを表す。「ｃｏｎｄ＝（ｍｙＩＤ−２ｉ，  ａｖｇ（ｍｙＩＤ，  ｍｙＩＤ＋１，  …，  ｍｙＩＤ＋２ｉ−１），  ｐｅｒｉｏｄ＝２ｉ）」は、（送信先ノードＩＤ，送信する情報，送信する条件）のフォーマットで書かれた制約条件であり、ノード（ｍｙＩＤ−２ｉ）にａｖｇ（ｍｙＩＤ，  ｍｙＩＤ＋１，  …，  ｍｙＩＤ＋２ｉ−１）を周期２ｉで送信することを表す。前記のノードＩＤごとに制約条件を記述する場合と同様に、送信条件には複数の条件を記述してよい。ｉが０，１，２をとるので、上記の「ｃｏｎｄ」以下に指定された条件と「ｉｎｔｅｒｖａｌ」で指定された条件は、３つの送信先ノードに関する条件である。なお、ｉがとる値を直接指定したければ、ブレイスの中に書く。例えば、「ｉ＝［０，  １，２］」となる。なお、無効なノードＩＤは、それが存在しないものとして扱われ、送信先ノードＩＤが無効な場合、及び送信情報を提供するノードのＩＤが全て無効だった場合には、情報送信は行われない。
【００４８】
情報共有開始メッセージを受け取ったノードｋは、自ノードが情報共有に参加することが制約条件に書かれていれば、情報共有に参加することを他の情報共有参加ノードに送信する。また、他のノードから情報共有参加メッセージを受け取ったらアクノレッジを返信する。参加メッセージの返信を受け取ったら、返信したノードをＩＰアドレス順にソートして、ソートした順にＩＰアドレスをノード０、ノード１、…、と対応させる。上記動作のうち、情報の送受信は通信部２１−ｋで、それ以外の動作は情報管理部３５−ｋで行われる。また、参加メッセージを送っても返信しないノードがあれば、例えばＩＰアドレスが１０．５６．３２．４のノードが返信してこなかった場合、そのＩＰアドレスを飛ばして次のＩＰアドレスである１０．５６．３２．５のノードにＩＤとして３が割り当てられる、というようにする。そして、通信部２１−ｋにノードＩＤとＩＰアドレスの対応表を送る。通信部２１−ｋは、以降は送られた対応表にしたがってＩＰアドレスとノードＩＤの変換を自動的に行う（ステップＡ２）。
【００４９】
上記制約条件を満たし、８ノードで情報を共有する場合を図７に図示する。図７では、ノードｋを向く矢印が、実線であればノードｋ＋１の情報の流れを、長鎖線であればノードｋ＋２，ｋ＋３の情報の平均の流れを、点線であればノードｋ＋４，ｋ＋５，ｋ＋６，ｋ＋７の情報の平均の流れをあらわしている。図７は、実施例１におけるデータの流れを示している。
【００５０】
情報管理部３５−ｋは、上記の制約条件をパースして、情報共有リスト２４−ｋを作成する。与えられた情報送信条件は、送信先ノードによらず時刻１０００ｔ（ｔは自然数、また、以降は時間の単位をｍｓとする）において情報を送信する、となっているので、ノードｋは送信条件でまとめて、「送信条件：（送信先ノードＩＤ，送信する情報），（送信先ノードＩＤ，送信する情報），…」という形の以下の送信リストを作る。
【００５１】
ｃｕｒｒｅｎｔ＞＝１０００ｔ：  （ｋ−１，  ａｖｇ（ｋ）），  （ｋ−２，  ａｖｇ（ｋ，ｋ＋１）），  （ｋ−４，  ａｖｇ（ｋ，ｋ＋１，ｋ＋２，ｋ＋３））
ただし、「ｃｕｒｒｅｎｔ＞＝１０００ｔ」は、現在時刻が１０００ｔよりも大きければ成り立つ送信条件であり、送信条件が成り立った時に、コロン以下に書かれた送信先ノードに情報を送信する。情報管理部３５−ｋは、上記制約条件をパースしているときに、タイムドリブン型の情報更新があることを周期指定制御部３３−ｋに通知する。イベントドリブン型の情報更新はないので、範囲指定制御部３４−ｋには何も通知されない。
【００５２】
また、情報管理部３５−ｋは、「受信条件：（情報送信元ノードＩＤ、受信情報、情報更新時刻），（情報送信元ノードＩＤ、受信情報、情報更新時刻），…」という形の以下の受信リストも作る。
【００５３】
２０００：  （ｋ＋１，  （ｋ＋１），  ｌａｓｔｋ＋１），  （ｋ＋２，  （ｋ＋２，  ｋ＋３），  ｌａｓｔｋ＋２），  （ｋ＋４，  （ｋ＋４，  ｋ＋５，  ｋ＋６，  ｋ＋７），  ｌａｓｔｋ＋４）
ただし、受信条件で指定されているのは最大更新間隔であり、最大更新間隔より長い間隔において情報更新がなければ、情報送信元ノードに障害が起きたとみなす。また、受信情報には、送られた情報がどのノードの情報に基づいて作られたかが書かれている。例えば、ノードｋ＋２から送られた情報はノードｋ＋２とｋ＋３の情報に基づいたものであることを、上記の受信リストは表わしている。また、ｌａｓｔｋ＋１はノードｋ＋１から受け取った情報の更新時刻を表す。更新時刻の初期値は０である（ステップＡ３）。
【００５４】
ステップＡ４では、受信情報管理部３８−ｋは、新たに受信した情報があるかを調べる（ステップＡ４−１）。新たな受信情報がなければステップＡ４−５に進み、新たな受信情報があれば、障害検出部３６−ｋがその情報の受信条件、すなわち時間２０００よりも長い間情報が更新されていないかを受信リスト中の情報更新時刻を用いてチェックする。時間２０００以上にわたって情報が更新されていなければ、ステップＡ２からやり直す（ステップＡ４−２）。正しく情報が更新されていれば、受信情報管理部３８−ｋは、通信部２１−ｋから受信した情報を受け取って記憶部２３−ｋに格納する（ステップＡ４−３）。さらに、受信情報管理部３８−ｋは、更新時刻も記憶部２３−ｋに書き込み、どのノードから受け取った情報が更新されたのかを覚えておく（ステップＡ４−４）。ステップＡ４−５では、障害検出部３６−ｋが、更新されていない情報で時間２０００より長い間更新されていないものがあるかをチェックする。もしあれば、その情報の送信元ノードに障害が発生したとみなして、ステップＡ２へ進む。全ての受信条件が満たされていれば、つまり全ての情報の更新間隔が２０００以下であれば、ステップＡ５に進む。
【００５５】
ステップＡ５では、受信情報管理部３８−ｋが、自ノードの情報を更新する。そしてステップＡ６では、情報送信を行う。時刻が１０００ｔを過ぎると送信条件が満たされる（ただし、ｔは情報送信が行われる度に周期指定制御部３３−ｋによってインクリメントされ、ｔの値は周期指定制御部３３−ｋによって保持される）が、満たされた条件の検出は周期指定制御部３３−ｋによって行われる。満たされた送信条件がなければステップＡ６−４に進む（ステップＡ６−１）。満たされた条件があれば、間接転送制御部３２−ｋが、送信する情報を作成するのに必要な情報を要約化制御部３１−ｋに渡す。例えば、この実施例の送信条件が満たされるときにはノードｋ−１に自ノードの情報を送信することが情報共有リスト２４−ｋから分かるので、間接転送制御部３２−ｋは、自ノードの情報を要約化制御部３１−ｋに渡すように、受信情報管理部３８−ｋに依頼する。要約化制御部３１−ｋは、受け取った情報の平均をとり、これを送信情報管理部３７−ｋに送る。また、ノードｋ−２に自ノードとノードｋ＋１の情報を送るので、間接転送制御部３２−ｋは、自ノードの情報とノードｋ＋１から受け取った情報を要約化制御部３１−ｋに送るように、受信情報管理部３８−ｋに依頼する。要約化制御部３１−ｋは、受け取った情報の平均をとり、これを送信情報管理部３７−ｋに送る。そして、ノードｋ−４に自ノードとノードｋ＋１，ｋ＋２，ｋ＋３の情報を送るので、間接転送制御部３２−ｋは、自ノードの情報とノードｋ＋１，ｋ＋２から受け取った情報を要約化制御部３１−ｋに送るように、受信情報管理部３８−ｋに依頼する。要約化制御部３１−ｋは、受け取った情報の平均をとる。ただしこの時、ノードｋ＋２から受け取った情報はノードｋ＋２，ｋ＋３の情報の平均なので、自ノードの情報とノードｋ＋１から受け取った情報とノードｋ＋２から受け取った情報を２倍したものを足して、４で割った値が平均となる。これを送信情報管理部３７−ｋに送る（ステップＡ６−２）。
【００５６】
送信情報管理部３７−ｋは、要約化制御部３１−ｋから受け取った情報を、通信部２１−ｋに送って、情報共有リスト２４−ｋに指定されたノードへ送信する（ステップＡ６−３）。
【００５７】
ここでは、範囲指定制御部３４−ｋは、イベントドリブン型の送信条件はないこと（ステップＡ３で情報管理部から何の通知も受けていないこと）を知っているので、ステップＡ４に戻る（ステップＡ６−４）。
【００５８】
このようにしてこの実施例１ではスケーラブルな情報共有が行われる。
【００５９】
従来の情報共有方法の１つであるＦＬＡＴでは、全対全の通信が行われるので、一周期あたりの情報送信回数は、８×８＝６４となるが、実施例１の方法では、８  ｌｏｇ２  ８＝２４にしかならない。また、ノード数がｎ個の時には、制約条件において、
【００６０】
【数１】
2004171123.tif 000005
【００６１】
という指定を行うことにより、情報共有コストをＯ（ｎ２）からＯ（ｎ  ｌｏｇ  ｎ）に削減できる。この情報共有コストの削減は、要約化制御部３１−ｋによるものである。一方で、送信先ノードによって異なる要約化を行うことは、送信先ノードによって異なる情報を転送することを意味する。間接転送制御部３２−ｋは、この機能を要約化制御部３２−ｋに提供する。
【００６２】
この実施例の情報共有方法の実行中に負荷の不均衡が生じ、負荷分散を行う場合について考える。負荷分散アルゴリズムとしては、Ｊ．  Ａ．  Ｓｔａｎｋｏｖｉｃの論文、「Ｓｉｍｕｌａｔｉｏｎｓ  ｏｆ  Ｔｈｒｅｅ  Ａｄａｐｔｉｖｅ  Ｄｅｃｅｎｔｒａｌｉｚｅｄ  Ｃｏｎｔｒｏｌｌｅｄ，  Ｊｏｂ  ＳｃｈｅｄｕｌｉｎｇＡｌｇｏｒｉｔｈｍｓ」、Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋｓ，  ８（３），  ｐｐ．  １９９−２１７，  Ｊｕｎｅ，  １９８４（非特許文献２）、で用いられるアルゴリズム（以下、これをＳＴＡＮＫＯＶＩＣと呼ぶ）を適用する。ＳＴＡＮＫＯＶＩＣでは、最もタスク数が少ないノードと自ノードが持つタスク数の差がある値ｂｉａｓ以上であれば、タスクが一つ移送される。簡便のため、ここではｂｉａｓ＝２を仮定する。ｂｉａｓ＝１とするとタスクの移送が繰り返されることがある。
【００６３】
ノードｋが持つタスクの数をｘ（ｋ）と書き、｛ｘ（０），ｘ（１），…，ｘ（７）｝という形でシステムの負荷の状態を表すとする。そして、２のｄ乗個のノードの情報を要約化して送るノードは距離ｄにあるとする。ただし、情報更新周期は十分細かい、つまり正しい情報が得られるとする。まず、距離１のノードの間でのみタスクの移送が生じるケース、例えば負荷が｛７，１，６，２，５，３，４，４｝を考える。このときノード０が持つ情報は、「ａｖｇ（１）＝０，  ａｖｇ（２，  ３）＝４，  ａｖｇ（４，  ５，  ６，  ７）＝４」であるので、ノード０からノード１へタスクが一つ移送される。同様に各ノードについて考えて、｛６，２，５，３，４，４，４，４｝という負荷状態になる。負荷が完全に均衡しているケースは｛４，４，４，４，４，４，４，４｝であり、上記状態を完全均衡するために動かさなければならないタスクの最小数（以下、これを不均衡数と呼ぶ）は３である。ところが、上記情報共有方法と同様の周期で、従来技術であるＦＬＡＴで情報共有を行うとすると、ノード３以外のノードがノード１にタスクを一つずつ移送するので、｛６，７，５，２，４，２，３，３｝となって、不均衡数は６である。このケースでは、実施例１の情報共有方法によって、より少ないコストでより均衡した負荷が実現される。これは、情報を要約化していることに起因する。情報量が削減されているにもかかわらず負荷の均衡をとることができるのは、送信先ノードごとに異なる精度の情報を送信することで、ノードごとに異なるシステム負荷イメージを持っていることに起因する。一つの低負荷なノードと多数の高負荷なノードがある場合に、従来技術のように、各ノードが同一の情報に基づいて負荷分散を行うとすると、たとえ正確な情報に基づいて負荷分散を行っていても、低負荷なノードにいっせいにタスクが移送され、あまり負荷の均衡がとれない、ということが起こる。
【００６４】
さらに、距離２でのタスクの移送が生じるケース、例えば負荷が｛７，６，１，２，５，４，４，３｝であるケースを考える。これは距離１でのタスクの移送のみが生じる負荷の例、｛７，１，６，２，５，３，４，４｝の順序を入れ替えたものである。ＦＬＡＴを情報共有方法としている場合は、不均衡数はノードＩＤと負荷の組み合わせに依存しないので、不均衡数は変わらず６である。実施例１の情報共有方法においては、ノード０が持つ情報は、「ａｖｇ（１）＝６，  ａｖｇ（２，  ３）＝１．５，  ａｖｇ（４，  ５，  ６，  ７）＝４」なので、ノード０からノード２（各距離の情報送信ノードをタスク移送先として選択する方針をとっている）にタスクが一つ移送される。そして各ノードの振る舞いを考えると、最終的に｛６，５，３，２，５，４，４，３｝となり、不均衡数は４となる。不均衡数の悪化は不正確な情報に基づいたタスク移送を行ったことに起因するが、それでもＦＬＡＴの不均衡数よりはよいし、情報共有コストも低いままである。
【００６５】
距離３でのタスクの移送が生じるケース、例えば負荷が｛７，６，５，４，４，３，２，１｝であるケースを考える。ノード０が持つ情報は「ａｖｇ（１）＝６，  ａｖｇ（２，  ３）＝４．５，  ａｖｇ（４，  ５，  ６，  ７）＝３」であるため、ノード０からノード４へ一つタスクが移送される。各ノードの振る舞いを同様に考えて、｛６，５，５，４，５，４，２，１｝が最終的な負荷の状態となり、実施例１による不均衡数は５となる。距離２でのタスク移送を行った場合と同様、不均衡数の悪化は不正確な情報に基づいたタスク移送を行ったことに起因するが、それでも従来技術であるＦＬＡＴの不均衡数よりはよいし、情報共有コストも低いままである。
【００６６】
本実施例では、負荷分散において上述した情報共有方法を用いて、情報共有コストをＯ（ｎ２）からＯ（ｎ  ｌｏｇ  ｎ）  に削減したにもかかわらず、負荷の均衡はより強く図られた。これは、局所的な負荷の均衡を正確な情報に基づいてとり、大域的な負荷の均衡は精度の低い情報に基づいて行うことと、ノードごとに異なるシステムの負荷イメージを持たせることが、情報制御部２２−ｋにより送信先ノードによって異なる精度の情報を送ることで、可能となっているためである。
【００６７】
《実施例２》
実施例２では、周期的に情報を更新するが、あるノードから複数のノードに情報を送信するにあたっては送信先ノードによっては周期が異なる、という制約条件が与えられて、情報共有を行う。構成要素、動作において、実施例１と実施例２の違いは、情報共有リスト２４−ｋの構成とステップＡ４−２、ステップＡ４−５、ステップＡ６−１での処理のみであるので、これらについてのみ述べる。
【００６８】
今、以下（表３参照）の制約条件が与えられたとする。
【００６９】
【表３】
2004171123.tif 000006
【００７０】
このときのノードｋへの情報の流れは図８に示す通りとなる。実施例１と同様に、ノードｋにおいて以下（表４参照）の情報共有リストを作成する。
【００７１】
【表４】
2004171123.tif 000007
【００７２】
また、実施例１と同様に受信リストも作る。ただし、受信条件が２周期以内に情報を受け取ることなので、送信元ノードごとに成功とみなされる情報受信間隔が異なることとなり、この情報受信間隔で受信情報を分ける。すると、以下（表５）のリストが作成できる。
【００７３】
【表５】
2004171123.tif 000008
【００７４】
実施例１のステップＡ４−２、Ａ４−５では、一つの受信条件に基づいて障害を検出していたが、本実施例では、送信元によって異なる受信条件が設定され、障害検出部３６−ｋは複数の受信条件をチェックする。
【００７５】
実施例１のステップＡ６−１においては送信条件が単一の周期であったが、実施例２のステップＡ７−１では送信条件は複数の周期であり、周期指定制御部３３−ｋはこれらの条件が成り立っているかをチェックする。周期指定制御部３３−ｋは、時刻５００ｔ１，１０００ｔ２，２０００ｔ３が現在時刻以上となったときに送信条件の成立を検出する。ただし、ｔ１，ｔ２，ｔ３は、現在時刻が５００ｔ１，１０００ｔ２，２０００ｔ３以上になった時に、それぞれ周期指定制御部３３−ｋによってインクリメントされる。
【００７６】
本実施例では、実施例１のようには送信情報の平均をとっていないが、送信ノードの情報を平均の代わりに代表値として用いている。例えば、ノードｋ＋９がノードｋに送る情報はノードｋ＋９の情報であるが、ノードｋ＋９〜ｋ＋１７の情報の平均をノードｋ＋９の情報で置き換えるとすれば、本実施例では各ノードが他の全ノードの情報を集めていることとなる。このような方法が有効な例として、ノードｋ＋９〜ｋ＋１７のＣＰＵレディキューの長さを情報として共有するとし、ノード番号が近いノードの間でＣＰＵ負荷の均衡がよく取られているケースがある。なぜならば、ノードｋ＋９〜ｋ＋１７のＣＰＵレディキュー長の平均と、ノードｋ＋９のＣＰＵレディキュー長の差は少ないと考えられるからである。
【００７７】
この実施例２では２７ノードで情報共有を行っているので、従来技術であるＦＬＡＴで情報共有を行い、周期５００（本実施例の方法における最短の情報送信周期と等しい周期）で情報更新を行う場合、２７×２７＝７２９で５００ｍｓあたり７２９ノードへの情報の送受信が行われる。一方、本実施例の方法では、２７×（２×１＋２×０．５＋２×０．２５）＝９４．５で、５００ｍｓあたり９４．５ノードへの情報の送受信を行うだけで済む。また、ノード数がｎの時には、制約条件において、
【００７８】
【数２】
2004171123.tif 000009
【００７９】
という指定を行うことになる。この時、従来技術であるＦＬＡＴの情報共有コストはＯ（ｎ２）であるのに対し、この実施例２の方法のコストはｏ（ｎ）である。なぜなら、送信先ノードが増えても情報送信周期を倍の長さにするため、情報共有コストは、ｎ×２×（（１−（１／２）ｎ）／（１−１／２））＜ｎ×２×２＝４ｎで抑えられるためである。一部のノードの情報は、実施例１と同様に、ＦＬＡＴで情報共有を行った場合と同じ精度で共有される。
【００８０】
従来技術であるＦＬＡＴにおける周期とこの実施例の方法における最短の情報送信周期が等しい場合、この実施例では、１ノード及び２ノードの同時障害はＦＬＡＴと同じ時間で検出できる。ただし、３ノード及び４ノードの同時障害はＦＬＡＴの２倍、５ノード及び６ノードの同時障害は４倍の検出時間がかかる。これは情報共有コストを削減したために生じることであるが、３、４ノードの同時障害が起きる確率は相当に小さく、万が一それが起きたときには長い時間がかかってもこれを検出したい、という要求に答えることができる。５、６ノードの同時障害はより低い確率でおきるため、検出までにはさらに長い時間を要する。しかしながら、障害のほとんどのケースを占めるであろう１，２ノードの障害検出に関しては、情報共有コストが削減されているにもかかわらず、ＦＬＡＴと同様に行える。
【００８１】
《実施例３》
実施例３では、タイムドリブン型の周期的な情報更新ではなく、情報の値が変化したときに情報を更新するイベントドリブン型の送信条件が与えられた場合の情報共有について述べる。
【００８２】
この実施例では、ステップＡ１においては実施例１に書かれた動作と同様の動作を行うが、図１のスイッチング装置１としてスイッチを仮定し、各ノード間の通信コストは同等であるとしていた実施例１とは異なり、スイッチング装置１が５つの８ポートスイッチとそれらをつなぐ上位のスイッチからなり、８ポートスイッチを越える通信には上位スイッチを経由する通信コストが付加されるものとする。そして、ここではＩＰアドレスで表わされる合計４０個のノード１０．５６．３２．１〜１０．５６．３２．８，１０．５６．３２．９〜１０．５６．３２．１６，１０．５６．３２．１７〜１０．５６．３２．２４，１０．５６．３２．２５〜１０．５６．３２．３２，１０．５６．３２．３３〜１０．５６．３２．４０がそれぞれ５つの８ポートスイッチに接続され、同じ８ポートスイッチに接続されたノード同士でノードグループを作るとする。
【００８３】
今、以下（表６参照）の制約条件が与えられたとする。
【００８４】
【表６】
2004171123.tif 000010
【００８５】
この制約条件は、グループ内のノードには、自ノードの情報を、「ｓｅｔ＝［０，１），［１，３），  ［３，６），  ［６，∞）」という条件で送信することを、また、グループでｉ番目に若いＩＤを持つノードは、他のグループのｉ番目に若いＩＤを持つノードに、自ノードの情報を、「ｓｅｔ＝［０，２），  ［２，６），  ［６，１０），  ［１０，∞）」という条件で送信することを表している。上記では、前述した実施の形態と同様のフォーマットで制約条件を記述しているが、煩雑さを避けるため、ノード０とノード３９に対する制約条件を書くにとどめる。このときのノードｋへの情報の流れは図９に示す通りである。
【００８６】
送信条件に関しては、送信先ノードが同じグループ内である場合には、「ｓｅｔ＝［０，１），  ［１，３），  ［３，６），  ［６，∞）」となっている。これは、情報の値は０以上１未満、１以上３未満、３以上６未満、６以上、の四つの状態のいずれかに属するものとして、情報の値が異なる状態に移った時に満たされる条件である。例えば、ノード情報の値が２であれば、１以上３未満の状態に属しているが、その値が３に変化すると、３以上６未満という異なる状態に変化する。このとき、条件「ｓｅｔ＝［０，１），  ［１，３），  ［３，６），  ［６，∞）」が満たされる、と定める。また、送信条件にｓｅｔの記述があるので、情報管理部３５−０は、範囲指定制御部３４−０にイベントドリブン型の送信条件があることを通知する。
【００８７】
ここで、「ｘ（０）＝［０，１），  ｘ（１）＝［１，３），  ｘ（２）＝［３，６），  ｘ（３）＝［６，∞）」と、状態ｓｔａｔｅ（＝０，  １，  ２，  ３）に対して集合ｘ（ｓｔａｔｅ）を定め、ノード情報の値がｘ（ｓｔａｔｅ）に属するときに、その値はｘに関して状態ｓｔａｔｅをとる、という言い方をする。例えば、２はｓに関して状態１をとる、という。すると、送信条件「ｓｅｔ＝［０，１），  ［１，３），  ［３，６），  ［６，∞）」は、状態に対する集合を定め（上記のｘ（ｓｔａｔｅ））、変化する値に対して直前の状態がｓｔａｔｅであったとすると、現在の値がｓｔａｔｅに属していないときに成立する条件である。なお、状態に対する集合は、各状態に対する集合の和が値の値域を包含し、範囲指定制御部３４−ｋが、値から一意に値が属する状態を判別できれば、自由に決めることができる。
【００８８】
上記の制約条件では、二種類のｓｅｔの指定、つまり送信条件がある。そこで、状態に対する集合ｘ（ｓ），ｙ（ｓ）を次のように生成する（ただし、ｓ＝０，１，２，３）。ｘ（ｓ），ｙ（ｓ）がどのような集合なのかは、範囲指定制御部３４−ｋに記憶される。
【００８９】
ｘ（０）＝［０，１），  ｘ（１）＝［１，３），  ｘ（２）＝［３，６），  ｘ（３）＝［６，∞）
ｙ（０）＝［０，２），  ｙ（１）＝［２，６），  ｙ（２）＝［６，１０），  ｙ（３）＝  ［１０，∞）
そして、以下の情報共有リストを作成する（図３のステップＡ３。ステップＡ１、ステップＡ２については、実施例１と同様）。ただし煩雑さを避けるため、ノード０の情報共有リストの作成についてのみ述べる。まず、送信リストは以下（表７参照）の通りである。
【００９０】
【表７】
2004171123.tif 000011
【００９１】
ただし、上記条件のチェックは、ノード０の情報ａｖｇ（０）の値が変化した時に行われる。上記のａｖｇ（０）は、値が変化した直後（現在）のａｖｇ（０）であり、ｓｔａｔｅは値が変化する直前（前回チェック時）のａｖｇ（０）のｘに関する状態を表す。同様に、ｇ−ｓｔａｔｅは過去のａｖｇ（０）のｙに関する状態を表す。ｓｔａｔｅ，ｇ−ｓｔａｔｅの値に関しては、範囲指定制御部３４−０が検出し、記憶する。
【００９２】
受信リストは以下の通りである。ただし、受信条件の「∞」は、常に成立する条件を表す。
∞：  （１，（１），ｌａｓｔ１），  （２，（２），ｌａｓｔ２），  （３，（３），ｌａｓｔ３），  （４，（４），ｌａｓｔ４），  （５，（５），ｌａｓｔ５），  （６，（６），ｌａｓｔ６），  （７，（７），ｌａｓｔ７），  （８，（８），ｌａｓｔ８），  （１６，（１６），ｌａｓｔ１６），  （２４，（２４），ｌａｓｔ２４），  （３２，（３２），ｌａｓｔ３２）
ステップＡ４、ステップＡ５に関しては、実施例１と同様である。その後、ステップＡ６においては、周期指定制御部３３−０がタイムドリブン型の条件チェックを行うが、この実施例では、タイムドリブン型の条件がないことを周期指定制御部３３−０は既に知っているので、ステップＡ６−４に進む（ステップＡ６−１）。また、範囲指定制御部３４−０はイベントドリブン型の条件があることをステップＡ３で知っているので、ステップＡ６−５に進む（ステップＡ６−４）。
【００９３】
そして間接転送制御部３２−０は、受信情報管理部３８−０に更新された情報を問い合わせ、更新された情報を含む送信情報の更新を、要約化制御部３１−０に依頼する。要約化制御部３１−０は、演算結果を送信情報管理部３７−０に渡す（ステップＡ６−５）。範囲指定制御部３４−０は、各イベントドリブン型の送信条件が満たされたかどうかの判定を行う。ここで、範囲制定制御部３４−０は、前回条件チェック時のｓｔａｔｅとｇ−ｓｔａｔｅとを記憶しており、値が属していた状態を判別できるので、前回条件チェック時の値が属する状態に、現在の値も属するかどうかを判定する。なお、範囲指定制御部３４−０は、状態変化が起きて送信条件が成立したら、記憶している状態を更新する（ステップＡ６−６）。そして、送信情報管理部３７−０に、状態が変化した情報の送信を依頼し、送信情報管理部３７−０は通信部２１−０に送信する情報を渡す（ステップＡ６−７）。
【００９４】
この実施例３の情報共有方法では、グループ間をまたぐ情報更新の頻度は、グループ内の情報更新の頻度以下である。なぜなら、任意の値ａが与えられて、ａがｘ（ｓｔａｔｅ）かつｙ（ｇ−ｓｔａｔｅ）に属するとすると、任意のａの変化に対して、ｇ−ｓｔａｔｅが変化すればｓｔａｔｅも必ず変化するためである。これは、グループ内のノード間での情報共有を緊密に行いつつ、上位スイッチのトラフィックを削減するためである。このようなことができるのは、情報送信先ノードごとに異なるイベントで情報を送信できるようにする範囲指定制御部３４−０があるからである。
【００９５】
タイムドリブン型の情報更新では、不要なつまり情報が変化していない時に情報更新を行ってしまう一方で、送信時刻が来ないと情報の変化を送信できない、という欠点がある。この実施例で述べたイベントドリブン型情報更新方法によれば、このタイムドリブン型の情報更新方法が有する問題点は解決する。
【００９６】
《実施例４》
実施例４では、自ノードが持つノード情報の一部の平均を送るという制約条件が与えられて、情報共有を行う。ただし、一つのノードから送る情報であっても、送信先ノードによって、平均をとるノードの集合が異なっている。また、周期的に情報を更新するが、あるノードから複数のノードに情報を送信するにあたっては、送信先ノードによって周期が異なる。実施例２と異なるのは、制約条件と情報共有リストの作成（ステップＡ３）であるので、与えられる制約条件と情報共有リストの作成方法についてのみ述べる。また、ステップＡ７では、実施例２では行われていない情報の平均をとるという操作を加えるが、これについては実施例１で述べられているので、説明を省略する。
【００９７】
今、以下（表８参照）の制約条件が与えられたとする。
【００９８】
【表８】
2004171123.tif 000012
【００９９】
このときのノードｋへの情報の流れは、図１０に示す通りとなる。そして、情報共有リストに含まれる送信リスト作成すると、以下（表９参照）のようになる。
【０１００】
【表９】
2004171123.tif 000013
【０１０１】
そして、以下（表１０参照）の受信リストが作成できる。
【０１０２】
【表１０】
2004171123.tif 000014
【０１０３】
この実施例４は、実施例１と実施例３が有する利点を併せ持っている。
【０１０４】
《実施例５》
実施例５では、自ノードが持つノード情報の一部の平均を送るという制約条件を与えられて、情報共有を行う。ただし、一つのノードから送る情報であっても、送信先ノードによって、平均をとるノードの集合が異なる。また、情報更新はイベントドリブンで行う。実施例３とこの実施例５との違いは、制約条件と情報共有リスト（ステップＡ３）であるので、制約条件と情報共有リストの作成方法について述べる。また、ステップＡ７では実施例３では行われていない情報の平均をとるという操作を加えるが、これについては実施例１で述べられているので、説明を省略する。
【０１０５】
今、以下（表１１参照）の制約条件が与えられたとする。
【０１０６】
【表１１】
2004171123.tif 000015
【０１０７】
このときのノードｋへの情報の流れは、図１１に示す通りとなる。また、ノードの情報はスカラー値で表されるとする。ｓｔａｔｅ，ｇ１−ｓｔａｔｅ，ｇ２−ｓｔａｔｅは、それぞれａｖｇ（ｋ），  ａｖｇ（ｋ，ｋ＋１，ｋ＋２，ｋ＋３），  ａｖｇ（ｋ，ｋ＋１，  …，  ｋ＋１１）の更新前の状態であり、ｓｔａｔｅに対して集合ｘ（ｓ）を、ｇ１−ｓｔａｔｅとｇ２−ｓｔａｔｅに対して集合ｙ（ｓ）を生成する（ｓ＝０，１，…，５）。実施例３では、記憶すべき状態の数は２つであったが、本実施例では、ｓｔａｔｅ，ｇ１−ｓｔａｔｅ，ｇ２−ｓｔａｔｅの三つである。これは、記憶すべき状態の数が、ｃｏｎｄで指定される送信情報とｓｅｔで指定される送信条件との組み合わせの数に等しいためである。
【０１０８】
【表１２】
2004171123.tif 000016
【０１０９】
上記のようにｘ（ｓ）が与えられると、ｓ’（ｓ’≠ｓ）に対して、ｘ（ｓ）とｘ（ｓ’）のインターセクション（共通集合）は空集合ではない。したがって、ノードの情報の値が属する状態が、その値とｘだけからでは一意に決まらない。しかし、ノードの情報の値が変化する直前にとっていた状態がｄであり、ノードの情報の値が、変化後に、ｘ（ｅ１），…，ｘ（ｅｍ）に含まれるとすると、ノードの情報の値の変化後の状態は｜ｓ−ｅｉ｜を最小にするｅｉであるとして、実施例３においてだけではなく、この実施例５においても、ノードの情報の値が属する状態は一意に定まる。ｙ（ｓ）についても同様である。範囲指定制御部３４−ｋは、ｓｔａｔｅとｇ１−ｓｔａｔｅ，ｇ２−ｓｔａｔｅを記憶しているので、上記のノード情報の値が属する状態を決定する。
【０１１０】
その結果、情報共有リストに含まれる送信リストは以下（表１３参照）のようになる。
【０１１１】
【表１３】
2004171123.tif 000017
【０１１２】
受信リストは、以下（表１４）の通りとなる。
【０１１３】
【表１４】
2004171123.tif 000018
【０１１４】
実施例５は、実施例１と実施例３が有する利点を併せ持つだけでなく、状態に対して定められる集合がインターセクションを有する、という利点も有する。インターセクションを持たない集合を定めると、集合の境界をまたいでノード情報の値が小さく頻繁に変化した場合に、値の変化が小さいにも関らず、情報送信が頻繁に行われてしまう。状態に対して定められる集合にインターセクションを持たせたこの実施例では、状態の変化時に集合の境界も変化するため、上記の問題を解決できる。例えば上記ｘ（ｓ）からインターセクションを除いて、次のようにｘ’（ｕ）を作る（ｕ＝０，１，２，３）。
【０１１５】
ｘ’（０）＝［０，１），  ｘ’（１）＝［１，３），  ｘ’（２）＝［３，  ６），  ｘ’（３）＝［６，∞）
すると、情報の値が２と３を交互にとった場合、ｘ’に関する状態は値が変化するたびに１と２の状態を交互に変化し、頻繁に情報送信が起こる。一方、ｘに関する状態に関しては、情報の値が最初に属する状態から状態３への変化は起こりえるが、その後は状態変化が起こらず、結果的に情報送信の頻度が減る。
【０１１６】
《実施例６》
実施例６では、自ノードが持つノード情報の一部の平均を送るという制約条件が与えられて、情報共有を行う。ただし、一つのノードから送る情報であっても、送信先ノードによって、平均をとるノードの集合が異なる。また、ノードの情報そのものではなくノード情報の集合を考え、情報がどの集合に属するかをイベントドリブンで更新する。ただし送信先ノードによって、これらの情報の集合の決められ方は異なる。さらに、送信先ノードによっては周期的な情報更新を行い、この周期も情報送信先ノードによって異なる。実施例５とこの実施例６の違いは、制約条件と情報共有リスト（ステップＡ３）であるので、制約条件と情報共有リストの作成方法のみについて述べる。また、ステップＡ６では実施例５では行われていないイベントドリブン型の情報送信に加えてタイムドリブン型の情報送信が行われるので、実施例５では行われなかった図６のステップＡ６−２とＡ６−３の処理が追加される。ここでの処理は実施例２と同様に行う。
【０１１７】
今、以下（表１５参照）の制約条件が与えられたとする。
【０１１８】
【表１５】
2004171123.tif 000019
【０１１９】
この制約条件下でのノードｋへの情報の流れは、図１２に示す通りである。そして、実施例２，３にならって、この制約条件から、情報共有リストに含まれる送信リストを作成する。ただし、ｓｔａｔｅはａｖｇ（ｋ）がｘに関してとる状態であり、ｇ−ｓｔａｔｅはａｖｇ（ｋ，  ｋ＋１）がｙに対してとる状態である。ｘ，ｙに関しては実施例５と同様である。
【０１２０】
【表１６】
2004171123.tif 000020
【０１２１】
そして、以下（表１７参照）の受信情報のリストも作成できる。
【０１２２】
【表１７】
2004171123.tif 000021
【０１２３】
この実施例６は、実施例４，５が有する利点を併せ持ち、タイムドリブン型の情報更新が適切なノードにはタイムドリブン型の情報更新を、イベントドリブン型の情報更新が適切なノードにはイベントドリブン型の情報更新を適用できる。
《実施例７》
実施例７では、自ノードが持つノード情報の一部の平均を送るという制約条件が与えられて、情報共有を行う。ただし、一つのノードから送る情報であっても、送信先ノードによって、平均をとるノードの集合が異なる。また、ノードの情報そのものではなくノード情報の集合を考え、情報がどの集合に属するかをイベントドリブンで更新する。送信先ノードによっては周期的な情報更新を行い、周期的な情報更新とイベントドリブンで行われる情報更新とが併用される。実施例６とこの実施例７との違いは、制約条件と情報共有リスト（ステップＡ３）のところのみであるので、制約条件と情報共有リストの作成方法のみについて述べる。
【０１２４】
今、以下の制約条件が与えられたとする。
【０１２５】
【表１８】
2004171123.tif 000022
【０１２６】
この制約条件下での情報の流れは、図３に示す通りとなる。そしてこの制約条件から、以下（表１９参照）の送信リストが作成される。
【０１２７】
【表１９】
2004171123.tif 000023
【０１２８】
そして、以下（表２０参照）の受信情報のリストも作る。
【０１２９】
【表２０】
2004171123.tif 000024
【０１３０】
実施例６では、一つの情報送信先ノードに対しては、タイムドリブン型またはイベントドリブン型のいずれか一方の送信条件しか指定されていなかったが、この実施例７では、一つの情報送信先ノードに対して、タイムドリブン型とイベントドリブン型の送信条件の両者が指定されている。このことによって、周期よりも短い時間における情報の変化を知ることができる。さらに、イベントドリブン型の情報更新方法では、情報が送信されないのは情報の変化がないからなのかそれとも障害が発生しているかを見分けることができないために障害検出はできなかったが、本実施例では、タイムドリブン型の情報更新も併せて行うため、障害検出が可能となっている。
【０１３１】
《実施例８》
実施例８では、実施例１において、送信先ノードによって周期の開始時刻をずらした場合について述べる。実施例１とこの実施例８との違いは、制約条件と情報共有リスト（ステップＡ３）のところのみであるので、制約条件と情報共有リストの作成方法のみについて述べる。
【０１３２】
今、以下（表２１参照）の制約条件が与えられたとする。
【０１３３】
【表２１】
2004171123.tif 000025
【０１３４】
ここで、「ｐｅｒｉｏｄ＝１０００，  ｏｆｆｓｅｔ＝４００」というのは、時刻１０００ｔ＋４００において情報送信を行うことを表す。上記制約条件から以下（表２２参照）の送信リストを作成する。
【０１３５】
【表２２】
2004171123.tif 000026
【０１３６】
その結果、受信リストは、以下の通りとなる。
２０００：  （ｋ＋１，（ｋ＋１），ｌａｓｔｋ＋１），  （ｋ＋２，（ｋ＋２，ｋ＋３），ｌａｓｔｋ＋２），  （ｋ＋４，（ｋ＋４，ｋ＋５，ｋ＋６，ｋ＋７），ｌａｓｔｋ＋４）
この実施例８において、全てのｏｆｆｓｅｔを同じ値にして情報の転送を行うと、ノードｋがノードｋ−４に送る情報は、現在のノードｋの情報と、１０００ｍｓ前のノードｋ＋１の情報と、１０００ｍｓ前のノードｋ＋２の情報と、２０００ｍｓ前のノードｋ＋３の情報の平均となる。そして、転送による遅延の最大値は２０００ｍｓとなる。この実施例のように、送信先ノード毎に異なるｏｆｆｓｅｔを指定すれば、ノードｋがノードｋ＋４に送る情報は、ノードｋがノードｋ−４に送る情報は、現在のノードｋの情報と、６００ｍｓ前のノードｋ＋１の情報と、３００ｍｓ前のノードｋ＋２の情報と、６００ｍｓ前のノードｋ＋３の情報の平均になり、転送による遅延の最大値は６００ｍｓとなる。したがって、情報の最大遅延を２０００ｍｓから６００ｍｓに削減することができる。また、ノード０から送信される情報のｏｆｆｓｅｔは０ｍｓ、ノード１から送信される情報のｏｆｆｓｅｔは１００ｍｓ、…、というように、異なるノードに対して異なるｏｆｆｓｅｔを指定する方法をとっても同様の効果を得られる。
【０１３７】
【発明の効果】
以上説明したように本発明は、ノード数によらず、効率的にノード間での情報共有を達成できるようになる、という効果がある。
【図面の簡単な説明】
【図１】本発明の実施の一形態の情報共有方法が適用されるシステムの構成の一例を示すブロック図である。
【図２】情報制御部の構成例を示すブロック図である。
【図３】本発明の実施の一形態の情報共有方法での動作を示すフローチャートである。
【図４】情報共有リストの構成例を示す図である。
【図５】図３のステップＡ４の動作を示すフローチャートである。
【図６】図３のステップＡ６の動作を示すフローチャートである。
【図７】実施例１を説明するための図である。
【図８】実施例２を説明するための図である。
【図９】実施例３を説明するための図である。
【図１０】実施例４を説明するための図である。
【図１１】実施例５を説明するための図である。
【図１２】実施例６を説明するための図である。
【符号の説明】
１                  スイッチング装置
２−１〜２−ｎ      情報処理装置
２１−１〜２１−ｎ    通信部
２２−１〜２２−ｎ    演算部
２３−１〜２３−ｎ    記憶部
２４−１〜２４−ｎ    情報共有リスト
３１−１〜３１−ｎ    要約化制御部
３２−１〜３２−ｎ    間接転送制御部
３３−１〜３３−ｎ    周期指定制御部
３４−１〜３４−ｎ    範囲指定制御部
３５−１〜３５−ｎ    情報管理部
３６−１〜３６−ｎ    障害検出部
３７−１〜３７−ｎ    送信情報管理部
３８−１〜３８−ｎ    受信情報管理部
【図１】
2004171123.tif 000027
【図２】
2004171123.tif 000028
【図３】
2004171123.tif 000029
【図４】
2004171123.tif 000030
【図５】
2004171123.tif 000031
【図６】
2004171123.tif 000032
【図７】
2004171123.tif 000033
【図８】
2004171123.tif 000034
【図９】
2004171123.tif 000035
【図１０】
2004171123.tif 000036
【図１１】
2004171123.tif 000037
【図１２】
2004171123.tif 000038