JP5078347B2 - 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法 - Google Patents

複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法 Download PDF

Info

Publication number
JP5078347B2
JP5078347B2 JP2006355054A JP2006355054A JP5078347B2 JP 5078347 B2 JP5078347 B2 JP 5078347B2 JP 2006355054 A JP2006355054 A JP 2006355054A JP 2006355054 A JP2006355054 A JP 2006355054A JP 5078347 B2 JP5078347 B2 JP 5078347B2
Authority
JP
Japan
Prior art keywords
node
alternative
packet
nodes
adjacent
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.)
Expired - Fee Related
Application number
JP2006355054A
Other languages
English (en)
Other versions
JP2008165531A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2006355054A priority Critical patent/JP5078347B2/ja
Priority to CN2007101698858A priority patent/CN101211282B/zh
Publication of JP2008165531A publication Critical patent/JP2008165531A/ja
Application granted granted Critical
Publication of JP5078347B2 publication Critical patent/JP5078347B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、複数のノードを有するコンピュータ・システムに関する。特に、本発明は、トーラス・ネットワークの故障ノードの修復方法(いわゆるフェイルオーバー)に関する。
ここで、フェイル・オーバーとは、ノードに障害が発生した場合に、代替ノードに処理を継ぐ機能を言う。
従来、大規模な並列計算システム(コンピュータ・システム)において、トーラス・ネットワーク(以下「トーラス」(TORUS)ともいう。)が用いられている。トーラス・ネットワークは、ある立体形状をなす3次元空間の各格子点に通信ノード(以下「計算ノード」「IOノード」とも言う)を配置した場合において互いに隣接して配置される通信ノードを互いに接続した通信ネットワークをいう。トーラス・ネットワークは、2次元トーラスであれば正方形、3次元トーラスであれば立方体に構成することが最も望ましい。
図1は、コンピュータ・システム10および情報処理装置20の全体構成を示す。コンピュータ・システム10は、複数の通信ノード(後述の例では通信ノードは3次元格子点(x、y、z、)に配置される)を有する。そして、コンピュータ・システム10は、複数の通信ノードのそれぞれにおいて、例えば数値計算等のためのプログラムを実行する。情報処理装置20は、コンピュータ・システム10中の各通信ノードに対し、プログラムの実行要求を送信する。この実行要求には、実行すべき処理内容のみならず、他の何れの通信ノードから受け取った実行結果を用いてプログラムを実行するか、または、実行結果を他の何れの通信ノードに対して実行するかの指示が含まれる。即ち、コンピュータ・システム10は、情報処理装置20からの要求に応じてプログラムを並列実行して、その実行結果を情報処理装置20に返信する。これにより、単一の通信ノードによってプログラムを実行するよりも極めて効率的にプログラムを実行することができる。
図2は、コンピュータ・システム10のトーラス・ネットワークの構成部分を示す。コンピュータ・システム10は、通信ノード(以下、「計算ノード」、「トーラスノード」という)12と、通信リンク(以下「リンク」という)13とを有する。通信ノード12のそれぞれは、他のそれぞれの通信ノードと並列にプログラムを実行する。通信ノード12のそれぞれは、典型的には、プロセッサ(CPU、MPUまたは中央処理装置)である。また、通信ノード12のそれぞれは、DRAMなどの記憶装置であってもよいし、プロセッサを同時に併設してもよい。
情報処理装置20は、CPU及びハードディスクを有する。従来の複数のノードを有するコンピュータ・システム10は、複数の計算ノード12からなるトーラス・ネットワーク10と1つのIOノードを含む。コンピュータ・システムの主要部分を構成する各計算ノードはトーラス・ネットワークのリンク13(図2)とは別に、ツリー・ネットワークのリンク15(図3の計算ノード12の接続関係)と最上位の1つのIOノード14でツリー・ネットワークのリンクを形成する。コンピュータ・システム10は、このツリー・ネットワークにより情報処理装置20に接続される。
トーラス・ネットワークは、隣接された計算ノード(最近接の格子点間のノード)とのみ接続されるため、個々のノードに置けるルーティングのオーバーヘッドが小さく構成も簡単であるためハードウエア・システムを実現することが容易である。またネットワーク自体がスケーラブルであるため、IBM BlueGene/LをはじめとするMassive Parrallelコンピュータ・システムによく利用される。しかしながら、トーラス・ネットワークでは、隣接された計算ノードとしか接続されていないため、1つの計算ノードが故障した場合、そのノードの代替ノードを持つことが困難である。
一般に冗長性を考慮したシステムでは、あるノードが故障した場合、そのノードを代替するノードが割当てられる。以降の処理は故障ノードに代わりに代替ノードで行われることになる。図4は、2次元格子点位置(x、y)配置されたノードの一つが故障した場合を示す。トーラス・ネットワーク自体は隣接ノードとしか接続されていないため、代替ノードをトーラスの論理的に同じ3次元格子点位置(x、y、z)に配置することはできない。代替ノードをアサインすることが出来ないか、アサイン出来たとしても、代替ノードへのルーティングが非常に複雑になる。そのため、オーバーヘッドが大きくパフォーマンスを著しく低下させる。このような問題点は、3次元格子点に配置されたトーラスノード(計算ノード)が故障した場合にその代替ノードを与える際に顕著になる。
この課題にして、IBMの並列コンピュータ・システムでは以下のようにシステム運用を行っている。例えば、IBM BlueGene/L等では複数のノードを有する大規模集積されたシステムである。多数のノードを有する並列コンピュータ・システムにおいては、スカラブル(scable)にノードを拡張できるハードウエアであるが、ノードが多くなれば故障は発生する確率が増す。特定のノードが故障した場合には電源を落としてノードを交換し、その後最後にハードディスク(HDD)に書かれた(バックアップしている)チェックポイントから計算を再開するという方法がとられている。ノード数が増えれば増えるほど故障率も上がり、このことがシステム全体のスループットを大きく下げる原因(問題)になってしまう。
特許文献1は、マルチプロセッサ並列ネットワークにおいてハードウエア障害が生じた場合にどのようにして並列ネットワークを構築し直す方法を提供する。この方法は、マルチプロセッサ並列ネットワークにおいてハードウエア障害が生じたネットワークを回復させるとう課題を解決することを目的としている。多数のノードからなる並列コンピュータ・システムにおいて故障の生じたプロセッサを含むグループを冗長なプロセッサを含むグループにより交換して、ハードウエア障害から回復できるようにしている。そのために、特許文献1は、スイッチモジュールを用いてトーラスを結線のやり直しなしに動的に分割する。例えば、4×4×4の3Dトーラスの1ノードでエラーが発生した場合、1×4×4と3×4×4に(1×4×4に故障ノードが含まれるように)分割し、3×4×4で計算をやり直すという方法である。この方法では、ノード数がかわってしまう。また、この方法は、はじめから5×4×4を1×4×4+4×4×4と分割しておいて、エラーがおこったら故障ノードが1×4×4に含まれるように再分割する。これらの方法では、並列ネットワークにおいて計算実行途中における故障ノードを回復して、途中までの計算が無駄になる。
特許公表第2004−532447号公報
上記の通り、複数のノードを有する並列システムにおいて、ノード故障などハードウエア障害が生じた場合、実行中の計算を無駄にすることを解決しない。また、既存のトーラス・ネットワークの構成を大幅に変更する必要があるために、計算実行のパフォーマンスの向上が図れない。特に、長時間かけて計算した科学技術計算、金融工学などの分野では、ノンストップで継続的に計算履歴を取得したい場合に、ユーザ及びシステム運用者に損失は大きい。
そこで本発明は、上記の課題を解決することのできるトーラスネットワーク(コンピュータ・システム)を提供することを目的とする。
また本発明は、上記の課題を解決することのできる複数のノードを有するコンピュータ・システム(トーラス・ネットワーク)の故障ノードの修復(フェイルオーバー)する方法を提供することを目的とする。
かかる目的のもと、本発明は、3次元格子点(アドレス)に配置され隣接格子点間でリンクを形成する複数の計算ノードからなるトーラス・ネットワークと、複数のIOノードからなるツリー・ネットワークとを有し前記計算ノードの各々は、前記ツリー・ネットワークの末端のIOノードとリンクを形成する、コンピュータ・システムにおいて計算の実行中に1つの計算ノードが故障した場合フェイル・オーバーする方法である。この方法は、計算の実行中に故障の計算ノードを検出するステップと、前記故障の計算ノード(故障ノード)にリンクされた前記IOノードを、前記故障ノードのアドレスに一次元増やしたアドレスにより特定される代替ノードとするステップと、前記故障ノードに隣接する計算ノード(隣接ノード)が前記故障ノード宛のパケットを受取ると、前記パケットを前記代替ノードにルーティングするステップと、を備えることを特徴とする。
また、この方法において、前記コンピュータ・システムの複数の計算ノードは、3次元トーラスとして接続されたa×b×c個のアレイであり、前記計算ノードのそれぞれは隣接する計算ノードへ+および−のx,y,z方向に6つのリンクを形成し、
前記コンピュータ・システムの前記末端のIOノードは、前記3次元トーラスのz面のa×b個のアレイの所定の数の計算ノードとリンクを形成し、前記計算ノードは、全体で7つのリンクを有することを特徴とする。
また、この方法において、前記IOノードを代替ノードとするステップは、前記故障ノード(x、y、z)とリンクを形成する前記IOノードを代替ノードとして前記代替ノードのアドレス(x、y、z、1)を、前記故障ノードに隣接する計算ノードに知らせるステップを含むことを特徴とする。
また、この方法において、前記代替ノードに到達した前記パケットが指定するジョブを前記代替ノードにおいて処理するステップを更に含むことを特徴とする。
また、この方法において、前記代替ノードは前記ジョブの処理結果を含むパケットを送る計算ノードのアドレスを確認し、前記代替ノードに接続された計算ノードから前記アドレスに一番近い計算ノードに前記パケットを送るステップを更に備えることを特徴とする。
また、この方法において、前記ルーティングするステップは、前記隣接する計算ノードが前記代替ノードに接続されている場合、前記代替ノードに前記パケットを送るステップであることを特徴とする。
また、この方法において、前記ルーティングするステップは、前記隣接ノードが前記代替ノードと別のIOノードに接続されている場合、前記隣接ノードに到達した前記パケットを前記別のIOノードに送り、前記ツリー・ネットワークを経由して前記代替ノードに送るステップであることを特徴とする。
また、この方法において、前記計算ノード及び前記IOノードは、少なくとも1つのCPU、及びメモリを含むことを特徴とする。
かかる目的のもと、本発明は、3次元格子点(アドレス)に配置され隣接格子点間でリンクを形成する複数の計算ノードからなるトーラス・ネットワークと、複数のIOノードからなるツリー・ネットワークとを有し、前記計算ノードの各々は、前記ツリー・ネットワークの末端のIOノードとリンクを形成する、コンピュータ・システムにおいて計算の実行中に前記計算ノードの1つに故障が発生した場合に(a)フェイル・オーバーするためのプログラムである。このプログラムは、前記コンピュータに、
(b)故障の計算ノード(故障ノード)を検出するステップと、
(c)前記故障ノードと前記リンクを形成する前記IOノードを、前記故障ノードのアドレスに一次元増やしたアドレスにより特定される代替ノードとして、前記故障ノードに隣接するノード(隣接ノード)に知らせるステップと、
(d)前記隣接ノードが前記故障ノード宛のパケットを受取ると、前記パケットを前記代替ノードにルーティングするステップと、
(g)前記代替ノードに到達した前記パケットが指定するジョブを前記代替ノードにおいて処理するステップと、
(h)前記代替ノードは前記ジョブの処理結果を含むパケットを送る計算ノードのアドレスを確認し、前記代替ノードに接続された計算ノードから前記アドレスに一番近い計算ノードに前記パケットを送るステップと、
を実行させることを特徴とする。
かかる目的のもと、本発明は、3次元格子点に配置され隣接格子点間でリンクを形成する複数の計算ノードからなるトーラス・ネットワークと、複数のIOノードからなるツリー・ネットワークとを備え、前記計算ノードの各々は、前記ツリー・ネットワークの末端のIOノードとリンクを形成し、更に、計算の実行中に前記計算ノードが故障した場合、前記故障ノードと前記リンクを形成する前記IOノードを、前記故障ノードのアドレスに一次元増やしたアドレスにより特定される前記代替ノードに代替ノードとする手段と、備えるコンピュータ・システムである。
また、このコンピュータ・システムは、前記隣接する計算ノードは、前記故障ノード宛のパケットを受取ると、前記代替ノードにルーティングする手段と、前記代替ノードは、前記パケットにより指定されるジョブの処理結果のパケットを送るアドレスを確認し、前記代替ノードに接続されている複数の計算ノードのアドレスから、宛先に一番近いアドレスの計算ノードを選び、前記アドレスの計算ノードに前記パケットを送る手段とを、
更に備えることを特徴とする。
本発明によれば、複数の計算ノードから構成されるコンピュータ・システムのトーラスの構成を変えることなく故障時の代替ノードの割当てることを可能にすることが出来る。
また、本発明によれば、トーラスの構成を実質的に変更しないため、トーラス型のコンピュータ・システムの変更を最小限に抑えられる。
また、本発明によれば、トーラス型のコンピュータ・システムにおいて故障ノードが検出されるまでの計算実行のジョブ(チェックポイント)を短時間に回復して、チェックポイントから後続の計算を再開できる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態(実施例)は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の方法により、トーラスの3次元格子点(x、y、z)の複数のノードの構成を実質的に変えることなく故障時の代替ノードのアサインを可能にすることが出来るようにする。
1.トーラス・ネットワークを構成する各ノード(「計算ノード」と言う。)に少なくとも1つのリンク(接続)を追加する。
2.追加された1つのリンクはトーラス・ネットワークの外にあるIOノードに接続される。故障した計算ノード(故障ノード)とリンクを形成しているIOノードを、故障ノードの代替ノードとして、以下で説明する変換則を適用する。
3.トーラス・ネットワークの外にあるIOノード14は、複数のトーラス・ネットワーク上の計算ノード12とスター状に接続されている。図3は、トーラス・ネットワークの外にあるIOノード同士はツリー(Tree)状に接続されている。
4.トーラス・ネットワークの計算ノードからトーラスの外にあるIOノードへのルーティングは、以下で詳述するように実質的にトーラス・ネットワークでルーティングされる。このルーティング方法が、本発明の特徴的な内容である。このルーティング方法により、既存の並列ネットワーク・システムのトーラスノード(計算ノード)の構成の変更を最小限に抑えられる。言い換えると、この方法は、故障ノードの発生したコンピュータ・システムの既存のトーラスノードの構成を擬似的に維持して、自動的にフェイルオーバー(故障ノードの交換)をする。
図5は、本発明の3次元トーラスを含むコンピュータ・システムのハードウエアの構成の実施例を示す。3次元トーラスの場合、各ノード(x、y、z)は、各軸のそれぞれ正負の方向にリンク(link:接続関係を有する意味)を持つことから、6本のリンクを持っている。3次元トーラスは、複数のIOノード14からなるツリー・ネットワークを経由して情報処理装置20(図3)に接続される。
なお、図3に示されているように、ツリー・ネットワークは、従来のIBMのコンピュータ・システムでは、最上位のIOノード14以外はトーラスノード(計算ノード)12で構成されている。一方、本発明のコンピュータ・システムでは、複数のトーラスノード12(計算ノード)を併用せず、複数のIOノード14のみによりツリー・ネットワークを構成する。
本実施例では、計算ノード12にリンクを1本追加するので、各計算ノードは7本のリンクを持つことになる。各計算ノード12の7本のリンクの内6本は、従来の通りトーラスノード(隣接する計算ノード12)に接続される。追加された1本は、図5に示すようにトーラスノード(計算ノード)12をツリー・ネットワークの末端のIOノード14に接続させる。末端のIOノードは、代替ノードS1,S2,S3,S4(図6を参照)として機能する。IOノード14はトーラス上の計算ノード12と同じハードウエアである場合には、設計効率の観点から、図5及び図6のように7本のリンクを設けてもよい。また、IBM BlueGene/LのIOノードなどと同じように、IOノードは、トーラス上の計算ノードよりも大容量のメモリを実装している。トーラス上のノードに接続されているIOノードの7本のリンクは、6本はトーラス上のノードに接続され、他の1本は末端のIOノードに接続される。図5に示されるように、トーラス上のノード(計算ノード)に接続されていないIOノード14は、7本とも他のIOノードに接続され、IOノード14同士はツリー・ネットワーク構造を構成している。尚、各計算ノード12は、2以上(複数)の末端のIOノード14とリンクを形成してもよい。
図6はz=2の面で3次元トーラスを切り取った図を示す。図6を参照しながら、1つの計算ノードが故障し、その故障した計算ノードに末端のIOノード(代替ノード)を割当てる方法を説明する。また、その故障ノード宛へのパケットの代替ノードへのルーティングする(routing:経路指定する)方法、及び、代替ノードからジョブの処理結果をルーティングする方法を以下のシーケンスにより説明する。
正常なオペレーション(故障ノードが存在しない)の場合は、処理はすべてトーラス・ネットワークを構成する3次元格子点(x、y、z)に配置した複数の計算ノードの中で閉じている。IOノード及びこのツリー・ネットワークが通常処理に使われることはない。ただし、IBM BlueGene/Lなど既存の大規模並列ネットワーク・システムにおいて、ツリー・ネットワークを構成するIOノードは、各計算ノードの処理結果を情報処理装置20(図CPU及びHDD)に送る為に利用される。
IOノードは、自分に接続されているトーラスノード(計算ノード)と同じ数の仮想トーラスアドレスを持っている。図6を参照すると、IOノードS2が代替ノードとなる場合、このノードが持つ仮想トーラスアドレス(計算ノード)は、このノードとリンクを形成する計算ノード(x,y,z)に一次元と追加したものである(x,y,z,1)。例えば、図6の代替ノードS2は、6個のアドレス(6,5,2,1)(6,6,2,1)(6,7,2,1)(6,8,2,1)(6,9,2,1)(6,10,2,1)の計算ノードを代替する。このように末端のIOノードS2は、複数の仮想トーラスアドレスを持つことにより、ノードが故障した場合のルーティングをスムーズに行うことが出来る。
本発明のコンピュータ・システムは、所定の計算の実行中において一定時間ごとにこれら6個の計算ノードの処理結果の情報を代替ノードS2の記憶部(図7を参照)にバックアップする。従来のトーラス型のコンピュータ・システムでは、所定の計算の実行中の各計算ノードの処理結果の情報をIOノードを経由して情報処理装置20のHDD(図1及び図3を参照)にバックアップする。このバックアップされた各計算ノードの処理結果の情報は、システムにハードウエア障害が発生した場合そのハードウエア障害の修復後に、所定の計算の後続の処理をどこから始まるかのチェックポイントを特定するのに使用される。
従来のIBM BlueGene/Lの通常オペレーション時にも、システムが故障した場合に備えて、各ノードは処理の再開に必要な最低限の情報を定期的に自分が接続されているIOノードに送っている。末端のIOは、各トーラスノード(計算ノード)から送られてきた情報を自分のメモリに蓄えておく。そして、従来のシステムでは、この処理の再開に必要な最低限の情報はHDDに書いていた。HDDに全てのノードの情報を書き出すまでの間処理を中断する必要があった。そしてHDDに蓄えられている情報から中断した次に処理が開始可能なチェックポントを判断する。故障ノードを交換した後に、そのチェックポントから全体の計算ノードの実行を開始する。なお、トーラス型の並列コンピュータ・システムは、3次元格子点に配置された複数の計算ノードからなるトーラス・ネットワークと、それら計算ノード及び1つのIOノードからなるツリー・ネットワークを持つ。図3に示すように、このツリー・ネットワークは、複数の計算ノード12及び最上位の1つの専用の1つのIOノード14からなるツリー・ネットワークのリンクにより形成されている(ツリー構成の図3)。
この発明では、代替ノード(末端のIOノード)のメモリに書くまでの間中断するだけなので、大幅に時間が短縮できる。ツリー・ネットワークを構成するIOノード14は、さらに長い周期で各々計算ノード(トーラスノード)の情報をHDDに書き出すことが可能となる。また、IOノード14が、HDDに書き出すのは通常処理とは非同期に行えるため、その間に全体の処理を止める必要はない。
図6において、故障ノードのz軸方向の上下にも隣接ノード(最近接のノード)が存在するが、ここでは説明の簡単化のためにz軸方向の隣接ノードは省略して考える。
1.(6,7,2)のノードが故障したとする。
2.システムが(6,7,2)のノードの故障を検出すると、IOノードS2が(6,7,2)の代替ノードになることを故障ノードの隣接ノード(6,6,2)(6,8,2)(7,7,2)(5,7,2)に伝え、記憶させる。
3.最後に末端のIOノード(代替ノード)に書かれたチェックポイントまで戻り、処理が再開される。
4.故障ノードと、その隣接ノード以外では通常のオペレーションと変わることはない。
5.故障ノード宛てに送られてきたパケットは、隣接ノードまでは通常のルーティングで到達する。
6.隣接ノードは故障ノード(6,7,2)宛てのパケットを受け取ると、アドレスを1次元増やし、代替ノードS2(6,7,2,1)としてルーティングを行う。
7.代替ノード(6,7,2,1)宛のパケットは、通常のトーラスのルーティングに従い、隣接ノードから7本目のリンクに送り出され、代替ノードS2に到達する。代替ノード(6,7,2、1)とアドレス指定される末端のIOノードS2は、故障ノードと7本目のリンクにより、直接または別のIOノードを介して接続される。またIOノードS2は、この故障ノードに隣接する計算ノード(隣接ノード)の7本目のリンクを形成する。この時、代替ノードが複数のトーラスアドレスを持っているため、スター状に接続されたIOノードS2に、あたかもトーラス接続されているかのようにパケットを送ることが出来る。
8.このとき、故障ノードと同じ代替ノードS2と直接リンクを形成する、この故障ノードに隣接するノード(隣接ノード)((6,8,2)(6,6,2))の場合は、直接代替ノードS2にパケットが送られる。
9.故障ノードと別の末端のIOノードS1、S3に接続された隣接ノード((5,7,2)(7,7,2))の場合は、直接代替ノードにパケットを送ることが出来ないため、以下のルーティング行う。
(9-1).(5,7,2)または(7,7,2)に到達した(6,7,2)宛てのパケットは、(6,7,2,1)宛てのパケットとしてS1またはS3に送られる。
(9−2).S1またはS3に送られたパケットは、ツリー・ネットワーク(S5)を経由して故障ノードの代替ノードであるS2:(6,7,2,1)に送られる。
10.代替ノードに到達したパケットは代替ノードで処理が行われる。
11.代替ノードS2は処理結果を含むパケットの送り先のアドレスを確認し、S2に接続されているトーラスノード(計算ノード)の6個のアドレスから送り先アドレスに一番近いアドレスを選び、そのアドレスにパケットを送る。送り先アドレスが(5,9,2)である場合、S2は自分にリンクしている(6,10,2),(6,9,2),(6,8,2),(6,6,2),(6,5,2)から(6,9,2)を選び、パケットを送る。
12.代替ノードS2からパケットを受け取ったトーラスノード(計算ノード)は通常のルーティングでパケットを処理する。
この本発明の代替ノードへのルーティング方法を利用すると、従来では出来なかったか、非常にオーバーヘッドが大きく実用上難しかったトーラス・ネットワーク上のノードのフェイルオーバー(FailOver)を実現することが可能になる。
図7は、計算ノード12及びIOノード14(ノードとも言う)の機能構成を示す。通信ノード(計算ノード12及びIOノード14)は、記憶部300と、受信部310と、選択部320と、送信部330とを有する。記憶部300は、通信ノード12からトーラス・ネットワーク13及びツリー・ネットワーク14を経由して、他のそれぞれのリンク、通信ノードに至る通信経路のトポロジーを示す情報を記憶している。更に詳細な例を図8に示す。
図8は、記憶部300のデータ構造の一例を示す。記憶部300は、パケットのノードを宛先とする場合(格子点)に対して、6つの隣接ノードをうち最適なノードの宛先を選択する場合にそのノードを変換する変換規則を記憶している。
故障ノード(x,y,z)に隣接するノードの記憶部300には、隣接ノードが故障ノード(x、y、z)を宛先とするパケットを受取った場合に、(x,y,z)を一次元増やしたアドレス(x,y,z,1)とする変換則を適用する。このアドレスは、故障ノードとリンクを形成するIOノードを指定する。本発明では、このIOノードを故障ノードの代替ノードとして割当てる。故障ノード(x、y、z)のこの変換則として、それと直接にリンクを形成するIOノードを指示するのに、4次元で表示(x,y,z,1)表現している。
具体例として、図8は故障ノード(6,7,2)が存在する場合、IOノードS2を代替ノードとして割当てられていることを(図6を参照)指示する変換テーブルを、故障ノードに隣接する計算ノード(6,8、2)(6,6,2)(7,7,2)(5,7,2)に知らせ、それぞれの記憶部300にS2を指示する変換テーブルを保持させる。
なお、本図の変換則は一例であり、記憶部300のデータ構造には様々なバリエーションが考えられる。例えば、記憶部300は、変換が必要な座標についてのみ変換則を記憶していてもよい。また、ノード(x、y、z)に直接にリンクしているIOノードを指示出来れば、この4次元表現をすることに限られない。隣接ノードが故障ノード(x,y,z)宛のパケットを受取った場合、記憶部300に、単に(x,y,z)のノードが正常(0)、故障(1)かを示すフラグを設けてもよい。隣接ノードがノード(x,y,z)宛先のパケットパッケを受けた場合において、このフラグが1(オン)の場合にノード(x,y,z)は故障であると判断さる。故障ノード宛のパケットを故障ノードに隣接する計算ノードが受取ると、故障ノードにリンクするIOノードS2が代替ノードしてパケットを転送する。
図7に戻る。受信部310は、通信パケットを通信パケットの宛先に対応付けて受信する。受信部310は、通信パケットの宛先として、3次元格子空間に宛先のノードを配置した場合の座標値(x、y、z)を受信する。例えば、一つ隣接のノード(6,8,2)がノード(6,7,2)の宛先の通信パケットであれば、受信部310は、座標(6,7,2,1)を受信する。選択部320は、記憶部300に記憶されている変換則に基づいて、受信した宛先に至る通信経路上でノード次に通信パケットを転送する転送先のノードを選択する。
図9は、上述の変換則を用いて、科学技術など種々の大規模計算の実行の途中において故障ノードが発生した場合のパケットのルーティングのフローチャートを示す。典型的には、図6に示す複数の計算ノードを有するトーラス・ネットワークと複数のIOノードをツリー・ネットワーク状に有し、各計算ノードは末端のIOノードと少なくとも1つのリンクを有する、コンピュータ・システム場合を考える。図6に示す故障の計算ノード(6,7,2)をIOノードS2が代替ノードとしてルーティングする動作を説明する。
(a)コンピュータ・システムが計算を実行している際に1つの計算ノード(6,7,2)に障害が発生している。
(b)情報処理装置20(図1)または当該装置に常駐する監視システムは、故障ノード(6,7,2)を検出する。監視システムは、検出はIOノードが構築するツリー・ネットワークを通じて検出できる。
(c)監視システムは、IOノードS2が代替ノードであることを隣接ノードに知らせる。
監視システムは、ツリー・ネットワークのIOノードS2を通じて変換測(故障ノード(6,7,2) → 代替ノード(6,7,2,1)を4つの隣接ノード(6,8,2)、(6,6,2)に知らせ、それぞれの記憶部300に記憶される。また、この変換則をS2→S5→S3またはS1を経由して2つの隣接ノード(7,6,2)または(5,7,2)に知らせ、それぞれの記憶部に記憶される。なお、ツリー・ネットワーク15を構成するIOノード14(S1,S2,S3、・・・・)間のルーティングは、各IOノードのハードウエアにおいて事前に設定されている。
(d)6つの隣接ノードは、故障ノード(x、y、z)宛のパケットを受け取ると、代替ノードに変換測に従って、ルーティング(e)または(d)の場合に分かれる。
(e)代替ノードS2(6,7,2,1)に接続された隣接ノード(6,8,2)(6,6,2)の場合:直接代替ノードS2にパケットを送る。
(f)代替ノードS2とは別の代替ノードS3に接続された隣接ノード(7,7,2)の場合: 隣接ノード(7,7,2)に到達した故障ノード(6,7,2)宛てのパケットは、代替ノードS2(6,7,2,1)宛のパケットとしてS3に送られる。S3に送られたパケットは、トリーネットワークを経由して最終的に代替ノードS2(6,7,2,1)に送られる
(g)代替ノードS2(6,7,2,1)に到達したパケットは、S2で処理される。
(h)代替ノードS2はパケットにより指定されたジョブの処理結果の新たなパケットとして送るアドレスを確認する。
例えば、パケットが計算ノード(5,9,2)宛である場合に、S2に接続されるトーラスノード6個のアドレスから宛先に一番近い計算ノード(6,9,2)を選び、その計算ノードを経由して目的にトーラスノード(5,9,2)にパケットを送る。
以上、本実施例および変形例によれば、複数の計算ノードから構成されるコンピュータ・システムのトーラスの構成を変えることなく故障時の代替ノードの割当てることを可能にすることが出来る。
また、ノードが故障した場合にも最低限のオーバーヘッドで自動的に代替ノードをアサインすることで処理を継続することが出来、複数ノードを有する並列ネットワーク・システムのスループットへの影響を最小限にすることが可能となる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
コンピュータ・システム10および情報処理装置20の全体構成を示す。 コンピュータ・システム10のトーラス・ネットワークの構成部分を示す。 トーラス・ネットワークの外にあるIOノード同士はツリー(Tree)状に接続されていることを示す。 2次元格子点位置(x、y)配置されたノードの一つが故障した場合を示す。 本発明の3次元トーラスを次のハードウエアの構成を示す。 z=2の面で本発明の3次元トーラス・ネットワークを切り取った図を示す。 計算ノード及びIOノード12の機能構成を示す。 記憶部300のデータ構造の一例を示す。 変換則を用いて、計算事項途中において発生した故障ノード宛のパケットのルーティング方法により、故障ノードをフェイル・オーバーするフローチャートを示す。
符号の説明
10 コンピュータ・システム
20 情報処理装置
12 計算ノード
13 トーラス・ネットワークのリンク
14 IOノード
15 ツリー・ネットワークのリンク
300 記憶部
310 受信部
320 選択部
330 送信部

Claims (15)

  1. 3次元格子点に配置され隣接格子点間でリンクを形成する複数の計算ノードからなるトーラス・ネットワークと、
    複数のIOノードからなるツリー・ネットワークとを有し、
    前記計算ノードの各々は、前記ツリー・ネットワークの末端のIOノードとリンクを形成するコンピュータ・システムにおいて、計算の実行中に1つの計算ノードが故障した場合にフェイル・オーバーする方法であって、
    前記コンピュータ・システムを監視する監視システムが、計算の実行中に故障の計算ノードを検出するステップと、
    前記コンピュータ・システムを監視する監視システムが、前記故障の計算ノード(故障ノード)にリンクされた前記IOノードを、前記故障ノードの3次元格子点に一次元増やすことにより特定される代替ノードとするステップと、
    前記故障ノードに隣接する計算ノード(隣接ノード)が前記故障ノード宛のパケットを受取ると、前記パケットを前記代替ノードにルーティングするステップと、
    を備えるフェイル・オーバーする方法。
  2. 前記コンピュータ・システムの複数の計算ノードは、3次元トーラスとして接続されたa×b×c個のアレイであり、前記計算ノードのそれぞれは隣接する計算ノードへ+および−のx,y,z方向に6つのリンクを形成し、
    前記コンピュータ・システムの前記末端のIOノードは、前記3次元トーラスのz面のa×b個のアレイの所定の数の計算ノードとリンクを形成し、
    前記計算ノードは、全体で7つのリンクを有する請求項に記載の方法。
  3. 前記IOノードを代替ノードとするステップは、
    前記故障ノードの3次元格子点(x、y、z)とすると、前記故障ノードとリンクを形成する前記IOノードを代替ノードとして前記代替ノードの一次元を増やしたアドレス(x、y、z、1)を、前記故障ノードに隣接する計算ノードに知らせるステップを含む、請求項1または2項に記載の方法。
  4. 前記代替ノードに到達した前記パケットが指定するジョブを前記代替ノードにおいて処理するステップを更に含む請求項3に記載の方法。
  5. 前記代替ノードは前記ジョブの処理結果を含むパケットを送る計算ノードのアドレスを確認し、前記代替ノードに接続された計算ノードから前記アドレスに一番近い計算ノードに前記パケットを送るステップを更に備える、請求項4に記載の方法。
  6. 前記ルーティングするステップは、前記隣接する計算ノードが前記代替ノードに接続されている場合、前記代替ノードに前記パケットを送るステップである請求項4記載の方法。
  7. 前記ルーティングするステップは、前記隣接ノードが前記代替ノードと別のIOノードに接続されている場合、前記隣接ノードに到達した前記パケットを前記別のIOノードに送り、前記ツリー・ネットワークを経由して前記代替ノードに送るステップである請求項4記載の方法。
  8. 前記計算ノード及び前記IOノードは、少なくとも1つのCPU、及びメモリを含む、請求項1記載の方法。
  9. 3次元格子点に配置され隣接格子点間でリンクを形成する複数の計算ノードからなるトーラス・ネットワークと、複数のIOノードからなるツリー・ネットワークとを有し 前記計算ノードの各々は、前記ツリー・ネットワークの末端のIOノードとリンクを形成する(a)コンピュータ・システムにおいて計算の実行中に、前記計算ノードの1つに故障が発生した場合にフェイル・オーバーするためのプログラムであって、
    (b)前記コンピュータ・システムを監視する監視システムが、故障の計算ノード(故障ノード)を検出するステップと、
    (c)前記コンピュータ・システムを監視する監視システムが、前記故障ノードと前記リンクを形成する前記IOノードを、前記故障ノードの3次元格子点に一次元増やすことにより特定される代替ノードとして、前記故障ノードに隣接するノード(隣接ノード)に知らせるステップと、
    (d)前記隣接ノードが、前記故障ノード宛のパケットを受取ると、前記パケットを前記代替ノードにルーティングするステップと、
    (g)前記代替ノードに到達した前記パケットが指定するジョブを前記代替ノードにおいて処理するステップと、
    (h)前記代替ノードが、前記ジョブの処理結果を含むパケットを送る計算ノードのアドレスを確認し、前記代替ノードに接続された計算ノードから前記アドレスに一番近い計算ノードに前記パケットを送るステップと、を実行させるプログラム。
  10. 前記ルーティングするステップは、前記隣接する計算ノードが前記代替ノードに接続されている場合、前記代替ノードに前記パケットを送るステップである請求項9記載のプログラム。
  11. 前記ルーティングするステップは、前記隣接ノードが前記代替ノードと別のIOノードに接続されている場合、前記隣接ノードに到達した前記パケットを前記別のIOノードに送り、前記ツリー・ネットワークを経由して前記代替ノードに送るステップである請求項9記載のプログラム。
  12. 3次元格子点に配置され隣接格子点間でリンクを形成する複数の計算ノードからなるトーラス・ネットワークと、
    複数のIOノードからなるツリー・ネットワークとを備え、
    前記計算ノードの各々は、前記ツリー・ネットワークの末端のIOノードとリンクを形成し、
    更に、計算の実行中に前記計算ノードが故障した場合、前記故障ノードと前記リンクを形成する前記IOノードを、前記故障ノードの3次元格子点に一次元増やすことにより特定される前記代替ノードに代替ノードとする手段と、
    備えるコンピュータ・システム。
  13. 前記隣接する計算ノードは、前記故障ノード宛のパケットを受取ると、前記代替ノードにルーティングする手段と、
    前記代替ノードは、前記パケットにより指定されるジョブの処理結果のパケットを送るアドレスを確認し、前記代替ノードに接続されている複数の計算ノードのアドレスから、宛先に一番近いアドレスの計算ノードを選び、前記アドレスの計算ノードに前記パケットを送る手段とを、
    更に備える請求項12記載のコンピュータ・システム。
  14. 前記ルーティングする手段は、前記隣接する計算ノードが前記代替ノードに接続されている場合、前記代替ノードに前記パケットを送る請求項13記載のコンピュータ・システム。
  15. 前記ルーティングする手段は、前記隣接ノードが前記代替ノードと別のIOノードに接続されている場合、前記隣接ノードに到達した前記パケットを前記別のIOノードに送り、前記ツリー・ネットワークを経由して前記代替ノードに送る請求項13記載のコンピュータ・システム。
JP2006355054A 2006-12-28 2006-12-28 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法 Expired - Fee Related JP5078347B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006355054A JP5078347B2 (ja) 2006-12-28 2006-12-28 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法
CN2007101698858A CN101211282B (zh) 2006-12-28 2007-11-14 为故障节点执行失效转移操作的方法和计算机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006355054A JP5078347B2 (ja) 2006-12-28 2006-12-28 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法

Publications (2)

Publication Number Publication Date
JP2008165531A JP2008165531A (ja) 2008-07-17
JP5078347B2 true JP5078347B2 (ja) 2012-11-21

Family

ID=39611330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006355054A Expired - Fee Related JP5078347B2 (ja) 2006-12-28 2006-12-28 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法

Country Status (2)

Country Link
JP (1) JP5078347B2 (ja)
CN (1) CN101211282B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549092B2 (en) * 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
CN102111290B (zh) * 2009-12-28 2014-12-10 国际商业机器公司 寻找可追溯网络中源故障节点的方法和系统
CN101909012B (zh) * 2010-08-02 2012-07-04 深圳中兴力维技术有限公司 一种基于树状网络的路由寻址方法
CN102204169A (zh) * 2011-05-12 2011-09-28 华为技术有限公司 故障检测方法、路由节点及系统
US9448966B2 (en) * 2013-04-26 2016-09-20 Futurewei Technologies, Inc. System and method for creating highly scalable high availability cluster in a massively parallel processing cluster of machines in a network
WO2016020815A1 (en) * 2014-08-04 2016-02-11 Yogitech S.P.A. Method of executing programs in an electronic system for applications with functional safety comprising a plurality of processors, corresponding system and computer program product
CN105846949B (zh) * 2015-01-14 2019-03-26 华为技术有限公司 确定信息的传输路径的方法和节点
CN105808391A (zh) * 2016-04-05 2016-07-27 浪潮电子信息产业股份有限公司 一种热替换cpu节点的方法及装置
CN110445662B (zh) * 2019-08-29 2022-07-12 上海仪电(集团)有限公司中央研究院 OpenStack控制节点自适应切换为计算节点的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06243113A (ja) * 1993-02-19 1994-09-02 Fujitsu Ltd 並列計算機における計算モデルのマッピング法
JPH07325789A (ja) * 1994-05-31 1995-12-12 Sanyo Electric Co Ltd 並列処理装置
US8335909B2 (en) * 2004-04-15 2012-12-18 Raytheon Company Coupling processors to each other for high performance computing (HPC)

Also Published As

Publication number Publication date
CN101211282B (zh) 2012-02-01
CN101211282A (zh) 2008-07-02
JP2008165531A (ja) 2008-07-17

Similar Documents

Publication Publication Date Title
JP5078347B2 (ja) 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法
JP4611922B2 (ja) 制御プログラム、制御方法および制御装置
US7644254B2 (en) Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list
CN101589370B (zh) 一种并行计算机系统以及在其上进行故障恢复的方法
CN102629225A (zh) 双控制器磁盘阵列、存储系统以及数据存储路径切换方法
CN1892612A (zh) 集群可用性管理方法和系统
CN104158693A (zh) 数据服务的容灾备份方法和系统
JP4491482B2 (ja) 障害回復方法、計算機、クラスタシステム、管理計算機及び障害回復プログラム
JP2013171301A (ja) ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム
JP2007520003A (ja) コンピュータ障害発生時に複数のコンピュータの配列を操作する方法
JP2012190175A (ja) フォールトトレラントシステム、サーバ、フォールトトレラント化方法およびプログラム
US20100085871A1 (en) Resource leak recovery in a multi-node computer system
JP6323243B2 (ja) システム及び異常検知方法
US8537662B2 (en) Global detection of resource leaks in a multi-node computer system
JP6369226B2 (ja) 情報処理装置、情報処理システム、情報処理システムの制御方法および情報処理装置の制御プログラム
JP2006053896A (ja) コンピュータシステムの複数の処理ノードを接続するファブリック数のソフトウェアトランスペアレントな拡張
JP3621634B2 (ja) 冗長構成切替システム
JP2018097435A (ja) 並列処理装置及びノード間通信プログラム
WO2014103078A1 (ja) 情報処理システム、情報処理システムの管理方法および情報処理システムの管理プログラム
US7646705B2 (en) Minimizing data loss chances during controller switching
WO2011135628A1 (ja) クラスタ再構築方法、クラスタ再構築装置及びクラスタ再構築プログラム
JP6464704B2 (ja) フォールトトレラントシステム、稼働系装置、待機系装置、フェイルオーバー方法、および、フェイルオーバープログラム
JP4061549B2 (ja) ネットワークコンピュータシステム
Ahmad A massively parallel fault-tolerant architecture for time-critical computing
Onut Fault Tolerant P2P RIA Crawling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120720

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120807

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120828

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees