JP2001509291A - 多重プロセッサシステムにおけるプロセッサメンバーシップの分散形取り決め - Google Patents

多重プロセッサシステムにおけるプロセッサメンバーシップの分散形取り決め

Info

Publication number
JP2001509291A
JP2001509291A JP53214598A JP53214598A JP2001509291A JP 2001509291 A JP2001509291 A JP 2001509291A JP 53214598 A JP53214598 A JP 53214598A JP 53214598 A JP53214598 A JP 53214598A JP 2001509291 A JP2001509291 A JP 2001509291A
Authority
JP
Japan
Prior art keywords
processor
processors
stage
multiprocessor system
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP53214598A
Other languages
English (en)
Other versions
JP2001509291A5 (ja
Inventor
ロバート エル ジャーディーン
ムラリー バサヴァイアー
カルール エス クリシュナクマー
スリニヴァサ ディー マーティー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JP2001509291A publication Critical patent/JP2001509291A/ja
Publication of JP2001509291A5 publication Critical patent/JP2001509291A5/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 多重プロセッサシステム(100)における通信障害及び/又は定期的事象故障で残存するプロセッサ群を決定するためのシステム。プロセッサ(112)は、それぞれメモリ(118)を有しかつプロセッサ間通信ネットワーク(114)に接続され、プロセッサが通信できる一組のプロセッサが変化したということを検出する。そして、プロセッサは、プロセッサの切断群が再編成動作(622b)の開始で独立したシステムとして動作することを継続するという可能性を最小化することに基づいて動作を停止するか又は継続することを選択する。プロセッサは、他のプロセッサがプロセッサ(682)からの周期的メッセージの欠落を検出した場合に、故障したことを疑われる。これが起きた場合には、プロセッサの全ては、プロセッサがプロセッサの状態及び連結性を互いに繰り返し放送する一連のステージの対象になる。疑問をもたれたプロセッサは、打ち切られた動作を有しているか又はそのタイマ機構が故障している場合には再編成のためにステージを通って進行しない。

Description

【発明の詳細な説明】 多重プロセッサシステムにおけるプロセッサメンバーシップの分散形取り決め発明の分野 本発明は、一般に、故障許容(フォールトトレラント)多重プロセッサシ ステムに関する。特に、本発明は、部分的及び全体的通信故障シナリオにおける かつ構成プロセッサ上の周期的又は定期的事象の故障にもかかわらず多重プロセ ッサシステムの障害許容力を改良する方法に関する。関連特許出願 1994年6月23日に出願され、発明者がロバートL.ヤーディン、リチャ ードM.コリンズ及びラリーD.リーブズであり、本発明の譲受人に譲渡された 「停電又はドロップアウトからの欠陥許容マルチプロセッサシステムの回復方法 及び装置(Method and Apparatus for Fault-Tolerant Multi-processing System Recovery from Power Failure or Drop-Outs)」と題する米国特許出願第08/ 265,585号; 1995年6月7日に出願され、発明者がロバートL.ヤーディン、リチャー ドM.コリンズ及びA.リチャードザッチャーであり、本発明の譲受人に譲渡さ れた「非均一な停電の許容範囲を改善する方法(A Method to Improve Tolerance of Non-Homogeneous Power Outages)」と題する米国特許出願第08/487, 941号; 本発明と同日に出願され、発明者がロバートL.ヤーディン、ムラリバサバイ ア及びカローラS.クリシナクマーであり、本発明の譲受人に譲渡された「マル チプロセッサシステムにおける知能分割回避方法及び装置(Method and Apparatu s for Split-Brain Avoidancein a Multi-Processor System)」と題する米国特 許出願; 本発明と同日に出願され、発明者がムラリバサバイア及びカローラS.クリシ ナクマーであり、本発明の譲受人に譲渡された「回復中に最大限の全接続に対し マルチプロセッサシステムをノード剪定する方法及び装置(Method and Apparatu s for Node Pruning a Multi-Processor System for Maximal,Full Connecti on During Recovery)」と題する米国特許出願;及び 本発明と同日に出願され、発明者かムラリバサバイア,カローラS.クリシナ クマー及びスリニバサD.ムーシーであり、本発明の譲受人に譲渡された「マル チプロセッサシステムの回復中に失われたタイマーチックを許容する方法及び装 置(Method and Apparatus for Toleration of Lost Timer Ticks During Recove ry of a Multi-Processor System)」と題する米国特許出願。先行技術の説明 分散型で、何も共用しないマルチプロセッサアーキテクチャー、及びプロセス 対を使用する欠陥許容(フォールトトレラント)のソフトウェアは、システムの 全てのプロセッサが、そのシステムを作り上げるプロセッサの一貫したイメージ をもつことを必要とする。(本発明の譲受人から入手できるNonStop K ernel(登録商標)は、このような欠陥許容ソフトウェアの一例である。) この一貫したシステムイメージは、システムオペレーションに必要なグローバル システムテーブルを維持し、そしてデュアルポートI/Oコントローラ又は共用 バス(SCSIのような)を経て同じI/Oデバイスにアクセスする異なるプロ セッサにおいて例えば一次及びバックアッププロセスの入力/出力プロセス対( IOP)により生じるデータ崩壊を防止するために必要である。 プロセッサ欠陥の検出は、「IamAlive」メッセージ形態で迅速に行なわ れる。各プロセッサは、「IamAlive」パケットをシステム内の他の各プロ セッサに周期的に送信する。システム内のプロセッサは、別のプロセッサが動作 するかどうかを、そこからのタイミングパケットにより決定する。所与のプロセ ッサからパケットを受信せずに時間インターバルが経過したときには、第1のプ ロセッサは、第2のプロセッサが故障したと判断する。 古いシステムでは、再グルーピングが実施される前に、第2のプロセッサが第 1のプロセッサにパケットを送信するときに次のことが生じ得る。第1のプロセ ッサは、第2のプロセッサの機能が不適切であると判断し、ポイゾンパケットで 応答する。第1のプロセッサは、第2のプロセッサからのパケットの内容を無視 する。 最終的に、他のプロセッサの多く又は全部が終了となり、その影響を受けるプ ロセッサを無視する(それを停止するよう試みる以外は)。この影響を受けるプ ロセッサは、実際には、システムの外部にあり、あたかも独立したシステムであ るかのように機能する。この状態は、知能分割(split-brain)問題とも称される 。 再グルーピングを伴わない状態では、次の状態が生じ得る。異なるプロセッサ で実行されるプロセス対の両プロセスがそれら自体を一次とみなし、バックアッ プ機能を遂行する能力を破壊し、そしておそらく、ファイルを崩壊することにな る。全てのシステムプロセッサは、無限ループに捕獲された状態となり、共通の リソースに対して競合する。システムテーブルは、崩壊状態となる。 再グルーピングは、「IamAlive」/ポイゾンパケット方法を補足する。 再グルーピングは、投票アルゴリズムを使用して、システム内の各プロセッサの 真の状態を決定する。各プロセッサは、他の全プロセッサの状態の記録を志願し 、その記録を他のプロセッサからの記録と比較し、そしてそれに応じてその記録 を更新する。投票が完了すると、全てのプロセッサは、システム状態の同じ記録 を有することになる。プロセッサは、機能するが既に分離されたプロセッサを再 統合すると共に、機能しないプロセッサを正しく識別しそして分離するために、 それら自体の間で整合を行う。 再グルーピングは、プロセッサ間の物理的な通信が可能に保たれるときだけ、 プロセッサの論理的な状態に関わりなく機能する。プロセッサが他のプロセッサ との全ての通信経路を失った場合に、そのプロセッサは再グルーピングできなく なる。このプロセッサは、通信が回復しそしてシステムがコールドロードされる まで分離されたままとなる。(このようなプロセッサは、通常、それ自体停止す る。というのは、その自己チェックコードがメッセージシステムパケットをそれ 自身との間でやり取りできないからである。) プロセッサの論理状態とその条件は区別される。プロセッサは、適切に構成さ れたシステムにおいて2つの論理状態、即ちアップ又はダウンを有する。しかし ながら、プロセッサは、3つの条件、即ち論理状態ダウンと同じであるデッド、 論理状態アップと同じである健全、及び以下に詳細に述べるマラトス(malatose) を有する。 プロセッサは、システムの他部分と通信しない場合にデッドである。デッドの プロセッサは、例えば、停止又はシステム凍結命令を実行するプロセッサ、内部 レジスタパリティエラーのような低レベルの自己チェックエラーに遭遇するプロ セッサ、全ての割り込みがディスエーブルされた状態で無限ループを実行するプ ロセッサ、データ崩壊のために非終了命令を実行するプロセッサ、又はリセット 状態にあるプロセッサを含む。 デッドのプロセッサは有害であるが、再グルーピングアルゴリズムは、それら をシステム構成から除去する。他のプロセッサは、デッドのプロセッサを検出し 、そしてそれらをダウンと宣言する。 プロセッサは、そのオペレーティングシステム(好ましくは、本発明の譲受人 から入手できるNonStop Kernel(登録商標)オペレーティングシ ステム)を実行し、そして適度な時間内に他のプロセッサとパケットを交換でき る(好ましくは、冗長な高速バス又はスイッチングファブリックを経て)場合に は健全である。再グルーピングアルゴリズムは、プロセッサが健全なプロセッサ をダウンと宣言するのを防止する。 マラトスのプロセッサは、デッドでも健全でもない。このようなプロセッサは 、適時に応答しない(おそらくはタイマーチックの欠落のために)か、ある低レ ベルアクティビティにおいて一時的に凍結状態となる。マラトスのプロセッサは 、例えば、最も高い優先順位の割り込みで溢れていてプロセッサが低い優先順位 の割り込みを実行できないか、又は低い優先順位の割り込みで溢れていて、「I amAlive」パケットの発生が遅れるようなものである。マラトスプロセッ サは、クロックが停止した欠陥ハードウェアデバイスを待機するか、又は相互に 排他的なメカニズムにより割り込みがディスエイブルされた状態で長時間動作す る。 再グルーピングアルゴリズムは、マラトスプロセッサを検出し、そしてそれを 強制的に健全又はデッド、即ちアップ又はダウンにする。対応的に、プロセッサ は、ダウンと宣言していない別のプロセッサがダウンと宣言するときには、それ 自身停止する。 再グルーピングに関しては、システムの各プロセッサは、安定(即ち、動作の 必要性を待機する)であるか、又は以下に述べる多数の状態を含む混乱状態であ る。 プロセッサが安定であるときには、「IamAlive」メッセージ機構が動作 し続ける。別のプロセッサからの「IamAlive」メッセージがない状態で、 所定長さの時間、例えば、2.4秒が経過した場合には、プロセッサは混乱状態 となる。 混乱状態である間に、プロセッサは、特別にマークされたパケットを他の混乱 状態のプロセッサと交換して、システムの現在プロセッサ構成を決定する。その 構成に合意するときには、プロセッサは、再び安定状態となる。 プロセッサは、ほとんどの時間を安定状態に費やす。 再グルーピング事象は、プロセッサが混乱状態になったときに開始し、そして 全てのプロセッサが再び安定状態になったときに終了する。各再グルーピング事 象は、最後のシステムコールドロード以来の再グルーピング事象の数であるシー ケンス番号を有する。 又、各プロセッサは、1つは古い構成でそして1つは新しい構成である2つの 構成を記憶するための変数も維持する。プロセッサが安定である間には、OUT ER_SCREEN及びINNER_SCREENと称する両ビットマップ変数 は、古い構成を含む。 プロセッサが安定である間には、古い構成である各プロセッサがアップであり 、そして古い構成でない各プロセッサがダウンであることが知られている。古い 構成にある各プロセッサは、同じ再グルーピングシーケンス番号を有する。 プロセッサが混乱である間には、構成の展望(及びそれ自身の状態)をそのバ ス又はファブリックにブロードキャストする。プロセッサは、この展望を周期的 に、例えば、0.3秒ごとに、古い構成の他の全てのプロセッサに送信する。こ のような送信を受け取ると、その構成にあるいかなる安定なプロセッサも混乱す る。 以下に述べる再グルーピングプロトコルの4つの段階は、混乱状態にある全て のプロセッサがシステム構成について同じ展望を形成するようにさせる。再グル ーピングが完了したときには、システム内の全てのプロセッサが安定となり、同 じ新たな構成を含む。又、新たな構成にある各プロセッサは、古い構成の番号よ り大きな同じ再グループシーケンス番号を有する。 新たな構成は、古い構成になかったプロセッサを含まない。事象全体にわたっ て健全に保持された全てのプロセッサは、新たな構成にある。 事象が開始したときにデッドであるか又は事象中にデッドとなったプロセッサ は、新たな構成にない。プロセッサが事象中にデッドとなった場合には再グルー ピングが再スタートする。 対応的に、事象が開始したときにマラトスであったプロセッサは、完了した事 象にそれらが関与している場合には新たな構成において健全なプロセッサとして 存在する。 再グルーピング方法は、新たな構成にある全てのプロセッサが同じプロセッサ を包含し及び除外するように確保する。 既存の再グループのプロセッサ段階 既存のアルゴリズムに基づく各プロセッサ再グルーピングは、EVENT_H ANDLER()手順と、図7に示された再グループ制御テンプレート#_70 0とここで称するデータ構造体とを維持する。SEQUENCE_NUMBER とここで称する変数は、現在再グループシーケンス番号を含む。 各プロセッサは、動作中に次の段階、即ち段階0、段階5及び段階1ないし4 を通過する。段階0は、システム形成時にプロセス制御ブロックにおいて定義さ れた特殊な段階である。段階5は、上記の安定状態である。段階1ないし4は、 上記の混乱状態を作り上げる。 プロセッサは、変数STAGEに現在段階を維持する。又、プロセッサは、段 階1ないし4の各々に対し変数KNOWN_STAGE_1ないしKNOWN_ STAGE_4を維持する。これら変数の各々は、その変数に対応する段階にお いて再グループ事象に参加すべき維持プロセッサに知られた全てのプロセッサの プロセッサ番号を記録するビットマスクである。 プロセッサは、それがコールドロードされるときに段階0に入る。プロセッサ は、それが段階0にある間は、再グルーピングに参加しない。この状態において プロセッサを混乱させる試みは、プロセッサを停止させる。プロセッサは、プロ セス間及びプロセッサ間メッセージシステムへの統合が完了するまで段階0に留 まる。次いで、プロセッサは、段階5に入る。図8A及び8Bは、その後の動作 を要約するものである。 再グルーピング事象は、通常、プロセッサが「IamAlive」メッセージを 時間内に送信し損なったときに開始する(ステップ#_810)。この欠陥は、 欠陥を検出するプロセッサを混乱させる。 プロセッサが混乱されると(ステップ#_805)、段階1に入る。段階1は 、参加する全てのプロセッサを同じ再グルーピング事象の一部分として同期させ る(ステップ#_830)。古い事象が終了する前に新たな事象がスタートし得 るので、参加するプロセッサが最新の事象のみを処理するよう確保するための方 法が必要となる。 図9は、段階5から段階1への移行を要約するものである。プロセッサは、S EQUENCE_NUMBER#_710を増加し、段階#_720を1にセッ トし、KNOWN_STAGE_n変数を0にセットし、そしてKNOWN_S TAGE_1#_750aにおけるそれ自身のビットを1にセットする。(プロ セッサは、自分以外のどのプロセッサが健全であるかまだ知らない。) メッセージシステムは、プロセッサを周期的に、1つの実施形態では0.3秒 ごとに、目覚めさせ、従って、プロセッサは、許容し得る入力を受け取るために 3ないし6回の試みをすることができる。古い構成の2つ以上のプロセッサが未 確認のままであるか、パワーアップが生じたか、又はアルゴリズムが新たな事象 としいて再スタートした場合に、4つ以上の試みが生じる。 プロセッサは、目覚めたときに、その状態を古い構成のプロセッサヘブロード キャストする(ステップ#_830)。その状態は、その再グループ制御テンプ レート#_700を含む。 通常、他の混乱状態のプロセッサからの状態パケットが最終的に到着する。O UTER_SCREEN#_730により定められるように古い構成でなかった プロセッサからパケットが到着する場合には、このプロセッサはパケットを無視 し、そしてポイゾンパケットで応答する。 プロセッサは、それが無視しないパケットについては、パケットのシーケンス 番号をSEQUENCE_NUMBER#_710と比較する。パケットシーケ ンス番号が小さい場合には、送信者は、現在事象に参加しない。パケットの他の データは、現在のものではなく、無視される。プロセッサは、新たな状態パケッ トをそのプロセッサに送信して、それに同期させ、現在事象に参加させる。 パケットのシーケンス番号がSEQUENCE_NUMBER#_710より 大きい場合には、新たな事象がスタートしている。SEQUENCE_NUMB ER#_710は、パケットのシーケンス番号にセットされる。プロセッサは、 そのデータ構造休を再初期化し、そしてパケットデータの残りを受け入れる。 パケットのシーケンス番号がSEQUENCE_NUMBER#_710と同 じである場合には、プロセッサは、単にパケットデータを受け入れる。データの 受け入れは、パケットのKNOWN_STAGE_nフィールドをそれに対応す るプロセッサ変数#_750と論理オアして、2つのプロセッサの知識を1つの 構成へ合体することより成る。 段階1は、2つの方法のいずれかで終了する。第1に、全てのプロセッサがそ れ自体を考慮する。即ち、プロセッサが、そのKNOWN_STAGE_1変数 #_750aが全ての既知のプロセッサを含む(即ちOUTER_SCREEN #_730に等しい)ことに気付いたときに、プロセッサは段階2へ進む。しか しながら、プロセッサ欠陥の場合には、プロセッサは、それら自体を全て考慮す るのではない。それ故、段階1は、時間切れで終了となる。時間限界は、警告及 び非警告モードで異なるが、全てのプロセッサがそれら自体を考慮するかどうか に関わりなくその時間が経過したときにプロセッサは段階2へ進む。 図10は、段階1の始めから段階1の終りまでの移行を要約するものである。 段階1の終わりに、KNOWN_STAGE_1#_750aは、このプロセッ サが現在事象中に通信すべきところの有効プロセッサとして確認するプロセッサ を識別する。その後の段階で、プロセッサは、確認されたプロセッサからのパケ ットのみを受け入れる。 段階2は、プロセッサにより確認されたプロセッサのセットに、その確認され たプロセッサにより確認された全てのプロセッサを追加することにより、新たな 構成を作り上げる(ステップ#_850)。実際に、新たな構成は、通信仲間の 間の合意である。 図11は、段階2の終わりの条件を要約するものである。プロセッサは、段階 #_720を2にセットし、その状態をKNOWN_STAGE_2に記録し、 そしてKNOWN_STAGE_1をINNER_SCREEN_#740にコ ピーする。プロセッサは、入力をチェックし続け、状態を周期的にブロードキャ ストし、到来するパケットをOUTER_SCREEN及びINNER_SCR EEN#_730、#_740に対して受け入れられるかどうかテストする(ス テップ#_850)。 段階1に参加していない古い構成のプロセッサからのパケットは、INNER _SCREEN#_740により識別され、そして無視される。確認されたプロ セッサからのパケットは、受け入れられ、そしてそれらの構成データは、NKO WN_STAGE_n変数と合体される。確認されたプロセッサからのパケット がまだ確認されていないプロセッサを識別するときには、INNER_SCRE EN#_740に新たなプロセッサも追加される。従って、段階1において現在 再グループ事象に参加するには低速過ぎたマラトスプロセッサでも段階2に参加 することはできる。 KNOWN_STAGE_2#_750b_bSKNOWN_STAGE_1 #750aに等しくなったときには、構成に対してそれ以上の変化は生じない。 図12は、段階2の終了における条件を要約するものである。ここで、段階3が 始まる。 段階3の始めに、図13に示すように、プロセッサは、段階#_720を増加 し、そして新たな構成をINNER_SCREEN及びOUTER_SCREE N#_740、#730の両方にコピーする。マラトスプロセッサは、もはや、 健全なプロセッサとして新たな構成に参加することができない。 メッセージシステムのクリーンアップ(ステップ#_860)は、次のように 行なわれる。新たな構成にあるプロセッサは、新たな構成にないプロセッサへの メッセージシステムを遮断する。それらは、除外されたプロセッサへの保留中の 送信を破棄し、そしてそこから到来する送信も破棄する。プロセッサ間トラフィ ック待ち行列は、除外されたプロセッサにおいて要求者/リンカーから待ち行列 処理されたが打ち消されていないメッセージに対してサーチされる。それにより 見つかった打ち消されていないメッセージは破棄される。プロセッサ間トラフィ ック待ち行列は、除外されたプロセッサにおいてサーバ/聴取者から待ち行列処 理されたが打ち消されていないメッセージに対してサーチされる。これにより見 つかった打ち消されていないメッセージは、段階4の間に処理するために据え置 き打ち消し待ち行列に添付される。 このクリーンアップは、新たな構成にあるプロセッサにおいてサーバ/聴取者 アプリケーションにより開始されたメッセージ交換が、新たな構成からの他のプ ロセッサの除外により、未解決のままとならないように確保する。除外されたプ ロセッサに送ることができた全てのメッセージが送信され、そしてそこから受け 取ることのできた全てのメッセージが受信される。 ほとんどのプロセッサ機能は、バス又はタイマー割り込みハンドラー動作とし て生じる。あるクリーンアップアクティビティは、長時間を要するので、割り込 みがディスエイブルされた状態で行うことができない。むしろ、これらのアクテ ィビティは、同じ段階に対して他のものから分離され、そして据え置かれる。 据え置かれたクリーンアップは、ディスパッチャー(プロセススケジューラー )により呼び出されたメッセージシステムSEND_QUEUED_MESSA GE手順により実行される。据え置かれたアクティビティは、次いで、ほとんど の時間イネーブルされるディスパッチャー以外の割り込みで実行される。 入力の周期的なチェック及び状態のブロードキャスト動作が続けられる。前記 した据え置かれたクリーンアップが終了するときには、プロセッサは、その状態 をKNOWN_STAGE_3#750cに記録する。 INNER_SCREEN及びOUTER_SCREEN#_740及び#_ 730を越えたパケットは、KNOWN_STAGE_n変数#_750に合体 される。KNOWN_STAGE_3#_750cbSKNOWN_STAGE _2#_750bに等しいときには、新たな構成にある全てのプロセッサが同様 のクリーンアップを完了し、そして全て段階3に存在する。図14は、段階3の 終りの条件を示す。 段階4において、プロセッサは、段階3のクリーンアップ動作を終了し、1つ 以上のプロセッサ欠陥が生じたことをプロセスに通知する(ステップ#_870 )。プロセッサは、段階#_720を4に増加し、そして次のことを行う。即ち 、 ダウン状態にある除外されたプロセッサを示すようにプロセッサ状態変数をセッ トし、ここに述べるGLUPプロトコルに使用するように必要に応じてロッカー プロセッサを変更し、段階3から据え置かれたメッセージを処理し、I/Oコン トローラテーブルを必要に応じて操作してオーナーシップを得、そして要求者/ リンカーに通知する。 段階4は、別のプロセッサの欠陥を現在プロセッサにおいてメッセージシステ ムユーザにより知ることのできる第1のポイントである。この遅延は、他のプロ セスがアクティビティを開始して、欠陥プロセッサとの打ち消されないメッセー ジの交換のために誤った結果を生じるのを防止する。 再グルーピングプロセッサは、入力をチェックしそして状態をブロードキャス トし続ける(ステップ#_870)。据え置かれたクリーンアップが終了すると 、プロセッサは、その状態をKNOWN_STAGE_4#_750dに記録す る。図15は、この動作を示す。 INNER_SCREEN及びOUTER_SCREEN#_740、#_7 30を越えるパケットは、KNOWN_STAGE_n変数#_750に合体さ れる。KNOWN_STAGE_4#_750dがKNOWN_STAGE_3 #_750cに等しいときには、新たな構成にある全てのプロセッサが同様のク リーンアップを完了し、そして全て段階4に存在する。図16は、段階4の終り の条件を要約するものである。 段階5の始めに、段階#_720は、5となる。1つの最終的なブロードキャ スト及び更新が生じる。OUTER_SCREEN#_730は、次の再グルー ピング事象に対し何が古い構成となったかを含む。図17は、この状態を示す。 最終的に、高レベルのオペレーティングシステムクリーンアップをここで開始 することができる。グローバルな更新回復は、ロッカープロセッサにおいてスタ ートする。 プロセッサは、それ自身のクリーンアップ処理を行う。ここで、欠陥プロセッ サを再スタートする試みを開始することができる。 事象の停止及び再開 プロセッサは、段階2ないし4を所定時間内に、1つの実施形態では3秒以内 に完了しなければならない。これらの段階をその時間内に完了しない場合には、 他のプロセッサか再グルーピング中におそらく欠陥となる。それ故、事象は停止 し、そして新たな事象が開始し、プロセッサが段階1の始めへ戻る。再スタート 時に末完了のままであったクリーンアップは、新たな事象の状態中に完了する。 クリーンアップ動作は、シーケンス要求も、明確に制御されるシーケンスも有し ておらず、従って、それらは、アルゴリズムの再スタートにより影響されない。 再スタート中に、INNER_SCREEN及びOUTER_SCREEN# _740、#_730は、再初期化されない。これらの変数を変更しないことに より、プロセッサは、既に健全でないと診断されたプロセッサを新たな構成から 除外し続ける。デッドであると分かっているプロセッサは、OUTER_SCR EEN#_7402より除外される。既に健全であると確認されたプロセッサは 、INNER_SCREEN#_730がプロセッサの通信を許すところのプロ セッサだけである。 プロセッサは、確認されたプロセッサからの状態のみを受け入れる。それ故、 確認されたプロセッサのみが、段階2の終了前に別のプロセッサを構成に追加す ることができる。段階2が終了しそして段階3が開始するときに、再グルーピン グプロセッサは、KNOWN_STAGE_2#_750bがOUTER_SC REEN及びINNER_SCREEN#_740、#_730にコピーされた ときに新たな構成から再スタートを生じさせた欠陥プロセッサを除外する。段階 2が終了した後に、新たな事象がスタートするまで構成は変化しない。 停電及び回復再グルーピング プロセッサは、パワーアップ時に、新たな事象をスタートさせる。ブロードキ ャスト状態パケットのワードは、停電の発生を指示し、従って、受信側プロセッ サは、バスエラーカウンタをクリアし、そして再起動したプロセッサのバス又は ファブリックへのアクセスの遮断を差し控えることができる。プロセッサ間通信 ハードウェア(バス又はファブリック)の特性に基づき、停電の直後に若干異な る時間に部品が通電するときにエラーが生じ易い。 プロセッサ間通信経路欠陥の影響 プロセッサ間通信経路(IPCP)の欠陥が再グルーピングに及ぼす影響は、 欠陥が過渡的なものか永久的なものかによって左右される。過渡的な欠陥とは、 パケットを送信するためにIPCPを時々使用できるものである。永久的な欠陥 は、部品が交換されるまでその部品を通していかなるパケットも送ることができ ない。 段階1の間の過渡的なIPCP欠陥は、通常、再グルーピングに影響を及ぼさ ない。状態パケットを送信するために2回以上の試みがなされ、各パケットごと に冗長な通信経路が使用される。送信は、ほとんど常時成功する。冗長経路の送 信が失敗する場合には、アルゴリズムが再スタートするか、又はプロセッサが停 止する。 首尾良く送信されたパケットは、3つの形式の1つとして受信することができ る。即ち、それらは、過渡的なIPCP欠陥が生じそしてパケットの他のコピー を送信できないための「独特」;冗長なIPCPを経て受信されたための「複写 」;又はプロセッサが状態パケットを送信し、その状態を変更し、そして新たな 状態パケットを送信したが、1つ以上の経路が状態パケットを順序ずれして供給 したための「旧式」である。 再グループ制御テンプレート変数は、ビットを1にセットするがそれらを決し て0にセットしないことにより更新される。複写、旧式又は紛失パケットは、新 たな事象がスタートするまでその後の更新によってビットがクリアされないので 、新たな構成の精度を変更するものではない。順序ずれしたパケットの受信によ り何ら影響は生じない。 永久的なIPCP欠陥の取り扱いは異なる。プロセッサが少なくとも1つの経 路を経てそれ自身と通信できないときには、そのプロセッサは、エラーで停止と なる。この動作は、全ての冗長なIPCPが欠陥となったときに、システムが全 てのプロセッサを自動的に停止することを意味する。再グルーピングは無関係と なる。 IPCPエレメント又はIPCPアクセスエレメントの欠陥は、2つのプロセ ッサ間に1つの両方向通信経路が保持される限り、再グルーピングに影響しない 。少なくとも1つの他のプロセッサと通信できないプロセッサは、再グルーピン グプロセッサの監視機能によりそれ自身を停止する。 少なくとも1つの他のプロセッサと通信できるプロセッサは、新たな構成に含 まれる。というのは、新たな構成が合意によって達成されるからである。各プロ セッサは、状態パケットを受け取ると、報告された構成を追加して、それ自身の 状態記録を更新する。この合成された構成は、更新プロセッサから状態パケット を受け取るために次のプロセッサへ自動的に送られる。 例えば、次の状態について考える。冗長なIPCP X及びYが与えられると 、プロセッサ0及び2は、IPCP Xでのみ送信し、そしてIPCP Yでの み受信することしかできない。一方、プロセッサ1は、IPCP Xでのみ受信 し、そしてIPCP Yでのみ送信することしかできない。従って、プロセッサ 0及び2は、プロセッサ1との通信経路を有する。最終的に、3つの全プロセッ サは、同じ新たな構成をもつことになる。両プロセッサ0及び2からのプロセッ サ状態情報は、プロセッサ1を経て中継される。 未解決の欠陥状態 既存の再グループアルゴリズムは、プロセッサ欠陥及びマラトスプロセッサに 対して良好に機能する。しかしながら、良好に機能しない幾つかの通信欠陥状態 が存在する。これらの状態を理解するために、ワーキングマルチプロセッサシス テム(NonStop Kernel(登録商標)システム)を、頂点が機能中 のプロセッサを表しそして縁が互いに直接通信する2つのプロセッサの能力を表 す接続グラフとして論理的に考える。システムが正常に動作するためには、グラ フは、完全に接続されねばならず、即ち全てのプロセッサは、他の全てのプロセ ッサと直接通信できねばならない。各対のプロセッサ間には論理的な接続がなけ ればならない。 (このグラフは、論理的な相互接続モデルである。物理的な相互接続は、各対 のプロセッサ間に異なる物理的相互接続が存在しない共用バスを含む種々の異な るトポロジーでよい。) 第1の状態においては、システムの2つのプロセッサが、システムで動作して いるプロセッサについて一貫性のない展望をもつことになる。それらは、システ ムのグラフを構成する頂点の組に関して合意しない。「知能分割」状態が生じたと 言える。この知能分割状態は、分割した知能にわたって存在するI/Oプロセス 対の一次及びバックアップの各々が、データ崩壊により、それが一次プロセスで あると考える事態を招く。 一般に、知能分割状態は、通信欠陥がシステムを、互いに切断された2つ以上 の個別のプロセッサクラスターに分割する場合に生じ得る。従って、システムの 接続性グラフが2つ以上の解体接続グラフに分離する。 第2の状態においては、通信欠陥により接続性グラフが部分的に接続されただ けとなる。これは、一対のプロセッサ間の通信が冗長な経路にも関わらず完全に 欠陥となるときに起きる。プロセッサの1つが、他のプロセッサからある時間中 IamAliveメッセージを受信していないことに気付いたときに、再グルー プオペレーションをアクチベートする。しかしながら、その2つが通信できる第 3のプロセッサがある場合には、既存の再グループオペレーションは、全てのプ ロセッサが健全であると判断し、何ら処置を行なわずに終了となる。いずれかの プロセッサで発信して他のプロセッサへ向けられるメッセージは、永久的に保留 となり、即ち2つのプロセッサは健全であり、そして欠陥許容メッセージシステ ムは、行先プロセッサ又はプロセスがダウンでない限りメッセージが供給される ように保証する。再グループオペレーションが行先プロセッサのダウンを宣言す るまで、メッセージシステムは、メッセージの再試みを維持するが、プロセッサ 間に通信経路がないために何の進行もない。 この第2の状態において、全システムは、次の環境の1つ以上により保留とな る。即ち、複写されたカーネルテーブルを更新するのに使用されるグローバル更 新(GLUP)プロトコル(参考としてここに取り上げる米国特許第4,718 ,002号(1988年)に説明されている)は、プロセッサがシステム内の全 ての健全なプロセッサと通信できると仮定している。健全なプロセッサの1つと 通信できないプロセッサにおいてGLUPがスタートする場合には、GLUPプ ロトコルが全システムにおいて保留となり、名前付けされたプロセスの形成及び 削除のようなアクティビティの完了を妨げる。又、システムは、重要なシステム プロセスが保留メッセージの完了を待機して保留となる場合にも、保留となる。 このようなシステム保留は、メッセージシステムがリソース以外で動作するた めにプロセッサの停止を招くことになる。 プロセッサ間通信経路が欠陥許容(例えば、二重バス)である一方、プロセッ サがフェイル・ファースト(例えば、単一の欠陥検出プロセッサ又はロックステ ッププロセッサが同じコード流を実行し、自己欠陥を検出した際にプロセッサが 直ちに停止する)である場合には、一対のプロセッサ間の通信遮断のおそれが、 プロセッサの故障よりも遥かに低くなる。しかしながら、エラーにより信号経路 をダウンさせるソフトウェアポリシーは、この状態の確率を高める。 更に、複雑なクラスターマルチプロセッサトポロジーの導入に伴い、接続欠陥 状態がより起き易くなると思われる。これらは、ルータの故障、システムソフト ウェアの欠陥、オペレータエラー等によるものである。 第3の状態においては、プロセッサが周期的なIamAliveメッセージを 送信できなくなるが、プロセッサ間通信メッセージは受信及び送信することがで きる。(このような状態は、例えば、時間リストの崩壊から生じ、オペレーティ ングシステムへのタイマー時間切れの報告を妨げる。)他のプロセッサの1つは 、プロセッサのこの欠陥を容易に検出し、再グループ事象をスタートする。しか しながら、見掛け上マラトスのプロセッサは、再グループパケットを受信しそし て再グループパケットをブロードキャストすることができるので、欠陥プロセッ サが再グループ事象に完全に参加する。この参加は、見掛け上マラトスのプロセ ッサが実際に健全であることを他のプロセッサに確信させるに充分である。プロ セッサは、再グループ事象に偽のスタートを迅速にダビングし、プロセッサダウ ンがないと宣言する。それにも関わらず、プロセッサがIamAliveの欠落 を次に検出するときに新たな再グループ事象がスタートする。従って、システム は、IamAliveチェック頻度(例えば、2.4秒に一度)で周期的な再グ ループ事象を通り、欠陥を検出することなく、ほとんど即座に終了となる。 従って、これらの知能分割、部分的接続及びタイマー欠陥状態を回避するマル チプロセッサ再グループオペレーションが要望されている。 本発明の目的は、構成要素プロセッサがシステムを構成するプロセッサの一貫 したイメージを維持するマルチプロセッサコンピユータシステムを提供すること である。 本発明の別の目的は、システムが安定であるときに構成要素プロセッサが完全 に接続されるマルチプロセッサコンピユータシステムを提供することである。 本発明の更に別の目的は、タイマーの時間切れを受け取るプロセッサの欠陥が 検出されそしてプロセッサがダウンと宣言するマルチプロセッサコンピュータシ ステムを提供することである。 本発明の更に別の目的は、システムが安定であるときに上記プロセッサが最大 限に完全に接続されるマルチプロセッサシステムを提供することである。 本発明の更に別の目的は、一体化及び接続要件を満足するのに必要なシステム リソース(特に、プロセッサ)が最小限に除外されるマルチプロセッサシステム を提供することである。 本発明の更に別の目的は、再グルーピング時に、瞬間的に非応答のプロセッサ をシステムが考慮するようなマルチプロセッサシステムを提供することである。 本発明のこれら及び他の目的は、上記先行技術及び以下の説明から当業者に容 易に明らかであろう。発明の要旨 ここに、多重プロセッサシステムにおける通信障害及び/又は定期的事象 故障に残存するプロセッサ群を決定するための装置及びプロトコルを開示する。 プロセッサは、各々メモリを有し、かつプロセッサは、プロセッサ間通信ネット ワークにより結合される。 プロセッサは、それらが通信することができる一組のプロセッサが変化し たということを検出する。そして、それらは、プロセッサの切断群が独立システ ムとして動作することを継続するという可能性を最小化することに基づいて動作 を停止するか又は継続することを選択する。プロセッサは、再編成動作の開始で 連結性マトリックスを構築する。連結性情報は、残存する最終群における全ての プロセッサが群における全ての他のプロセッサと通信することができるというこ とを確実にするために用いられる。一つ以上のプロセッサがこの特性を達成する ことを停止しうる。 プロセッサは、他のプロセッサがプロセッサからの周期的メッセージの欠 落を検出した場合に、打ち切られた動作を有していること又は故障したタイマ機 構を有していることを疑われる。これが起きた場合には、プロセッサの全ては、 それらがそれらの状態及び連結性を互いに繰り返し放送する一連のステージの対 象になる。疑問をもたれたプロセッサは、打ち切られた動作を有しているか又は そのタイマ機構が故障している場合にはステージを通って進まない。図面の簡単な説明 図1は、マルチプロセッサシステムの簡単なブロック図である。 図2は、5プロセッサのマルチプロセッサシステムを示すグラフである。 図3は、2プロセッサのマルチプロセッサシステムを示すグラフである。 図4は、通信欠陥を受けたときの図2のグラフである。 図5は、通信欠陥を受けたときの図3のグラフである。 図6は、本発明の1つの実施形態による再グループオペレーションの段階1を 示すフローチャートである。 図7は、再グループ制御テンプレートを示す図である。 図8A及び8Bは、再グループオペレーションの段階を要約する図である。 図9は、本発明の1つの実施形態により段階5から段階1への移行を示す図で ある。 図10は、本発明の1つの実施形態により段階1の始めから段階1の終りへの 移行を示す図である。 図11は、本発明の1つの実施形態により段階2の始めにおける条件を要約す る図である。 図12は、本発明の1つの実施形態により段階2の終りにおける条件を要約す る図である。 図13は、本発明の1つの実施形態により段階3の始めにおける状態を示す図 である。 図14は、本発明の1つの実施形態により段階3の終りにおける状態を示す図 である。 図15は、本発明の1つの実施形態により段階4の始めにおける状態を示す図 である。 図16は、本発明の1つの実施形態により段階4の終りにおける状態を示す図 である。 図17は、本発明の1つの実施形態により段階5の始めにおける条件を示す図 である。 図18A及び18Bは、本発明の1つの実施形態による知能分割回避プロトコ ルを示すフローチャートである。好ましい実施形態の詳細な説明 目次 定義 全体の概要 データ構造 プロトコル タイーブレーカ・プロセッサ選択 リグループおよびスプリットーブレーン回避 ステージ1 ステージ2 リグループ及びノード・プルニング(枝刈り) ステージ3 ステージ4 ステージ5及び6 リスタート リグループ及びタイマー故障の検出 再訪問したシナリオ定義 カノニカル・マトリックス :連結性マトリックスCが、下記の場合に、及び下 記のみの場合に、カノニカル・フォームにあることをいう。 (1)プロセッサiが不動作状態(以下デッド)であり、行C(i,x)がFA LSEであり、列C(x,i)がFALSEである場合;及び (2)C(i,j)がFALSEであり、C(j,i)がFALSEである場合:これは 、対称性すなわち双方向性の連結性を確保する。 連結グラフ : グラフ中においてどのプロセッサも他のプロセッサからは絶縁 されていないグラフ。 連結性マトリックス :以下のようなN×Nマトリックス。 Nはプロセッサの数。 各プロセッサには、1からN(又は、ゼロインデックスが使用される場合に は0からN−1)の間の特定の番号が付されている。 プロセッサiが健康である場合には、C(i,j)はTRUEである。 プロセッサiがデッド又は不存在である場合には、C(i,j)はFALSEで ある。 プロセッサiがプロセッサj(i≠j)に接続されていない場合には、C( i,j)はFALSEである。連結解除 : グラフ中における、2つのプロセッサ間のエッジの欠如;グラフ内 のミッシング(喪失)・エッジ;プロセッサ間にエッジのない一対のプロセッサ ;およびC(i,j)がFALSEで且つC(j,i)がFALSEである一対(i、j) 。完全連結グラフ : 各プロセッサが他の全てのプロセッサについてのエッジを有 するグラフ。グラフ : マルチプロセッサシステム内の複数のプロセッサの表示であって、そ れらのプロセッサ中の通信リンクの表示。これらのグラフの頂点がプロセッサで あり、エッジが通信リンクである。エッジは双方向性である。 用語「頂点」および「プロセッサ」は、用語「通信リンク」および「リンク」 および「エッジ」であるとして互換的に用いられる。 (一対のプロセッサ間の冗長リンクは、一緒にして一つのリンクとして考慮さ れる。本実施例では、通信ネットワークは、本願の出願人から入手可能なServer Net(商標)であり、通信リンクは、ServerNet(商標)パスである。ServerNet (商標)パスは、一連のServerNetリンクとルータである。)グループ : マルチプロセッサ中のプロセッサの適当なサブセット(小さな組) 。プロセッサのサブセットは、相互に通信可能に連結されている。完全に連結さ れたマルチプロセッサシステムが複数グループに分かれると、そのグループは、 ばらばらになり、必ずしも完全な連結にならない。最大限に、完全に連結されたサブグラフ : 完全に連結されたサブグラフであっ て、同じグラフの別の完全連結されたサブグラフの適当なサブセットではない、 サブグラフ。全体の概要 本発明のマルチプロセッサシステムは、米国特許第4,817,091号およ び米国特許出願第08/486,217号(1995年6月7日出願)の教示を 用いて、構成され得る。これらの米国特許および米国特許出願は、必要な範囲に おいて、参照文献として組み込まれる。 図1は、本発明を組み込んだマルチプロセッサシステムの、簡単にしたブロッ ク図である。プロセッサ112は、ネットワーク114および接続116によっ て相互に連結されて、プロセッサ112に、トランシーバ117を介してプロセ ッサ間通信を提供する。ネットワーク114は、イーサネットLANのような標 準通信接続によって実施され得るし、プロセッサ112を並列に接続するバスシ ステムによっても実施され得る。そのネットワークは、来国特許第4,817, 091号に教示されるようにプロセッサが持っている入力/出力(I/O)シス テムからは独立している。上記の代わりとして、ネットワーク114は、プロセ ッサ112に種々のI/Oユニット(プリンタや二次記憶装置等(図示せず)) へのアクセスだけでなく該プロセッサ112のためのプロセッサ間通信の通信パ スをも提供する結合I/Oシステムの一部として実施してもよい。ネットワーク 114は、リングや完全連結スターおよびツリー等のポイント・ツー・ポイント ネットワークであってもよい。 プロセッサ112の各々の内側に、または各プロセッサ112に関連するよう に、メモリ118が、他のプロセッサのメモリ118とは独立に設けられ、他の プロセッサの時間及び日付クロックとは独立に、時間及び日付クロック(図示せ ず)が設けられている。また、各プロセッサ112に関連するように、一次電源 (例えば、交流電源(図示せず))を受ける電源120が設けられ、この電源か ら必要な電力(例えば直流電力)が関連のプロセッサ112の動作のために供給 される。 1つの実施形態において、プロセッサ#_112の各々に関連した内部、或い はその他の点は、形状が任意のレジスタ#_119である。形状が任意のレジス タ#_119は、アト_ニードケットNo.010577-033000で、本発明の譲渡人への 譲渡の義務下にあり、発明者Robert L.Jardine,Richard N.Collins及びA.Ric hard Zacherによる"Method to Improve Tolerance Of Non-Homogeneous Power O utages"の米国特許出願No.08/487,941に開示されている。米国特許出願No.08/ 487,941は、リファレンスによってここに取りこまれる。 ネットワーク#_114は、プロセッサ#_112がメッセージを、それぞれ の間でデータ、ステータス及び他の情報を伝えるために、一方から他方へ、又他 方から一方へメッセージを送り、又受信することができるようにする媒体を形成 する。この媒体は、一対のプロセッサごとの間で少なくとも2つのパスを有する 冗長なネットワークであることが好ましい。 図#_2は、5−プロセッサのマルチプロセッサシステム#_200を表すグ ラフ#_200である。図#_2のグラフ#_200は完全に接続されている。 5つのプロセッサ1−5の各々は、他のプロセッサ1−5の全てとコミュニケー ションリンクを有する。 図#_3は、2−プロセッサのマルチプロセッサシステム#_300を表すグ ラフ#_300である。図#_3のシステム#_300も完全に接続されている 。2つのプロセッサ1,2は互いに通信している。 いま、システム#_200を図#_4のグラフ#_400に分割する事故が発 生と仮定する。グラフ#_400において、プロセッサ1,3,4と5のグルー プは完全に接続されており、又プロセッサ1,2と5のグループは完全に接続さ れている。 グラフ#_400のプロセッサは、全てコミュニケーションの失敗の検出に関 する再グループ動作に入る。本発明によると、スプリット−ブレイン問題を避け るために、又完全に接続されたマルチプロセッサシステムを維持するために、プ ロセッサ1,3,4と5の各々が動作しつづけている間、プロセッサ2は、動作 を停止する。 同様に、コミュニケーションの失敗がシステム#_300をプロセッサ1だけ の、および図#_5のシステム#_500のプロセッサ2だけのサブグループに 分割する場合、これらのプロセッサは、再グループ動作を行なう。本発明による と、スプリット−ブレイン問題を避けるために、又完全に接続されたマルチプロ セッサシステムを維持するために、プロセッサ1が動作を続ける間、プロセッサ 2は停止する。データ構造 本発明による、スプリット−ブレイン問題、部分接続及びタイマー失敗を避け るために、好適な実施形態に用いられたデータ構造及びプロトコルが以下に説明 される。 本発明に組み込まれているマルチプロセッサシステムにおける各々のプロセッ サ#_112は、接続マトリックスCを維持する。この接続マトリックスは、コ ミュニケーションの失敗を乗り切る、グラフにおけるエッジを追跡するために用 いられる。接続マトリックスは、又最大の、完全に接続されたサブグループを決 定するためにも用いられ、コミュニケーションの失敗を乗り越え、各プロセッサ #_112がその動作を続けるか、停止するかを決定する。 接続まトリックCのサイズは、Nをマルチプロセッサシステムのプロセッサ# _112の数とした場合、N×Nである。1つの実施形態において、マトリック スの各エントリは、ビットであり、各プロセッサ#_112は、1とN間の特定 の数である。エントリC(i,j)は、プロセッサjからのメッセージを受信する プロセッサiの能力を示す。ここで、もし、能力があるならば、エントリは、1 (或いは論理真)にセットされる。もし、能力がないならば、エントリは、0(或 いは論理偽)にセットされる。 もし、プロセッサiがヘルシーであれば、エントリC(i,j)は、真にセット される。プロセッサiが死んでいるか、存在しないならば、エントリC(i,j) は、偽である。もし、プロセッサがそれ自身から再グループメッセージを受けな いならば、そのプロセッサは停止する。 もし、プロセッサj(iがjに等しくない)に通信可能に接続されているなら ば、エントリC(j,j)は、真にセットされる。もし、プロセッサj(iがjに 等し くない)に通信可能に接続されていないならば、エントリC(j,j)は、偽にセ ットされる。 各プロセッサ#_112は、ノードのプルーニング結果変数も維持する。プル ーニング結果変数もビット構造で、どのマルチプロセッサシステムのノードが以 下に説明されるノードプルーニングプロトコルをサバイブするかを示している。 他のデータ構造は、IamAliveメッセージである。1つの実施形態において、Ia mAliveメッセージは、他の情報間で、放送プロセッサ#_112のアイデンティ フィケーションを含む。首尾よく通信されると、IamAliveメッセージは、受信プ ロセッサ#_112へ放送プロセッサ#_112の連続した動作を示す。 更に他のデータ構造は、再グループメッセージである。再グループメッセージ は、放送プロセッサ#_112を識別し、そのプロセッサの通信マトリックスを 含む。したがって、再グループメッセージは、それが信じるこれらのプロセッサ #_112のアイデンティフィケーションがシステムを形成することを示す、シ ステムのプロセッサの見解を含む。再グループメッセージは、プルーニング結果 変数と注意ビットも同様に含む 本発明の1つの実施形態によるマルチプロセッサシステムは、到達することが できないプロセッサのマスクを含む。このマスクは、Nビットである。ここで、 Nは、マルチプロセッサシステムのプロセッサ#_112の数である。又、マス クにおける各エントリは、ビットであり、各プロセッサ#_112は、1とN間 の特定の数である。このマスクのメンテナンス及び使用を以下に説明する。プロトコル タイブレーカープロセッサの選択 プロセッサ#_112の1つは本発明の再編成プロセスにおいて特別の役割を 有している。このプロセッサ#_112はタイブレーカーを指定する。後述する ように、分割脳回避プロセスはタイの場合のこのプロセッサ#_112の方を好 む。さらに、残存しているすべてのプロセッサの間の十分な結合を確実にするた めに使用される(後述する)ノードプルーニングプロセスはタイブレーカープロ セッサ#_112上で実行される。また、このプロセスは非常に多くの結合故障 の場合にはタイブレーカーの方を好む。 1実施例では、グループで最低の番号を付けられたプロセッサ#_112はタ イブレーカーとして選択される。この単純な選択プロセスは、グループ内のすべ てのプロセッサ#_112が同一のタイブレーカーを選択することを保証する。 再編成及び分割脳回避 本発明によるマルチプロセッサシステムのプロセッサ#_112のそれぞれは 周期的な間隔でIamAliveメッセージを広めるためネットワーク#_114を使用 する。1実施例では、ほぼ1.2秒毎にそれぞれのプロセッサ#_112は、各 他のプロセッサ#_112への各冗長経路上の各他のプロセッサへIamAliveメッ セージを広める。ほぼ2.4秒毎に各プロセッサ#_112は、その仲間のプロ セッサ#_112から受け取ったIamAliveメッセージを調べるため検査する。プ ロセッサ#_112は、最終検査でシステムの一部であったことを知るプロセッ サ(例えば、#_112b)からIamAliveメッセージを受け取り損なう時、検査 プロセッサ# 112は再編成メッセージを広めることにより再編成動作を開始 する。 事実上、再編成動作は、IamAliveメッセージが受け取られなかったプロセッサ #_112bのための1セットのチャンスであり、事実上、健全である他のプロ セッサ#_112を確信させる。再編成動作に正確に関係するプロセッサ#_1 12bの故障は現存するプロセッサ#_112となり、それが送信する場合には 、プロセッサ#_112bからの更なるメッセージトラヒックを無視する。他の プロセッサ#_112は一度応答しないプロセッサ#_112bをシステムから 追放する。 ステージI 図#_6に戻ると、フロー図は再編成動作のステージIを示し、通常、参照番 号#_600で示されいる。プロセッサ#_112のそれぞれは再編成グループ のステージIを実行する。事実上、プロセッサ#_112は必ずしもそれらの動 作を同期させる必要はないので、一定のプロセッサは他よりも早くIamAliveメッ セージを検討し、他よりも前に再編成動作に入る。 また、プロセッサ#_112はたとえIamAliveメッセージの欠如を検出しなく ても、IamAliveメッセージの欠如を検出したプロセッサ#_112から再編成メ ッセージを最初に受け取る場合には、再編成動作のステージIに入ってもよい。 従って、仲間のプロセッサがその周期的なIamAliveメッセージを送信し損なっ たことをプロセッサ#_112が示す時(ステップ#_662b)、またはプロ セッサ#_112がプロセッサ#_112の別のものから再編成メッセージを受 け取る時(ステップ#_662b)に、ステージIが始まる。プロセッサ#_1 12がこれらの発生のいずれかを表わすと、それは再編成動作のステージIを開 始する。 次に、予め存在する再編成動作のステージIの動作に加えて、再編成動作に関 係するプロセッサ#_112はそれぞれ、ステージI動作のための最大時間を決 定する内部タイマ(図示せず)を開始する(ステップ#_664)。また、各プ ロセッサ#_112はそのメモリレジデント結合マトリックスCをすべての故障 に再設定する(すなわち、C(i,j)はすべてのi,jのためゼロである)。 また、ステップ#_664では、各プロセッサ#_122はすべてのI/O動 作を中断する。(1実施例では、サービスルーチンはネットワーク#_114上 にすべての次のI/O要求を出すよりむしろ要求キューにそれらを保持する。) この期間の間、再編成メッセージだけがネットワーク#_114を通って流れて もよい。プロセッサ#_112は、再編成動作が残存するプロセッサのセットを 完結した後(すなわち、ステージIIIの後)にのみI/O動作を再開する。 ステップ#_666では、プロセッサ#_112のそれぞれは、完全なプロセ ッサ、完全な冗長経路の再編成メッセージを送り、システムのプロセッサのビュ ーを含み、それ自身の識別、結合マトリックスC、及び光学上の警告ビットを含 んでいる。(「停電またはドロップアウトからフォウルトトレラントなマルチプ ロセッシングシステムのための方法及び装置」という表題で、1994年6月23日に 出願され、発明者がRobert L.Jardine,Richard M.Collins,Larry D.Reevesで、 この発明の譲受人に譲渡する義務を負わせた、代理人文書No.010577-031900/TA 271の米国特許出願No.08/265,585の教示によると、プロセッサ#_122は警告 ビットを設定し使用している。米国特許出願No.08/265,585はここにインコーポ レイテッドバイリファレンスされている。)この再編成メッセージは、プロセッ サ#_112の故障を示して既にそのように行われず、IamAliveメッセージを送 り、また再編成動作に入る場合には、すべての他のプロセッサ#_112を促す 。 ステップ#_668では、プロセッサ#_112はそれが受け取った再編成メ ッセージを検査しメッセージに含まれる結合マトリックスCをプロセッサ#_1 12がそのメモリ#_118に保持するものと比較する。もし相違点がある場合 には、メモリ18に保持されたシステムビューはそれに応じて更新される。 1実施例では、再編成メッセージの連結性マトリックスは、NxNビットのマ トリックスである。このビットマトリックスは、再編成メッセージを受取るプロ セッサー#112がメモリー#118に保持するNxNビットマトリックスと論 理和をとられる。従って、どのようなプロセッサーでも再編成メッセージでiが あるとマークされた、即ち再編成メッセージ連結性マトリックスでC(i,i) がTRUEとセットされれば、プロセッサー#112は、そのプロセッサーiを メモリー在駐マトリックスにあるとマークする、即ちメモリー在駐連結性マトリ ックスで、C(i,i)がTRUEとセットされる。 従って、連結性マトリックスは、上述したKNOWN−STAGE_n変数# _750を含むことができる。 さらに、プロセッサーiが(どのようなパス上の)プロセッサーjから再編成 メッセージを受取るとき、プロセッサーiは、メモリー在駐連結性マトリックス のC(i,j)エントリをTRUEとセットし、プロセッサーiは、プロセッサ ーjからメッセージを受取ることができることを示す。 上述したように、一対のプロセッサーiとj、C(i,j)とC(j,i)に 2つのエントリが存在する。プロセッサーiは、プロセッサーjから再編成メッ セージを受取るとき、エントリC(i,j)をTRUEとセットし、一方プロセ ッサーjは、プロセッサーiから再編成メッセージを受取るとき、エントリC( j,i)をTRUEとセットする。この2重エントリシステムにより、マルチプ ロセッサーシステムが対称性を壊す故障を検出することができる、即ち、プロセ ッサーiはプロセッサーjから受取ることができるが、プロセッサーjはプロセ ッサーiから受取ることができない。 全ての知られているプロセッサー#112が健全であるとわかれば、又は所定 の時間が経過すれば、ステージIは完了する。ステージII 連結性マトリックスを使用して、ステージIで知られたプロセッサーを追跡し 、ステージIIで知られたプロセッサーがステージIからのものといつ同じになる か求める。以前にある再編成オペレーションで、プロセッサー#112がステー ジIIに関係しているときステージIIを出たプロセッサーは、システム#_100 の見方について同意する。本発明の再編成オペレーションで、プロセッサーがシ ステムの見方について同意した後、ステージIIは継続する。 連結性マトリックスはまた、再編成オペレーションの最初のステージを耐えた プロセッサーのグループで完全な連結性を欠くことの検出にも使用される。再編 成オペレーションのステージIとステージII(の初め)に、連結したサブグラフ 内に存在するプロセッサーの組を求めた後、各プロセッサーは、後述され図#_ 18Aと#_18Bに示される脳分割回避方法を行い、プロセッサーの1つのサ ブグラフのみが残っていることを確認する。この方法は、ステップ#_1805 でタイブレーカープロセッサーを選択することを含む。完全に結合したサブグラ フを選択するために、ノードプルーニングプロトコルをランすることもできる。 1実施例では、各プロセッサー#_112が、(1)最後の再編成オペレーショ ンが完了する終わりに、(又は再編成オペレーションが完了していなければシス テムの始動時に)システムの一部であった、また(2)最も低い独自の識別数を有す るプロセッサー#_112をタイブレーカープロセッサーとして選択する。。 より緩やかには、プロセッサー#_112は、現在の再編成オペレーションが 始まる直前に最も低い独自識別数を有するプロセッサー#_112をタイブレー カープロセッサーとして選択する。上述したのに関連して、現在の再編成オペレ ーションが進行中の再編成オペレーションの中間で始まっても良いという点で、 この定義はより緩やかである。 本発明のスプリットブレイン回避方法を行うのに、各プロセッサー#_112 は、次の決定を行う: 1.この再編成オペレーションが開始する前に、そのグループが、上述したOU TER_SCREEN変数#_740で与えられる存在するプロセッサーの半分 以上を有すれば、プロセッサーは、ステップ#_1820と#_1825でオペ レーションを継続する。 2.この再編成オペレーションが開始する前に、そのグループが、存在するプロ セッサーの半分より少なくしか有さなければ、ステップ#_1810と#_18 15で直ちに停止する。 3.この再編成の前に、そのグループが存在するプロセッサーのちょうど半分を 有し、そのグループが少なくとも2つのプロセッサーを有すれば、ステップ#_ 1830で、タイブレーカープロセッサーを使用して次のようにタイを壊す。 ・3.1 そのグループがタイブレーカープロセッサーを含むなら、プロセッサ ーは、ステップ#_1840と#−1825でオペレーションを継続する。 ・3.2 そのグループがタイブレーカープロセッサーを含まないなら、プロセ ッサーは、ステップ#_1850で直ちに停止する。 4.そのグループが正確に1つのプロセッサーを有し、この再編成オペレーショ ンが始まる前に、正確に2つのプロセッサーが存在すれば、 ・4.1 そのプロセッサーがタイブレーカープロセッサーであれば、プロセッ サーは、ステップ#_1860と#_1865でオペレーションを継続する。 ・4.2 そのプロセッサーがタイブレーカープロセッサーでなければ、プロセ ッサーは残存しようとする:プロセッサーは最初に、ステップ#_1870でタ イブレーカープロセッサーの状態をチェックする。(1実施例では、プロセッサ ーはサービスプロセッサー(SP)にタイブレーカーの状態を得るように要求す る。SPは、タイブレーカーの状態について独立の知識を有し、この状態を戻す ことができるかもしれない。戻された状態は、次の5つの値の1つである。プロセ ッサーが停止した(又は非オペレーションのコードをランする);プロセッサー はハードウェアのエラー(セルフチェック)のフリーズ状態である;プロセッサ ーはNonStop Kernelをランしている;SPはプロセッサーと通信 しているが、何等かの理由によりプロセッサーの状態を得ることができない;状 態要求の通信が何等かの理由により失敗した。)もし、タイブレーカーが停止し たか、又はハードウェアエラーのフリーズ状態にあれば、プロセッサーは、ステ ップ#_1880と#_1865で残存する。もし、タイブレーカーとうまく通 信している状態が得られなければ(例えば、SP接続の失敗によりSPの要求が 失敗した、SPがNonStop Kernelの状態を求めることができない と回答した、又はマルチプロセッサーシステムがサービスプロセッサーの等価物 を含んでいない。)、ステップ#_1890で、プロセッサーは達し得ないプロ セッサーのマスクをチェックする。タイブレーカーが達し得ないとマークされな ければ、ステップ#_1895と#_1865で、タイブレーカーがマラトスで 残存したと、プロセッサーは想定する。しかし、タイブレーカーが達し得ないと マークされれば、タイブレーカーが健全でこの方法を行うと想定する。それは、 ステップ#_1895と#_1897で停止する。 このスプリット−ブレイン回避方法論は、プロセッサ#_112を、それ自身 を機能停止させるように導くことができる。それどころか、タイ−ブレーカー・ プロセッサ#_112でさえ、自身を機能停止させることができる。故に、プロ セッサ#_112がスプリット−ブレイン回避方法論のアプリケーションを生き 残らせている場合、それは、タイ−ブレーカー・プロセッサ#_112を再び選 択する。好ましい実施形態では、各プロセッサ#_112は、他のタイ・ブレー カーが本明細書に記載されているように選択されるまでは、ステージIIの残り のための、また、再グループ・オペレーションのその後のステージのための、更 に、ポスト−再グループ・オペレーションにおける、タイ・ブレーカーとして、 最も小さな番号が付された生き残りプロセッサを選択する。スプリット−ブレイ ン回避方法論のアプリケーションを生き残らせている全てのプロセッサ#_11 2は、同じタイ−ブレーカー・プロセッサ#_112を選び取る。 プロセッサがタイ・ブレーカーでない場合、このプロセッサは、自身がタイ− ブレーカー・プロセッサ#_112からメッセージを得る(若しくは、機能停止 検出がタイムアウトした後に再グループが再開する)までは、ステージIIにと どまる。 これはスプリット−ブレイン回避プロトコルを完了する。ノード・プルーニン グ(刈り込み)・プロトコル無しでスプリット−ブレイン回避方法諭を実施する マルチ−プロセッサ・システムについては、上述したようにステージIII乃至 Vを完了する。しかしながら、それ自身を最大の完全に接続されたマルチ−プロ セッサとして形成しようとしている、若しくは、それ自身をそのようなマルチ− プロセッサとして維持しようとしているようなシステムは、ステージIIを完了 し、以下に述べるように続行する。(勿論、マルチ−プロセッサ・システムは、 スプリット−ブレイン回避方法論とは独立して、ノード・プルーニング方法論を 適用することができる。) −再グループおよびノード・プルーニング プロセッサがタイ・ブレーカーでない場合、このプロセッサは、タイ−ブレー カー・プロセッサ#_112、若しくは、自身のプルーニング結果変数セットを 有したステージIIIにおける他のプロセッサ#_112から、自身がメッセー ジを得る(若しくは、機能停止検出がタイムアウトした後に再グループが再開す る)までは、ステージIIにとどまる。プロセッサ#_112がそのようなステ ージIIIパケットを手に入れるとすぐに、このプロセッサ#_112はステー ジIIIにエンターし、自身の局部プルーニング結果変数を自身が受け取ったス テージIIIパケットで見つけた値に設定する。 タイ・ブレーカーは、再グループ・オペレーションを生き残らせているプロセ ッサ#_112の最終グループを判断するため、連結性情報の収集、この情報の 収集をいつ中止するかの決定、および、連結性グラフのプルーニング、に関する 付加的なステージII責任を有する。 ステージIN、IIでは、プロセッサ#_112がメモリ常駐マトリックスC のコピーを含んだ再グループメッセージを交換したときは、連結性情報が、全て のプロセッサ#_112上でそれら各々のメモリ常駐連結性マトリックスCにて 構築される。タイ・ブレーカーは、他の全てのプロセッサ#_112とともに、 連結性情報を収集する。 タイ・ブレーカーは連結性情報の収集をいつ中止するのかを決定する。タイ・ ブレーカーは、全てのプロセッサ#_112に妥当な時間量を与えて、再グルー プ・メッセージを送り、これによって、連結性を確立する。タイ・ブレーカーが 情報の収集をあまりにも直ちに中止すべき場合には、構築された連結性グラフが 不完全になってしまうこともあり、この結果、利用可能なプロセッサ#_112 は、完全連結性の要求を満足させるため、デクレア・ダウンされ(宣言が取り下 げられ)、また、プルーニング・アウトされる(刈り出される)。不完全な連結 性情報は、最終の生き残りグループが全てのプロセッサ#_112上で矛盾せず 、また、完全に接続されているといった要求を妨害はしないが、セーブすること ができたプロセッサ#_112を取り出すことができる。 ある実施形態では、タイ・ブレーカーは、スプリット−ブレイン方法論を完了 した(更に、それ自身をタイ・ブレーカーとして選択した)後、ノード−プルー ニング方法論の適用に移る前に、3つの再グループ・チック(300ミリ秒離間 されている)分だけ待つ。各プロセッサ#_112は、再グループ・チック毎に 、また、その再グループ・ステージが変化したときはいつでも、全てのプロセッ サ#_112に再グループ・メッセージを伝送することから、この3チック遅延 は、各プロセッサ#_112に対して、連結性情報を含んだメッセージを送るた めに少なくとも4つの機会を可能とする、即ち、ステージIにエンターしたとき に1つ、ステージIIにエンターしたときに1つ、および、タイ・ブレーカーが 待つている間に更に2つである。更に、メッセージは全ての常駐経路上に送られ る。 このように、タイ・ブレーカーは、以下の2つの事象のうちの最初のものが生 じたときに、連結性情報の収集を停止する、即ち、(1)そのメモリ常駐連結性 マトリックスCが、全ての経路がアップであること(つまり、完全連結性が存在 すること)を表示すること、又は、(2a)スプリット−ブレイン回避方法論の 適用が完了したために、所定数の再グループ・チックが経過したこと、若しくは 、(2b)スプリット−ブレイン回避プロトコルを実施していないマルチ−プロ セッサ・システムについては、全てのステージIプロセッサがステージIIにエ ンターさせられたと判断したために、所定数の再グループ・チックが経過したこ と、である。 タイ−ブレーカー・プロセッサ#_112が連結性情報の収集を中止した後に 、タイ−ブレーカーは、プルーニング・プロセスを適用し、生き残りプロセッサ #_112の最終グループを提案する。タイ・ブレーカーは、プルーニング方法 論の効力に影響を与えることなく、それ自身をプルーニング・アウトすること( 刈り出すこと)ができることに注意してもらいたい。タイ・ブレーカーは、常に 、他のプロセッサ#_112に対してその決定を報告する責任を持つ。プルーニ ン グされた(刈り込まれた)プロセッサ#_112(タイ・ブレーカーを含む)は 、それらがステージIVにエンターされるまでは機能停止しない。 潜在的且つ部分的に接続された生き残りプロセッサのグラフから完全に接続さ れたグラフを手に入れるため、タイ・ブレーカー・プロセッサ#_112は、先 ず、全ての最大の完全に接続されたサブグラフを掲げるプロセスを実行する。そ れはその後、代替物のセットから1つを選び取るために選択プロセスを使用する 。 一態様において、これらのプロセスは、タイブレーカ・プロセッサ#_112上の 割込みコンテキストにおいて実行され、実行時間及びメモリ要求の上限は低い。 候補となる全てのサブグラフを列挙するプロセスは、切断の数が大きい場合には 、大量のメモリ及び実行サイクルを必要とする。したがって、切断の数が定数( 一態様では8)よりも大きい場合には、必ずしも最適でない完全に接続されたグ ラフを抽出する比較的単純なスキームが好ましい。 接続性マトリクスにより表わされたグラフにおける、最大で、完全に接続され たサブグラフの完全なリストを生成するための方法を、以下に記載する。 入力は、上記N×Nの接続性マトリクスCである。出力は、最大で、完全に接 続されたサブグラフを形成する1組のプロセッサのアレーである。 方法論は、次のような特徴を利用している。すなわち、頂点i及びjを含む完 全に接続されたグラフから、(切断(i,j)を形成する)エッジ(i,j)が 除去されると、2個の最大で、完全に接続されたサブグラフが形成される。一方 のサブグラフは元のグラフから頂点i(及びこれに接続されたエッジ)が除去さ れたものであり、他方のサブグラフは元のグラフから頂点j(及びそのエッジ) が除去されたものである。 部分的に接続されたグラフは、1組の切断が適用された、完全に接続されたグ ラフとして見ることができる。全ての最大で、完全に接続されたサブグラフの組 を計算するため、プロセッサ#_112はまず、接続性マトリクスCにおける切断の リストを作成する。次に、プロセッサ#_112は、1個のメンバ、すなわち元のグ ラフの全ての頂点を伴う完全に接続されたグラフを有する、最初の解の組を作成 する。プロセッサ#_112は、次いで切断を一つずつ適用することにより、解の組 を連続的に改良する。 該方法は、次のステップを有する。 1. 全てのデッド・プロセッサの組、すなわち、C(i,i)が 偽となるような全てのプロセッサiの組を計算する。 2. 接続性マトリクスを正準形に変換する。すなわち、デッド・ プロセッサに対応する行及び列を除去し、マトリクスを対称にする。 3. 全ての〃切断の組、すなわち、C(i,i)が真、C(j, j)が真(すなわち、プロセッサi及びjはアライブである)、かつC( i,j)が偽となるような全ての対(i,j)の組を計算する。Dを切断 の組のサイズにする。 4. 変数groupsは解のアレーであり、変数numgroupsは解のアレ ー中のエントリの数である。ライブ・プロセッサの組に等しい1個のグル ープを含む最初の解から開始する。 groups:=live_processors; /*groupsはSETのアレー である*/ numgroups:=1; /*アレー中の要素の数*/ 全てのライブ・プロセッサ#_112は、最初は完全に接続されている と仮定する。各切断を順に適用し、アレー中のグループを完全に接続され たサブグループに分断する。 5. 各切断を、groups中の現在の要素に適用することにより、加 工する。 切断(i,j)を、プロセッサi又はjを含まないプロセッサ#_11 2のグループに適用しても、何の影響もない。切断(i,j)を、プロセ ッサi及びjを共に含むグループに適用すると、該グループは2個の完全 に接続されたサブグループに分割され、ここで、該サブグループの一つは 元のものからプロセッサiが除去されたものであり、もう一つは元のもの からプロセッサjが除去されたものである。 グループがこのように2個のサブグループに分割された場合、プロセッサ#_11 2は新たなサブグループの各々を調べ、それが既に存在するか、あるいは既存の グループのサブセットであるかを判断する。新規かつ最大のサブグループのみが 、 グループのアレーに追加される。 以下に示すのは、この方法論を実行するためのサンプルCコードである。該サ ンプルコードは、関数group_-exists_or_is_subset ()が、所定のグループが、 現在のグループの組のメンバであるか、又は既存のグループのサブセットである かどうかを調べるものと仮定している。また、該サンプルコードは、セットの型 (型SET及び関数SetMember()、SetCopy()、SetDelete()並びにSetSwap())を実行 する関数ライブラリを仮定している。 ここで、numgoupsは最大で、完全に接続されたサブグラフであり、またgroups はこれらのサブグラフを含む。 このようにして見出されたサブグループから、1個のグループが生き残る。1 個が全てのプロセッサを同様に処理する場合には、生き残りの最も有力な候補は 、 最大のメンバ数を伴うものとして定義し得る。同等の場合には、任意のものを抽 出してよい。 一実施例では、プロセッサは、各々が提供するサービスの種類に基づく異なる 残存プライオリティを有する。例えば、本発明の譲受人から提供されるノンース トウェアでは、主もしくはバックアップ$システムプロセス(システム−ワイド サービスを提供するプロセス)を有するプロセッサは、より高い残存プライオリ ティを有する。 別の例として、上述したように、最小に番号付けられたプロセッサは最高の残 存プライオリティを有することができる。 ノード−枝刈りプロセスの実行速度は、切断Dの数及び完全に接続されたグル ープGの数に依存する。所与のDに対して、順序はD*2Dに近い。明らかに、最 悪の場合の順序は、例示の16−プロセッサシステムに対して試みるには大き過 ぎるが、これは、Dの値が非常に小さい場合には小さい。実際には、もしあった としても、切断は非常に少ないと予想される。 好ましい実施例では、N(稼働中のノード数)もしくはD(稼働中のノード間 の切断数)のどちらか一方が、例えば8よりも小さい場合には、グループのリス ティングの上記プロセスが使用される。これは、生成され、調べられるグループ 数を256までに制限する。 しかしながら、切断及び完全に接続されたサブグループの数が大きい(例えば 8よりも大きい)場合には、前グループのリスティングのプロセスは、割込みコ ンテキスト中で実行するには時間がかかり過ぎる。切断はまれな多重の障害から 生じるので、多数の切断にも関わらず、サブ−最適グループを残存グループとし て選択することは受入れ可能である。 従って、N及びDの両方が、例えば8よりも大きい場合には、タイブレーカ一 は、1つの完全に接続されたサブグループを無作為にもしくは他の簡単な方法で 選択する。 $システムプロセッサはクリティカルなリソースと考えられ、タイブレーカーは 、$システムプロセッサの内の1つを含む1グループを選択することを試みる。 もし、主$システムプロセスを実行するプロセッサが正常であるならば、タイブ レーカーは、そのプロセッサを含む1グループを選択する。しかしながら、もし 、主$システムプロセスを実行するプロセッサが止まってしまっているが、バッ クアップ$システムプロセスを実行するプロセッサが稼動しているならば、後者 のプロセッサを含む1グループが選択される。 もし、どちらの$システムプロセッサも止まっているならば、タイブレーカー は、それ自体を含む1グループを選択する。 上述の選択は以下のように進行する。 1. 選択されたプロセッサを含む1グループから始めよ。もし、正常ならば、 主$システムプロセッサを選択せよ。もし、主$システムプロセッサが止まって いるが、バックアップ$システムプロセッサが正常ならば、バックアップ$シス テムプロセッサを選択せよ。さもなければ、タイブレーカーを選択せよ。 2. 各々の稼働中のプロセッサを調べよ。もし、それが現グループの全ての構 成要素に接続されているならば、そのプロセッサをグループに加えよ。(このプ ロセスは、先に調べられたプロセッサに、より高いプライオリティを与える。何 故ならば、それらは、そのグループに加えられるプロセッサに対する接続性を有 する必要が殆どないからである。) 3. 全プロセッサが調べられたら、そのグループは完成である。このグループ は、この再グループ化事件から残存する。そして、タイブレーカーは再グループ 化オペレーションの次のステージ(ステージIII)に入る。 -- ステージIII タイブレーカーがステージIIIに入る場合、ノード枝刈りプロトコルに従って 、それは、更に、再グループ化メッセージ枝刈り結果変数を、残存するように選 択されたグループにセットする。それから、タイブレーカーは、全ての他のプロ セッサ#_112にその枝刈り結果変数を送ることによって、それがステージII Iに入ったことをそれらのプロセッサに通知する。 ステージIIIでは、各々のプロセッサ#_112は、それがステージIIIにある ことを全プロセッサ(取り除かれたものを含む)に通知し、タイブレーカーの枝 刈り決定を中継する。もし、プロセッサ#_112が、それ自体が取り除かれた と分かったならば、それがステージIVに入るまで、それは停止しない。全プロセ ッサ#_112がタイブレーカーの枝刈り決定を知らされることを保証するため に、取り除かれたプロセッサ#_112は、枝刈り結果の決定の中継に参加する 。 -- ステージIV ステージIIIのプロセッサ#_112は、ステージIIにおいて使用可能である と分かった全プロセッサ#_112がステージIIIに入ったと判断すると、ステ ージIVに入る。これは、接続されたグループ中の全プロセッサ#_112が、枝 刈り決定を通知されたことを意味する。そして、プロセッサ#_112は、新し い残存するグループにコミットできる。それ自体が取り除かれたと分かったプロ セッサ#_112は、取り除かれなかったプロセッサ#_112がステージIVに 入ったと聞くまでステージIIIにとどまる。それから、取り除かれたプロセッサ #_112は停止する。何故ならば、ステージIVの残存プロセッサ#_112は 、全ての他の残存がステージIVに入ることを確実にできるからである。(そして 、もし、ノード枝刈りを実行したタイ−ブレーカープロセッサ#_112が残存 中にないならば、そのプロセッサは停止可能である。現再グループ化オペレーシ ョンにおけるタイブレーカーの役割は完了である。) 残存しているプロセッサがステージIVに入る時、それは、そのOUTER_S CREEN及びINNER_SCREEN #730及び#740をセットして 、枝刈り結果を反映し、枝刈り結果変数によって指示されるように最小に番号付 けられた残存しているプロセッサ#_112を、次の再グループ化オペレーショ ンで使用するためのタイブレーカーとして選択し、残存しなかったプロセッサ# _112に対して出入りする全てのメッセージを一掃する。 もし、再グループ化オペレーションがステージIIIで再開されるならば、プロ セッサ#_112は枝刈り結果変数を調べる。もし、プロセッサ#_112が、 それ自体か取り除かれたと分かったならば、それは停止する。もし、いずれかの プ ロセッサ#_112が新しい残存するグループにコミットし、ステージIVに入っ たならば、取り除かれたプロセッサ#_112は、再グループ化オペレーション の再開始から残存しない。 もし、接続性が非常に劣悪であるならば、取り除かれたプロセッサ(例えばプ ロセッサ#_112b)はステージIIIで機能を停止できる。これは、例えば、 もし、プロセッサ#_112bが通信できる全プロセッサ#_112も取り除か れ、プロセッサ#_112bがステージIVに入る前に停止するならば起こり得る 。プロセッサ#_112bが、それがある時間が経過した後に進行していないこ とを検知すると、再グループ化オペレーションが再開する。上述のように、この 再開により、プロセッサ#_112bはそれ自体をすぐに強制終了する。 取り除かれたプロセッサ#_112がステージIIIで機能を停止している間に 、迅速に、残存しているプロセッサ#_112は再グループ化を完了し、取り除 かれたプロセッサ#_112が停止していることを示すので、切り離されてしま った取り除かれたプロセッサ#_112を有するシステムは、スプリット−ブレ ーン状態を一時的に体験する。しかしながら、これはデータの破損を引き起こさ ない。何故ならば、これらのプロセッサ#_112は、再グループ化オペレーシ ョンのステージIからIIIまでの間、全I/Oトラフィックを中断するからであ る。 上述のような事前に存在するステージIIIは、本発明の再グループ化オペレー ション中の本ステージIVのリマインダーを成す。ステージV及びVI 本発明の再編成操作のため、前から存在するステージIV及びVが、V及びV Iに番号を付け替えられる。到達不能プロセッサのマスクの維持 もし、プロセッサ#_112が、他のプロセッサ#_112へのどの冗長な経 路も通過しているパケットがないことを検出すると、それは、他のプロセッサ# _112に対応する到達不能プロセッサの遮蔽のビットを論理的TRUEに設定 する。しかし、新しい再編成動作は開始しない。再編成動作は、一般的なI/O を一時停止させるので、マルチプロセッサシステムは、そのような再コンフィグ レーションを行う、最小の時間だけを費やすべきである。再編成動作は、リンク 失敗によるIamAlivesの欠如を検出するために十分早めに開始するであ ろう。 到達不能プロセッサの遮蔽は、上述のようにステージIIで使用される。その 遮蔽はステージIIIまで維持される。 再編成がステージIIIにあるとき、いずれかのノード枝刈り(node pruning) は既に発生しており、従って新しいグループは自己刈り捨て(self-pruned)を行 った。その遮蔽は検査される。新しいグループがローカルプロセッサ#_112 及び到達不能プロセッサ#_112の両方を含むならば、再編成動作が再開始さ れる。 この複雑そうに見える方法は、リンク失敗が検出されたそれぞれのときに再編 成を再開始させるのに好適であるが、それは前者が、再編成パケットの送出のた めに検出されるものの、実際には再編成動作が開始された前に発生していた複数 のリンク失敗により、再編成動作が多くの回数再開始することを防止するからで ある。好適な実施形態では、再編成が進行するにつれてますます悪化する深刻な 連結性(connectivity)の問題だけでなく再編成ソフトウェアのバグも検出するた めに、再編成動作が一度も完了することなく3回より多く再開始したならば、プ ロセッサ#_112は停止する。 再編成動作が開始した後にリンクが確立されると、手順へのそれの効果は、そ の手順がどこまで進行していたかに依存する。リンクが時間内に確立され、連結 ブレーカ(tie breaker)がリンクは動作していると判断したなら、そのリンクは ”残存(survive)”する(すなわち、該リンクが接続されたプロセッサ#_11 2の1つは、確実な死を免れる)。再編成パケットは両方向に進まなくてはなら ず、またこの事実は、連結ブレーカがリンクは良好であると判断する前に、連結 ブレーカに伝達されなくはならない。再編成動作でリンクの状態の変化が発生す るのが非常に遅く、連結ブレーカがそれを検出できない場合は、該リンクはダウ ンしていると判断され、該リンクに接続されるプロセッサ#_112の少なくと も1つは殺される。この排除は容認できる。そのため、リンク失敗の結果とは異 なり、リンクを確立した結果は再編成とは言えない。再開始 再編成動作のステージを進行させるため、プロセッサ#_112は、それが以 前に受けていたプロセッサ#_112から受ける必要がある。再編成動作が開始 した後に、もしプロセッサ#_112又は通信リンクが作動しなくなった場合は 、該プロセッサ#_112は、ステージIの後の任意のステージで停止すること ができる。そのため、タイマ(図示せず)は進行の停止を検出する。プロセッサ #_112は、それが再編成動作のステージIIに入るときにタイマを開始させ 、再編成動作が安定したときステージVIに入る際に該タイマをクリアする。も し該タイマが、アルゴリズムが終了する前に満了すると、プロセッサ#_112 は再編成動作を再開始する(すなわち、ステージIに再び入る)。 プロセッサ#_112が新しいグループに入り、他のプロセッサ#_112が 死んでいることを表明した後は、再編成動作が再開したとき、追放されたプロセ ッサ#_112が戻ることは許されない。プロセッサ#_112は、それがステ ージIVに入るとき、新しいグループに入る。ステージIIで知られたプロセッ サの接続されたグラフ中のすべてのプロセッサ#_112がステージIIIに入 つて、枝刈り結果変数をその関わるグループに設定した後のみに、それは行われ る。再編成動作が今開始したなら、すべての枝刈り除外されたプロセッサ#_1 12は、枝刈り結果変数がそれらは除外されたことを示すため、それら自身を殺 す。連結されたグラフ中にない(ステージIIで)プロセッサ#_112は、ス テージIIで知られたプロセッサ#_112の中にないため、グループに加わる ことはできない。 メッセージ消去動作は、アルゴリズムが何回再開始を通過するかに関わらず、 正確に遂行されなくてはならない。再編成及びタイマ不全の検出 スプリットブレーン回避(split-brain avoidance)及び/又はノード枝刈りプ ロトコルと、独立して又はそれと共に、複数プロセッサシステムは、タイマ満了 がないことを、以下のようにして検出できる。再編成アルゴリズムを走らせてい るプロセッサ#_112は、該プロセッサ#_112がタイマの動作(tick)を受 けるまでは、ステージIを通して前進しない。もしプロセッサが、オペレーティ ングシステムデータ構造(例えば、時間リスト)にエラーを持ち込んだとしたら 、再編成エンジンは、それの周期的動作を受けず、またステージIより先に前進 しないであろう。malatoseプロセッサ#_112は、それがステージIに入った ことを示さないため、他のプロセッサはそれがダウンしていることを表明するで あろう。ステージIIの再編成メッセージ、又はプロセッサが除外されたことを 示す有害なパケットを受信すると、その欠陥のあるプロセッサは停止する。 スプリットブレーンの回避(split-brain avoidance)及びノード枝刈りシナリ オでは、連結性マトリックス(connectivity matrix)は、好適にはKNOWN_ STAGE_n変数#_750を含む。これらの実施形態では、プロセッサ#_ 112は、それがタイマ動作を受けるまでは、それの連結性マトリックスCを更 新しない。訂正されたシナリオ 上述の5プロセッサ及び2プロセッサシナリオへの本発明の適応が以下に記載 される。 図2は、5プロセッサマルチプロセッサシステム200を論理的に表現してい るグラフ200である。図2のグラフ200は、完全に接続されている。システ ム200を図4のグラフ400に分ける通信障害か発生すると、各プロセッサ1 12は、上述のスプリット−ブレイン回避方法論を適用する。例えば、プロセッ サ2は、例えば、プロセッサ3からのIamAlive(私は生きている)メッ セージを受け取ることに失敗したことに気づく場合がある。すると、プロセッサ 2は再グループオプレーションを開始する。この再グループオペレーションのス テージIにおいて、プロセッサ2は、内部タイマーを始動し、その連結性マトリ ッククCをリセットし、I/O動作を中断する。次に、プロセッサ2は再グルー プメッセージを送り、再グループメッセージを受信し且つ比較し、よって、その 連結性マトリックスCを更新する。プロセッサ2は、プロセッサ1及び5からの 再グループメッセージを受信する。これらの再グループメッセージはプロセッサ 3及び4の存在を示す。適当な制限時間に到達すると、プロセッサ2はステージ IIに進む。 ステージIIにおいて、完了した直前の再グループオペレーションの終了時に プロセッサ1が最小番号プロセッサ112であったという理由から、プロセッサ 2はプロセッサ1をタイブレーカー(tie−breaker)プロセッサ11 2に選択する。 プロセッサ2は次にスプリット−ブレイン回避方法論を適用する。プロセッサ 2は、それが属するプロセッサ112のグループが、この再グループオペレーシ ョンが始まる以前に存在したプロセッサの半分以上を有することを認識する。従 って、プロセッサ2はオペレーションを続行する。 実際、そのグループは、システム400内のプロセッサ1−5の5つ全てを有 する。プロセッサ1−5の5つ全てがこの時点でオペレーションを続行する。プ ロセッサ1−5の5つ全てがプロセッサ1をタイブレーカーに選択する。 このタイブレーカープロセッサ1は、再グループメッセージを送るために合理 的な時間が経過する迄、又は連結性マトリックCが全ての経路が切断しているこ とを示すまで、ステージIIで待機する。ここで、仮定として、全ての経路が切 断していなく、タイブレーカープロセッサ1が合理的な時間ステージIIで待機 するとする。次に、このプロセッサ1は、ノード枝刈り方法諭を用いて、再グル ープオペレーションに生き残るために、プロセッサ112の最終グループを決定 する。次に、プロセッサ1は、この決定を反映するノード枝刈り結果変数セット を有するステージIII再グループメッセージで前記決定を分配する。プロセッ サ2−5は、枝刈り結果変数セットを有するこの再グループメッセージを受信す るまでステージIIで待機する。 メモリ駐在連結性マトリックスCを入力として使用して、タイブレーカーは、 全ての停止プロセッサの組を計算する。この組は、ヌルセットである。マトリッ クスCの正準形式への変換は、このマトリックスを不変に保つ。タイブレーカー は、切断の組を{(2,3)、(2,4)、(3,2)、(4,2)}であり、 D=4であると算出し、これらの切断を生きているプロセッサ{1,2,3,4 ,5}の組に適用する。従って、完全に接続したサブグラフの最大の数は2であ る。 生き残りの基準に依存して、2つのグループの何れかが生き残ることができる 。この基準が最大のグループであれば、タイブレーカーは生き残りのためにグル ープ{1,3,4,5}を選択する。この基準が最小番号のプロセッサであれば 、 (例えば、タイブレーカーを選ぶのに使用された前の基準により、又は一つのグ ループをランダムに選択することにより)何れかのグループが生き残ることがで きる。プロセッサ2が最高優先順位プロセスを実行する場合、タイブレーカーは 生き残りのためのグループ{1,2,5}を選択することがてきる。これらは、 上述された関連特許出願に開示される基準の幾つかの単に幾つかの例であるか、 又は当分野で良く知られている。グループ{1,3,4,5}が生き残ると仮定 する。 タイブレーカープロセッサは、それが送り出す次の再グループメッセージ内の ノード枝刈り変数をセットすることによりこの決定を通信する。このメッセージ の送りは、タイブレークがステージIIIにあることを示す。メッセージの受信 は(直接的又は間接的に)他のプロセッサ2−5をステージIIIに同様に入れ る。ステージIII内の全てのプロセッサ2−5の枝刈り結果変数は、同じ値を 保持し、プロセッサ1,3,4及び5がオペレーションを続行すべきであり、プ ロセッサは2はオペレーションを停止すべきであることを示す。プロセッサ1− 5の各々は、それぞれが発生する再グループメッセージ内でこの枝刈り結果を中 継する。 プロセッサ1−5の各々は、ステージIIで、各プロセッサに知られているプ ロセッサ112の全てがステージIIIに入ったことを示す再グループメッセー ジを集め、次に、プロセッサはステージIVに入り、枝刈り結果に到達する。こ のステージで、プロセッサ2はオペレーションを停止する。再グループオペレー ションは完了するまで続行する。プロセッサ1,3,4及び5の最大の完全に接 続されたグループは、新たに再構成されたシステムとして、オペレーションを続 行する。 図3は、2プロセッサマルチプロセッサシステム300を論理的に表現してい るグラフ300である。図3のグラフ300は、完全に接続されている。システ ム300を図5のグラフ500に分ける通信障害か発生すると、各プロセッサ1 12は、他のコンピュータに、到達可能なプロセッサのマスク内に到達不可能で あるとマークして、上述のスプリット−ブレイン回避方法論を適用する。例えば 、プロセッサ1は、例えば、プロセッサ2からのIamAlive(私は生きて い る)メッセージを受け取ることに失敗したことに気づく場合がある。すると、プ ロセッサ1は再グループオプレーションを開始する。この再グループオペレーシ ヨンのステージIにおいて、プロセッサ1は、内部タイマーを始動し、その連結 性マトリッククCをリセットし、I/O動作を中断する。次に、プロセッサ1は 再グループメッセージを送り、再グループメッセージを受信し且つ比較し、よっ て、その連結性マトリックスCを更新する。このシナリオにおいて、しかしなが ら、プロセッサ1はこの様な再グループメッセージを受信しない。適当な制限時 間が経過した時に(且つプロセッサ1自体がオペレーションを続行するのに十分 なリソースを有し、適当な場合)、プロセッサ1は、ステージIIに進む。 ステージIIにおいて、完了した直前の再グループオペレーションの終了時に プロセッサ1が最小番号プロセッサ112であったという理由から、プロセッサ 1はプロセッサ1自身をタイブレーカー(tie−breaker)プロセッサ 112に選択する。 プロセッサ1は、その後、スプリットブレイン回避方法論を適用する。プロセ ッサ1は、それがその一部であるプロセッサ#_112のグループが、リグルー プオペレーションが始まる前に存在していたプロセッサ#_112の1/2より も大きくもなく小さくもないことを認識する。そのグループは、前に存在してい たプロセッサ#_112の正確に1/2であり、そのプロセッサは、それ自体が オペレーションを続行するための決定点としてのタイブレーカプロセッサ#_1 12である事実を使用する。 タイブレーカでなければ、プロセッサ2は、タイブレーカプロセッサ1の状態 をチェックするように試みる(或る実施例では、サービスプロセッサを使用して )タイプレーカの状態が決定される場合には、プロセッサ2がタイブレーカが健 全であることを認識する。プロセッサ2は、停止する。 タイブレーカプロセッサ1の状態が決定されない場合には、プロセッサ2がア ンリーチャブルプロセッサのマスクをチェックする。タイブレーカがアンリーチ ャブルとマークされることに留意して、プロセッサ2はタイブレーカが健全に停 止したと仮定する。 そこで、タイブレーカプロセッサ1は、プロセッサが停止している間オペレー ションを続行する。 プロセッサ1は、それ自身をタイブレーカプロセッサ#_112として選択し 適当な時間が経過するまでステージIIに留まる。(プロセッサ2は、通信故障が 発生しプロセッサが停止したときにRegroupメッセージを送ることができないし 実際送らない。) プロセッサ1は、枝刈りプロセスを適用し、リグープオペレーション後も生き 残るプロセッサ#_112のグループを決定する。メモリレジデント連結性マト リックスCを入力として使用することにより、タイブレーカは、全ての死んだプ ロセッサのセット{2}を計算し、そのマトリックスCをカノニカルフォームに 変換する。この変換は、プロセッサ1だけを含む1×1マトリックスを残す。タ イブレーカは、切断のセットをD=2の場合、セット{(1、2)、(2、1) }として計算する。しかしながら、生きているプロセッサ{1}のセットは、プ ロセッサ2を含まないので、そのセットにこれらの切断を適用するのは何の効果 もない。最大限の完全に接続されたグラフの数は1であり、タイブレーカは、そ れだけか生き残るであろうことを示すその枝刈り結果変数をセットする。タイブ レーカは、この結果をその後続のRegroupメッセージで通信し、したがって、Sta geIIIおよびIVを通過する。システム#_500はリグループオペレーションを 完了し、プロセッサ1だけを実行しながらオペレーションを続行する。 最後に、再び論理マルチ−プロセッサシステム#_200について考えよう。 今、プロセッサ2は、その時間リストの破損を経験し、タイマー満了割り込みを 受け取ることに失敗し、必要なIamAliveメッセージを送る能力を失っている。失 われたIamAliveメッセージを他のプロセッサ1または3〜5のいずれかにより検 出することにより、リグループオペレーションが開始される。 上記したようなリグループオペレーションのStageIでは、本発明の一実施例 に従って動作するプロセッサ1〜5は、それぞれ、タイマー満了割り込みを受け 取るまでそれぞれのStageIRegroupメッセージを送ることを控える。従って、プ ロセッサ1及び3〜5は、StageIRegroupメッセージを容易に送り続ける。 仮説により、プロセッサ2はタイマー割り込みを受け取らず、従って、Stage IRegroupメッセージを決して送らない。他のプロセッサ1及び3〜5は、それ らのそれぞれのKNOWN_STAGE_1変数#_750a(及び/又はそれらのそれぞ れの連結性マトリックスC)を更新し、プロセッサ1及び3〜5の健全性及びプ ロセッサ2の明らかな死を表示する。或る所定時間だけプロセッサ2を待った後 、プロセッサ1及び3〜5はStageIIへ進む。 StageIIでは、プロセッサ1及び3〜5は、今、StageIIRegroupメッセージを 通信している。プロセッサ1及び3〜5は、健全であり、プロセッサ2は、依然 としてマラトス(malatose)であり、StageIIRegroupメッセージは、最終的にこ の状態を表す。KNOWN_STAGE_2変数#_750bは、KNOWN_STAGE_1変数# _750aに等しくなる。 仮定により、プロセッサ2は依然としてプロセッサ1及び3〜5からRegroup メッセージを受け取っている。それは、最終的に、KNOWN_STAGE_1及び_2変 数#_750a、#_750bが等しく、プロセッサ2を除外するStageIIRegro upメッセージを受け取る。プロセッサ2はこのタイプのStageIIRegroupメッセー ジを通知して停止する。 プロセッサ1及び3〜5はリグループオペレーションの残りに進み、システム N_200’を形成する。今、システムN_200を周期的に混乱させるプロセ ッサ2から失われたIamAlivesの代わりに、システムN_200’はプロセッサ2 を共に除外する。(また、プロセッサ2は死んでおり、従って無害である。) もちろん、ここで開示した発明を組み込んだソフトウェアのプログラムテキス トは、磁気的、光学的または他のディスク;ROM、RAMN又は別の集積回路 ;磁気テープ、又は別のデータ記憶媒体に、その静的な形態で存在してもよい。 そのデータ記憶媒体は、コンピユータシステムと一体であってもよいし挿入可能 であってもよい。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バサヴァイアー ムラリー アメリカ合衆国 カリフォルニア州 94086 サニーヴェイル イースト エヴ リン アベニュー 825―#216 (72)発明者 クリシュナクマー カルール エス アメリカ合衆国 カリフォルニア州 95111 サン ホセ イースト ブラーナ ム レーン 341 (72)発明者 マーティー スリニヴァサ ディー アメリカ合衆国 カリフォルニア州 95131 サン ホセ ゴールデンレイク ロード 1410

Claims (1)

  1. 【特許請求の範囲】 1.複数のプロセッサを有している多重プロセッサシステムにおいて、各前記複 数のプロセッサは、それぞれメモリを有しており、前記多重プロセッサシステム におけるプロセッサメンバーシップに分散的に同意する方法であって、 前記複数のプロセッサを通信的に接続し; 次いで通信故障を検出し; 次いで前記複数のプロセッサのいずれがまだ動作しておりかつまだ通信的 に接続されているかをまだ動作している該複数のプロセッサのそれぞれで第1に 決定することを試みて、前記多重プロセッサシステムの前記各プロセッサのそれ ぞれのビューを決定し; 次いでまだ動作している前記各プロセッサが動作を継続するか又は動作を 停止するかをまだ動作している前記各プロセッサで第2に決定し、前記第2の決 定は、前記多重プロセッサシステムの前記各プロセッサのそれぞれのビューに基 づくものであり; 次いで前記第2の決定により前記各プロセッサの動作を継続又は停止し; 前記複数のプロセッサの第1のプロセッサの連結性情報を収集し;かつ 次いで収集した前記連結性情報に基づいて、動作を打ち切るべく前記複数 のプロセッサのあるものを前記第1のプロセッサで選択する段階を具備すること を特徴とする方法。 2.複数のプロセッサを有している多重プロセッサシステムにおいて、各前記複 数のプロセッサは、それぞれメモリを有しており、前記多重プロセッサシステム におけるプロセッサメンバーシップに分散的に同意する方法であって、 前記複数のプロセッサを通信的に接続し; 次いで通信故障を検出し; 次いで前記複数のプロセッサのいずれがまだ動作しておりかつまだ通信的 に接続されているかをまだ動作している該複数のプロセッサのそれぞれで第1に 決定することを試みて、前記各プロセッサを第1から第2のステージへのそれぞれ の進行を含んでいる方法の対象とし、前記各プロセッサを前記第1のステー ジに最初に配置することを含んでいる、前記多重プロセッサシステムの前記各プ ロセッサのそれぞれのビューを決定し; 次いで前記複数のプロセッサの一つのプロセッサの進行の状態を送り; 前記一つのプロセッサの前記進行の状態を前記複数のプロセッサの第2の プロセッサで受け取り; 前記受け取りの後、時間満了の通知が前記第2のプロセッサで発生したな らば当該第2のプロセッサの状態を更新し; その状態が更新された各プロセッサを前記第2のステージにそれぞれ進行 させ; 前記第2のプロセッサが前記第1のステージから進行することに失敗した場 合にタイマの時間満了が前記第2のプロセッサで故障したことそれゆえに前記第2 のプロセッサが動作することを効果的に打ち切ったことを決定し;かつ 次いでまだ動作している前記各プロセッサが動作を継続するか又は動作を 停止するかをまだ動作している前記各プロセッサで第2に決定し、前記第2の決 定は、前記多重プロセッサシステムの前記各プロセッサのそれぞれのビューに基 づくものであり; 次いで前記第2の決定により前記各プロセッサにおける動作を継続又は停 止する段階を具備することを特徴とする方法。 3.複数のプロセッサを有している多重プロセッサシステムにおいて、各前記複 数のプロセッサは、それぞれメモリを有しており、前記多重プロセッサシステム におけるプロセッサメンバーシップに分散的に同意する方法であって、 前記複数のプロセッサを通信的に接続し; 前記複数のプロセッサのそれぞれを第1から第2のステージへのそれぞれの 進行を含んでいる方法の対象とし、前記各プロセッサを前記第1のステージに最 初に配置し; 前記複数のプロセッサの第1のプロセッサの進行の状態を送り; 前記第1のプロセッサの前記進行の状態を前記複数のプロセッサの第2のプ ロセッサで受け取り; 前記受け取りの後、時間満了の通知が前記第2のプロセッサで発生したな らば当該第2のプロセッサの状態を更新し; その状態が更新された各プロセッサを前記第2のステージにそれぞれ進行 させ; 前記第2のプロセッサが前記第1のステージから進行することに失敗した場 合に連結性情報を送ることを失敗しかつ前記第2のプロセッサが動作することを 効果的に打ち切ったことを決定し; 前記複数のプロセッサの第3のプロセッサの連結性情報を収集し;かつ 収集した前記連結性情報に基づいて、動作を打ち切るべく前記複数のプロ セッサのあるものを前記第3のプロセッサで選択する段階を具備することを特徴 とする方法。 4.複数のプロセッサを有している多重プロセッサシステムにおいて、各前記複 数のプロセッサは、それぞれメモリを有しており、前記多重プロセッサシステム におけるプロセッサメンバーシップに分散的に同意する方法であって、 前記複数のプロセッサを通信的に接続し; 次いで通信故障を検出し; 次いで前記複数のプロセッサのいずれがまだ動作しておりかつまだ通信的 に接続されているかをまだ動作している該複数のプロセッサのそれぞれで第1に 決定することを試みて、前記各プロセッサを第1から第2のステージへのそれぞれ の進行を含んでいる方法の対象とすること、前記各プロセッサを前記第1のステ ージに最初に配置することを含んでいる、前記多重プロセッサシステムの前記各 プロセッサのそれぞれのビューを決定し、; 次いで前記複数のプロセッサの一つのプロセッサの進行の状態を送り; 前記一つのプロセッサの前記進行の状態を前記複数のプロセッサの第2の プロセッサで受け取り; 前記受け取りの後、時間満了の通知が前記第2のプロセッサで発生したな らば当該第2のプロセッサの状態を更新し; その状態が更新された各プロセッサを前記第2のステージにそれぞれ進行 させ; 前記第2のプロセッサが前記第1のステージから進行することに失敗した 場合にタイマの時間満了が前記第2のプロセッサで故障したことそれゆえに前記 第2のプロセッサが動作することを効果的に打ち切ったことを決定し;かつ 次いでまだ動作している前記各プロセッサが動作を継続するか又は動作を 停止するかをまだ動作している前記各プロセッサで第2に決定し、前記第2の決 定は、前記多重プロセッサシステムの前記各プロセッサのそれぞれのビューに基 づくものであり; 次いで前記第2の決定により前記各プロセッサにおける動作を継続又は停 止し; 前記複数のプロセッサの第3のプロセッサの連結性情報を収集し;かつ 収集した前記連結性情報に基づいて、動作を打ち切るべく前記複数のプロ セッサのあるものを前記第3のプロセッサで選択する段階を具備することを特徴 とする方法。
JP53214598A 1997-01-28 1998-01-23 多重プロセッサシステムにおけるプロセッサメンバーシップの分散形取り決め Ceased JP2001509291A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US08/790,030 US6002851A (en) 1997-01-28 1997-01-28 Method and apparatus for node pruning a multi-processor system for maximal, full connection during recovery
US08/790,269 US5991518A (en) 1997-01-28 1997-01-28 Method and apparatus for split-brain avoidance in a multi-processor system
US08/789,257 US5884018A (en) 1997-01-28 1997-01-28 Method and apparatus for distributed agreement on processor membership in a multi-processor system
US08/789,257 1997-01-28
PCT/US1998/001311 WO1998033120A1 (en) 1997-01-28 1998-01-23 Distributed agreement on processor membership in a multi-processor system

Publications (2)

Publication Number Publication Date
JP2001509291A true JP2001509291A (ja) 2001-07-10
JP2001509291A5 JP2001509291A5 (ja) 2005-09-08

Family

ID=25149431

Family Applications (3)

Application Number Title Priority Date Filing Date
JP53217098A Ceased JP2001511922A (ja) 1997-01-28 1998-01-22 多重プロセッサシステムにおけるスプリット−ブレイン防止のための方法及び装置
JP53214598A Ceased JP2001509291A (ja) 1997-01-28 1998-01-23 多重プロセッサシステムにおけるプロセッサメンバーシップの分散形取り決め
JP53476398A Ceased JP2001511278A (ja) 1997-01-28 1998-01-27 回復中に最大限の全接続に対しマルチプロセッサシステムをノード剪定する方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP53217098A Ceased JP2001511922A (ja) 1997-01-28 1998-01-22 多重プロセッサシステムにおけるスプリット−ブレイン防止のための方法及び装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP53476398A Ceased JP2001511278A (ja) 1997-01-28 1998-01-27 回復中に最大限の全接続に対しマルチプロセッサシステムをノード剪定する方法及び装置

Country Status (5)

Country Link
US (3) US5991518A (ja)
EP (3) EP1012717A4 (ja)
JP (3) JP2001511922A (ja)
CA (3) CA2279175A1 (ja)
WO (3) WO1998033121A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019235286A1 (ja) * 2018-06-08 2019-12-12 住友電装株式会社 通信装置及び制御方法
JP2019214353A (ja) * 2018-06-08 2019-12-19 住友電装株式会社 通信装置及び制御方法

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09245007A (ja) * 1996-03-11 1997-09-19 Toshiba Corp 情報処理装置及び情報処理方法
JP3537281B2 (ja) * 1997-01-17 2004-06-14 株式会社日立製作所 共有ディスク型多重系システム
US6802062B1 (en) * 1997-04-01 2004-10-05 Hitachi, Ltd. System with virtual machine movable between virtual machine systems and control method
US6370585B1 (en) * 1997-09-05 2002-04-09 Sun Microsystems, Inc. Multiprocessing computer system employing a cluster communication launching and addressing mechanism
US6633916B2 (en) 1998-06-10 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for virtual resource handling in a multi-processor computer system
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6332180B1 (en) 1998-06-10 2001-12-18 Compaq Information Technologies Group, L.P. Method and apparatus for communication in a multi-processor computer system
US6260068B1 (en) 1998-06-10 2001-07-10 Compaq Computer Corporation Method and apparatus for migrating resources in a multi-processor computer system
US6199179B1 (en) * 1998-06-10 2001-03-06 Compaq Computer Corporation Method and apparatus for failure recovery in a multi-processor computer system
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6542926B2 (en) 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
JPH11143729A (ja) * 1997-11-07 1999-05-28 Nec Corp フォールトトレラントコンピュータ
JP3866426B2 (ja) * 1998-11-05 2007-01-10 日本電気株式会社 クラスタ計算機におけるメモリ障害処理方法及びクラスタ計算機
US6327668B1 (en) * 1998-06-30 2001-12-04 Sun Microsystems, Inc. Determinism in a multiprocessor computer system and monitor and processor therefor
US6389551B1 (en) * 1998-12-17 2002-05-14 Steeleye Technology, Inc. Method of preventing false or unnecessary failovers in a high availability cluster by using a quorum service
US6687847B1 (en) * 1999-04-21 2004-02-03 Cornell Research Foundation, Inc. Failure detector with consensus protocol
US7020695B1 (en) * 1999-05-28 2006-03-28 Oracle International Corporation Using a cluster-wide shared repository to provide the latest consistent definition of the cluster (avoiding the partition-in time problem)
US7076783B1 (en) 1999-05-28 2006-07-11 Oracle International Corporation Providing figure of merit vote from application executing on a partitioned cluster
DE69911000T2 (de) * 1999-07-28 2004-05-19 Motorola, Inc., Schaumburg Vorrichtung und Verfahren zur Initialisierung eines verteilten Rechnersystems
US6490693B1 (en) * 1999-08-31 2002-12-03 International Business Machines Corporation Dynamic reconfiguration of a quorum group of processors in a distributed computing system
US6622260B1 (en) 1999-12-30 2003-09-16 Suresh Marisetty System abstraction layer, processor abstraction layer, and operating system error handling
US6862613B1 (en) 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6658587B1 (en) 2000-01-10 2003-12-02 Sun Microsystems, Inc. Emulation of persistent group reservations
US6748429B1 (en) 2000-01-10 2004-06-08 Sun Microsystems, Inc. Method to dynamically change cluster or distributed system configuration
US6769008B1 (en) 2000-01-10 2004-07-27 Sun Microsystems, Inc. Method and apparatus for dynamically altering configurations of clustered computer systems
US6757836B1 (en) 2000-01-10 2004-06-29 Sun Microsystems, Inc. Method and apparatus for resolving partial connectivity in a clustered computing system
US6789213B2 (en) 2000-01-10 2004-09-07 Sun Microsystems, Inc. Controlled take over of services by remaining nodes of clustered computing system
JP2001345428A (ja) 2000-03-27 2001-12-14 Toshiba Corp 半導体装置とその製造方法
US6675315B1 (en) * 2000-05-05 2004-01-06 Oracle International Corp. Diagnosing crashes in distributed computing systems
US6725261B1 (en) * 2000-05-31 2004-04-20 International Business Machines Corporation Method, system and program products for automatically configuring clusters of a computing environment
US7047196B2 (en) 2000-06-08 2006-05-16 Agiletv Corporation System and method of voice recognition near a wireline node of a network supporting cable television and/or video delivery
US6665811B1 (en) * 2000-08-24 2003-12-16 Hewlett-Packard Development Company, L.P. Method and apparatus for checking communicative connectivity between processor units of a distributed system
US7711790B1 (en) * 2000-08-24 2010-05-04 Foundry Networks, Inc. Securing an accessible computer system
US7386621B1 (en) 2000-08-31 2008-06-10 Sharp Laboratories Of America, Inc. Efficient and reliable transmission via a hybrid broadcast-point-to-point system
US20020040391A1 (en) * 2000-10-04 2002-04-04 David Chaiken Server farm formed of systems on a chip
US6965936B1 (en) * 2000-12-06 2005-11-15 Novell, Inc. Method for detecting and resolving a partition condition in a cluster
US6785678B2 (en) 2000-12-21 2004-08-31 Emc Corporation Method of improving the availability of a computer clustering system through the use of a network medium link state function
US7076750B1 (en) * 2001-02-06 2006-07-11 Advanced Micro Devices, Inc. Method and apparatus for generating trenches for vias
US8095370B2 (en) 2001-02-16 2012-01-10 Agiletv Corporation Dual compression voice recordation non-repudiation system
KR100570145B1 (ko) * 2001-02-24 2006-04-12 인터내셔널 비지네스 머신즈 코포레이션 동적 재분할을 통해 수퍼컴퓨터에 장애 허용성을 제공하는방법
US20020124201A1 (en) * 2001-03-01 2002-09-05 International Business Machines Corporation Method and system for log repair action handling on a logically partitioned multiprocessing system
US6952766B2 (en) 2001-03-15 2005-10-04 International Business Machines Corporation Automated node restart in clustered computer system
US6918051B2 (en) * 2001-04-06 2005-07-12 International Business Machines Corporation Node shutdown in clustered computer system
US6820221B2 (en) * 2001-04-13 2004-11-16 Hewlett-Packard Development Company, L.P. System and method for detecting process and network failures in a distributed system
US6931564B2 (en) * 2001-07-13 2005-08-16 International Business Machines Corporation Failure isolation in a distributed processing system employing relative location information
US6880100B2 (en) * 2001-07-18 2005-04-12 Smartmatic Corp. Peer-to-peer fault detection
US6925582B2 (en) * 2001-08-01 2005-08-02 International Business Machines Corporation Forwarding of diagnostic messages in a group
US6766482B1 (en) 2001-10-31 2004-07-20 Extreme Networks Ethernet automatic protection switching
US20030182479A1 (en) * 2002-03-22 2003-09-25 Dieter Massa Implementing clustering in raid controllers
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
US7092990B2 (en) * 2002-06-26 2006-08-15 International Business Machines Corporation Handling node address failure in a distributed nodal system of processors
US7877483B1 (en) * 2002-10-28 2011-01-25 Cisco Technology, Inc. Virtual local area network pruning protocol
US20040153558A1 (en) * 2002-10-31 2004-08-05 Mesut Gunduc System and method for providing java based high availability clustering framework
DE10328059A1 (de) * 2003-06-23 2005-01-13 Robert Bosch Gmbh Verfahren und Vorrichtung zur Überwachung eines verteilten Systems
US7739541B1 (en) 2003-07-25 2010-06-15 Symantec Operating Corporation System and method for resolving cluster partitions in out-of-band storage virtualization environments
US7987250B2 (en) * 2003-07-30 2011-07-26 International Business Machines Corporation Maximum clique in a graph
US7231543B2 (en) * 2004-01-14 2007-06-12 Hewlett-Packard Development Company, L.P. Systems and methods for fault-tolerant processing with processor regrouping based on connectivity conditions
JP3808874B2 (ja) * 2004-03-12 2006-08-16 東芝ソリューション株式会社 分散システム及び多重化制御方法
US7293198B2 (en) * 2004-03-25 2007-11-06 Emc Corporation Techniques for maintaining operation of data storage system during a failure
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US8020141B2 (en) * 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US7600232B2 (en) * 2004-12-07 2009-10-06 Microsoft Corporation Inter-process communications employing bi-directional message conduits
US7451435B2 (en) * 2004-12-07 2008-11-11 Microsoft Corporation Self-describing artifacts and application abstractions
JP4182486B2 (ja) * 2004-12-20 2008-11-19 日本電気株式会社 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
US7933966B2 (en) * 2005-04-26 2011-04-26 Hewlett-Packard Development Company, L.P. Method and system of copying a memory area between processor elements for lock-step execution
US7590885B2 (en) * 2005-04-26 2009-09-15 Hewlett-Packard Development Company, L.P. Method and system of copying memory from a source processor to a target processor by duplicating memory writes
US7332818B2 (en) * 2005-05-12 2008-02-19 Endicott Interconnect Technologies, Inc. Multi-chip electronic package with reduced line skew and circuitized substrate for use therein
US7739677B1 (en) 2005-05-27 2010-06-15 Symantec Operating Corporation System and method to prevent data corruption due to split brain in shared data clusters
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US20070094495A1 (en) * 2005-10-26 2007-04-26 Microsoft Corporation Statically Verifiable Inter-Process-Communicative Isolated Processes
US20070168507A1 (en) * 2005-11-15 2007-07-19 Microsoft Corporation Resource arbitration via persistent reservation
US20070174655A1 (en) * 2006-01-18 2007-07-26 Brown Kyle G System and method of implementing automatic resource outage handling
US8078907B2 (en) * 2006-01-19 2011-12-13 Silicon Graphics, Inc. Failsoft system for multiple CPU system
US8032898B2 (en) * 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US20080244507A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
US8789063B2 (en) * 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US20080263379A1 (en) * 2007-04-17 2008-10-23 Advanced Micro Devices, Inc. Watchdog timer device and methods thereof
US7826455B2 (en) * 2007-11-02 2010-11-02 Cisco Technology, Inc. Providing single point-of-presence across multiple processors
US7836335B2 (en) * 2008-04-11 2010-11-16 International Business Machines Corporation Cost-reduced redundant service processor configuration
US7958341B1 (en) 2008-07-07 2011-06-07 Ovics Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory
US7870365B1 (en) 2008-07-07 2011-01-11 Ovics Matrix of processors with data stream instruction execution pipeline coupled to data switch linking to neighbor units by non-contentious command channel / data channel
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US8327114B1 (en) 2008-07-07 2012-12-04 Ovics Matrix processor proxy systems and methods
KR101722810B1 (ko) 2008-12-03 2017-04-05 인터디지탈 패튼 홀딩스, 인크 캐리어 집적에 대한 업링크 파워 헤드룸 보고
EP2484164B1 (en) 2009-10-01 2014-07-16 InterDigital Patent Holdings, Inc. Power control methods and apparatus
US8108712B1 (en) * 2009-10-30 2012-01-31 Hewlett-Packard Development Company, L.P. Method and apparatus for removing a computer from a computer cluster observing failure
US8730829B2 (en) 2010-10-01 2014-05-20 Mediatek Inc. Indication of user equipment transmit power capacilty in carrier aggregation
US20120239810A1 (en) * 2011-03-18 2012-09-20 International Business Machines Corporation System, method and computer program product for clustered computer environment partition resolution
KR102263020B1 (ko) 2011-09-30 2021-06-09 인터디지탈 패튼 홀딩스, 인크 무선 통신의 다중점 송신
US8819484B2 (en) * 2011-10-07 2014-08-26 International Business Machines Corporation Dynamically reconfiguring a primary processor identity within a multi-processor socket server
JP5653332B2 (ja) * 2011-10-28 2015-01-14 株式会社東芝 周期エラー検出方法および周期エラー検出回路
JP6244009B2 (ja) 2013-04-03 2017-12-06 インターデイジタル パテント ホールディングス インコーポレイテッド 累積された送信電力制御コマンドおよび対応するアップリンクサブフレームセットに基づいてアップリンク送信電力を制御するための方法および装置
US9450852B1 (en) * 2014-01-03 2016-09-20 Juniper Networks, Inc. Systems and methods for preventing split-brain scenarios in high-availability clusters
US10007629B2 (en) 2015-01-16 2018-06-26 Oracle International Corporation Inter-processor bus link and switch chip failure recovery
CN105974356B (zh) * 2016-07-22 2019-02-05 国网浙江省电力公司电力科学研究院 一种电力计量自动化检定流水线故障诊断方法
US10606714B2 (en) 2017-09-05 2020-03-31 International Business Machines Corporation Stopping central processing units for data collection based on event categories of events
US10740030B2 (en) * 2017-09-06 2020-08-11 International Business Machines Corporation Stopping a plurality of central processing units for data collection based on attributes of tasks
US10528408B2 (en) 2018-03-06 2020-01-07 International Business Machines Corporation Symmetric connectivity over SCSI where the initiator and target are symmetric
US11042443B2 (en) * 2018-10-17 2021-06-22 California Institute Of Technology Fault tolerant computer systems and methods establishing consensus for which processing system should be the prime string
US11500743B2 (en) 2019-02-01 2022-11-15 Nuodb, Inc. Node failure detection and resolution in distributed databases

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4342083A (en) * 1980-02-05 1982-07-27 The Bendix Corporation Communication system for a multiple-computer system
US4323966A (en) * 1980-02-05 1982-04-06 The Bendix Corporation Operations controller for a fault-tolerant multiple computer system
US4399531A (en) * 1980-09-29 1983-08-16 Rockwell International Corporation Distributed digital data communications network
US4340776A (en) * 1980-10-29 1982-07-20 Siemens Corporation Modular telecommunication system
US4590554A (en) * 1982-11-23 1986-05-20 Parallel Computers Systems, Inc. Backup fault tolerant computer system
JPS60191536A (ja) * 1984-03-13 1985-09-30 Nec Corp デ−タ処理装置障害通知方式
US4718002A (en) * 1985-06-05 1988-01-05 Tandem Computers Incorporated Method for multiprocessor communications
US4757442A (en) * 1985-06-17 1988-07-12 Nec Corporation Re-synchronization system using common memory bus to transfer restart data from non-faulty processor to failed processor
US4868818A (en) * 1987-10-29 1989-09-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Fault tolerant hypercube computer system architecture
US4879716A (en) * 1987-12-23 1989-11-07 Bull Hn Information Systems Inc. Resilient data communications system
JPH02287858A (ja) * 1989-04-28 1990-11-27 Toshiba Corp 分散処理システムのリスタート方式
US4939752A (en) * 1989-05-31 1990-07-03 At&T Company Distributed timing recovery for a distributed communication system
JP3118855B2 (ja) * 1991-04-10 2000-12-18 株式会社日立製作所 マルチプロセッサシステム
JPH05128080A (ja) * 1991-10-14 1993-05-25 Mitsubishi Electric Corp 情報処理装置
US5367697A (en) * 1991-10-22 1994-11-22 Bull Hn Information Systems Inc. Means for providing a graceful power shut-down capability in a multiprocessor system having certain processors not inherently having a power shut-down capability
US5452441A (en) * 1994-03-30 1995-09-19 At&T Corp. System and method for on-line state restoration of one or more processors in an N module redundant voting processor system
US5592610A (en) * 1994-12-21 1997-01-07 Intel Corporation Method and apparatus for enhancing the fault-tolerance of a network
US5687308A (en) * 1995-06-07 1997-11-11 Tandem Computers Incorporated Method to improve tolerance of non-homogeneous power outages
US5666486A (en) * 1995-06-23 1997-09-09 Data General Corporation Multiprocessor cluster membership manager framework

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019235286A1 (ja) * 2018-06-08 2019-12-12 住友電装株式会社 通信装置及び制御方法
JP2019214353A (ja) * 2018-06-08 2019-12-19 住友電装株式会社 通信装置及び制御方法

Also Published As

Publication number Publication date
JP2001511922A (ja) 2001-08-14
EP0954783A1 (en) 1999-11-10
CA2275241A1 (en) 1998-07-30
WO1998034457A3 (en) 1998-11-19
CA2279175A1 (en) 1998-07-30
EP0954783A4 (en) 2005-10-26
EP1012728A4 (en) 2005-07-20
EP1012728A2 (en) 2000-06-28
EP1012717A4 (en) 2005-07-06
US5884018A (en) 1999-03-16
CA2279185A1 (en) 1998-08-13
US5991518A (en) 1999-11-23
EP1012717A1 (en) 2000-06-28
WO1998034457A2 (en) 1998-08-13
US6002851A (en) 1999-12-14
WO1998033120A1 (en) 1998-07-30
JP2001511278A (ja) 2001-08-07
WO1998033121A1 (en) 1998-07-30

Similar Documents

Publication Publication Date Title
JP2001509291A (ja) 多重プロセッサシステムにおけるプロセッサメンバーシップの分散形取り決め
WO1998033121A9 (en) Method and apparatus for split-brain avoidance in a multi-process or system
US11265216B2 (en) Communicating state information in distributed operating systems
US5805785A (en) Method for monitoring and recovery of subsystems in a distributed/clustered system
JP2001511277A (ja) マルチプロセッサシステムの回復中のタイマチックを許容するための方法および装置
EP0887731B1 (en) Membership in an unreliable distributed computer system
US8615578B2 (en) Using a standby data storage system to detect the health of a cluster of data storage servers
TWI235299B (en) Method for providing application cluster service with fault-detection and failure-recovery capabilities
US20180176120A1 (en) Maintaining coherency in distributed operating systems for network devices
JP2005512190A (ja) ネットワーク化システムにおけるリソースの高可用性をもたらす実複合オブジェクト
JP2001521222A (ja) 分散型コンピュータ・システムにおいてクラスタ・メンバーシップを決定する方法
JPH0761083B2 (ja) デュアル・リング再構成装置
WO1998034456A9 (en) Method and apparatus for tolerance of lost timer ticks during recovery of a multi-processor system
US6665811B1 (en) Method and apparatus for checking communicative connectivity between processor units of a distributed system
CN104811348A (zh) 可用性装置、具有可用性装置的储存局域网络及其操作方法
Morgan et al. A survey of methods for improving computer network reliability and availability
Liu et al. D-Paxos: building hierarchical replicated state machine for cloud environments
JPH07319836A (ja) 障害監視方式
CA2719673A1 (en) Fencing shared cluster resources
KR20030058144A (ko) 정보통신 시스템의 프로세스 장애 감시방법 및 복구방법
JP2023104302A (ja) クラスタシステム、復旧方法
McConnell et al. Detouring and replication for fast and reliable internet-scale stream processing
Soi On reliability of a computer network

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050114

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080226

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080715

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20080715

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080909