(57)【特許請求の範囲】
【請求項１】
通信パスを介して接続された複数の情報処理装置と、
前記複数の情報処理装置を管理する管理装置と
を含み、
前記管理装置は、
前記複数の情報処理装置に対して設定されたハミルトンパスにおいて前記複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、
前記複数の情報処理装置の各々は、
前記メッセージを受信すると、前記ハミルトンパスにおいて次に正常に動作する情報処理装置が存在する場合には当該次に正常に動作する情報処理装置に、これまでに検出された異常に関する情報を含むメッセージを送信し、
前記ハミルトンパスにおいて次に正常に動作する情報処理装置を検出できない又は前記ハミルトンパスの末端である情報処理装置は、
これまでに検出された異常に関する情報を前記管理装置に送信する
システム。
【請求項２】
前記複数の情報処理装置の各々は、
前記ハミルトンパスにおいて次に正常に動作する情報処理装置を探索し、
異常な情報処理装置を検出すると、当該異常な情報処理装置のデータを前記管理装置のメモリに書き込む
請求項１記載のシステム。
【請求項３】
前記管理装置は、
前記複数の情報処理装置の各々がいずれかに属する複数のグループの各々に対して設定されたハミルトンパスにおいて前記複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、
前記複数のグループの各々について前記これまでに検出された異常に関する情報を受信すると、当該情報を集約する
請求項１又は２記載のシステム。
【請求項４】
通信パスを介して接続された複数の情報処理装置と、前記複数の情報処理装置を管理する管理装置とを有するシステムにより実行される異常検出方法であって、
前記管理装置は、前記複数の情報処理装置に対して設定されたハミルトンパスにおいて前記複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、
前記複数の情報処理装置の各々は、前記メッセージを受信すると、前記ハミルトンパスにおいて次に正常に動作する情報処理装置が存在する場合には当該次に正常に動作する情報処理装置に、これまでに検出された異常に関する情報を含むメッセージを送信し、
前記複数の情報処理装置のうち前記ハミルトンパスにおいて次に正常に動作する情報処理装置を検出できない又は前記ハミルトンパスの末端である情報処理装置は、これまでに検出された異常に関する情報を前記管理装置に送信する
処理を含む異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムにおける異常検知技術に関する。
【背景技術】
【０００２】
近年多数のノードを含む大規模なシステムが構築されるようになっている。この大規模なシステムには、（１）利用者が指示する計算処理を実行するためのノード (以下、計算ノードと呼ぶ）、（２）計算ノードに対しファイルサーバやデータベース（ＤＢ）サーバとして動作するノード（以下、ＩＯ（Input Output）ノードと呼ぶ。）、（３）システム全体を管理するためのノード（以下、管理ノードと呼ぶ。）が含まれる。
【０００３】
管理ノードの重要な役割の一つは、計算ノードやＩＯノードの異常発生を監視し、異常発生時には、その対処となる処理を実行することである。監視方法としては、所定の時間間隔毎に、監視対象ノード（計算ノード及びＩＯノード）と管理ノードとが「生存確認メッセージ」を交換するのが一般的である。
【０００４】
しかしながら、監視対象ノードが多数になると、管理ノードの処理負荷は膨大なものとなる。そこで管理ノードの処理負荷を削減するために、複数の管理ノードで監視対象ノードを分担することが考えられている。また、個々のメッセージに対する処理負荷を削減することも有効である。
【０００５】
しかしながら、このような技術でも、多数の監視対象ノードが存在する場合には、システム全体としての異常検知のための処理負荷は削減が十分とは言えない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１８７５９８号公報
【特許文献２】特開平１０−０４９５０７号公報
【特許文献３】国際公開第２０１４／１０３０７８号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、本発明の目的は、一側面によれば、異常検知のための処理負荷をシステム全体として削減するための技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明に係るシステムは、通信パスを介して接続された複数の情報処理装置と、複数の情報処理装置を管理する管理装置とを含む。そして、上記管理装置は、（ａ１）複数の情報処理装置に対して設定されたハミルトンパスにおいて複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信する。一方、（ｂ１）上で述べた複数の情報処理装置の各々は、メッセージを受信すると、ハミルトンパスにおいて次に正常に動作する情報処理装置が存在する場合には当該次に正常に動作する情報処理装置に、これまでに検出された異常に関する情報を含むメッセージを送信し、（ｂ２）ハミルトンパスにおいて次に正常に動作する情報処理装置を検出できない又はハミルトンパスの末端である情報処理装置は、これまでに検出された異常に関する情報を管理装置に送信する。
【発明の効果】
【０００９】
一側面としては、異常検知のための処理負荷をシステム全体として削減できるようになる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ハミルトンパスを説明するための図である。
【図２】図２は、ハミルトンパスを説明するための図である。
【図３】図３は、メッシュ状に接続されたノード群の一例を示す図である。
【図４】図４は、トーラス状に接続されたノード群の一例を示す図である。
【図５】図５は、メッシュ状に接続されたノード群に設定されたハミルトンパスの一例を示す図である。
【図６】図６は、トーラス状に接続されたノード群に設定されたハミルトンパスの一例を示す図である。
【図７】図７は、第１の実施の形態に係る情報処理システムの一例を示す図である。
【図８】図８は、管理ノードの機能ブロック図である。
【図９】図９は、監視対象ノードの機能ブロック図である。
【図１０】図１０は、管理ノードにより実行される処理の処理フローを示す図である。
【図１１】図１１は、監視対象ノードにより実行される処理の処理フローを示す図である。
【図１２】図１２は、管理ノードにより実行される処理の処理フローを示す図である。
【図１３】図１３は、第２の実施の形態に係る情報処理システムの一例を示す図である。
【図１４】図１４は、第２の実施の形態に係る管理ノードの機能ブロック図である。
【図１５】図１５は、第２の実施の形態に係る監視対象ノードの機能ブロック図である。
【図１６】図１６は、第２の実施の形態に係る管理ノードにより実行される処理の処理フローを示す図である。
【図１７】図１７は、送信処理の処理フローを示す図である。
【図１８】図１８は、第２の実施の形態に係る監視対象ノードにより実行される処理の処理フローを示す図である。
【図１９】図１９は、第２の実施の形態に係る管理ノードのリダクション処理部により実行される処理の処理フローを示す図である。
【図２０】図２０は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
本実施の形態においては、監視対象ノードの資源を利用して管理ノードの負荷を下げるという方針を採用している。但し、監視対象ノードの負荷があるレベルを超えて増加することも回避する。
【００１２】
このため、監視対象ノードによる、ハミルトンパスに沿った相互監視を行う。具体的には、ある管理ノードの管理下にある監視対象ノードを、グラフ理論における「頂点」とみなし、それらのノード間のリンクをグラフ理論における「辺」とみなして、ノードとノード間のリンクを「グラフ」と把握する。
【００１３】
このグラフ内からハミルトンパスを選択する。ハミルトンパスとは、グラフ上の頂点を１度ずつ通るパスである。このハミルトンパスに沿って、ノード監視のための通信経路を設定することで、通信に使用するリンク数及び通信回数を抑えることができる。このため、通信レイテンシ、他の通信（例えばジョブが実施している通信）との干渉をも抑制されると期待される。
【００１４】
図１に示すように、複数のノード１ａ乃至１ｆが通信パスを介して接続されている。各ノードは複数のノードに直接接続されている。すなわち、特定のノード間の通信経路は、複数存在する。そして、上で述べたように、各ノード１ａ乃至１ｆを１度だけ通過するようにハミルトンパスＸ（太矢印）する。図１の例では、ノード１ａ、１ｂ、１ｃ、１ｄ、１ｅ、１ｆの順番のハミルトンパスＸが設定される。但し、特定のノード間の通信経路が複数存在するので、ハミルトンパスも複数設定できる。図２に示すように、同じように接続されたノード１ａ乃至１ｆに対して、ハミルトンパスＹも設定できる。
【００１５】
多数のノードを含む情報処理システムにおけるノード間リンクは、メッシュとトーラスという２つのパターンとなる場合が多い。２次元の場合には、図３に示すように、格子状にノード及びノード間リンクを設定することで、メッシュが形成される。また、２次元の場合、図４に示すように、メッシュに加えて、上端ノードと下端ノードとの間のリンク（Wrap around link）や、左端ノードと右端ノードとの間のリンクが１つでも設けられている場合には、トーラスとなる。
【００１６】
図３に示すようなメッシュに対しては、図５に示すようなハミルトンパスが選択できる。これ以外にもハミルトンパスは選択し得る。３次元の場合には、終点から１つ上の平面に上がってその平面において同様にハミルトンパスを選択する、ということを繰り返す。これを次の次元について繰り返せば、Ｎ次元メッシュについてもハミルトンパスを選択することが可能である。
【００１７】
また、図４に示すようなトーラスの場合、図６に示すようなハミルトンパスを選択することができる。メッシュの場合と同様に拡張させれば、Ｎ次元トーラスについてもハミルトンパスを選択することができる。なお、Ｎ次元トーラスの場合は、パスの始点と終点が同一である「ハミルトン閉路」を選択することもできる。
【００１８】
このようなハミルトンパスに沿ってノード監視のための通信経路を設定して、管理ノードから監視用のメッセージを流すことで、監視対象ノードの監視を行うシステムの構成について、図７乃至図９を用いて説明する。
【００１９】
図７に情報処理システムの概要を示す。情報処理システムは、管理ノード２００と監視対象のノード群１００（監視対象ノード１ａ乃至１ｆを含む）とを含む。管理ノード２００とノード群１００内の各監視対象ノード１とは例えばＬＡＮ（Local Area Network）等で接続されているものとする。
【００２０】
管理ノード２００の機能ブロック構成を図８に示す。管理ノード２００は、初期設定部２１０と、ハミルトンパスデータ格納部２２０と、監視処理部２３０と、通信部２４０と、メモリ２５０と、異常処理部２６０とを有する。
【００２１】
初期設定部２１０は、ハミルトンパス生成部２１１を有しており、ノード群１００内の各監視対象ノード１に対して、通信部２４０を介してハミルトンパスについてのデータを設定する。なお、ハミルトンパス生成部２１１によって生成されたハミルトンパスのデータは、ハミルトンパスデータ格納部２２０に格納される。
【００２２】
監視処理部２３０は、例えば異常ノード数を計数するためのメッセージをハミルトンパスに沿って流すために、当該メッセージを通信部２４０に送信させる。
【００２３】
通信部２４０は、ＲＤＭＡ部２４１を有している。ＲＤＭＡ（Remote Direct Memory Access）部２４１は、監視対象ノード１のＲＤＭＡ部からのＲＤＭＡを受け付け、メモリ２５０への書き込みを行う。ＲＤＭＡでは、監視対象ノード１は、管理ノード２００のＯＳ（Operating System）を介することなくメモリ２５０に転送を行うため、高スループット、低レイテンシの通信が行われる。また、管理ノード２００の処理負荷も軽減される。
【００２４】
メモリ２５０は、サマリデータ領域２５１と、ノードデータ領域２５２とを含む。サマリデータ領域２５１には、例えば異常ノードの合計など、ハミルトンパス上で検出された異常の集約データが格納される。また、ノードデータ領域２５２には、各監視対象ノードについて異常の有無を表すフラグなどが格納される。
【００２５】
異常処理部２６０は、メモリ２５０に格納されているサマリデータ及びノードデータに基づき、異常対処のための処理を実行する。
【００２６】
図９に、監視対象ノード１の機能ブロック構成を示す。監視対象ノード１は、通信部１０と、監視処理部２０と、ハミルトンパスデータ格納部３０とを有する。
【００２７】
通信部１０は、ＲＤＭＡ部１１を有しており、他の監視対象ノード１又は管理ノード２００と通信を行う。ＲＤＭＡ部１１は、管理ノード２００のＲＤＭＡ部２４１を介して、メモリ２５０にデータを直接転送する。
【００２８】
監視処理部２０は、通信部１０で受信したメッセージに関する処理を行い、通信部１０を介して他の監視対象ノード１に対してメッセージを送信するか、ＲＤＭＡ部１１によって管理ノード２００に対してデータを送信する。
【００２９】
ハミルトンパスデータ格納部３０は、設定されているハミルトンパスのデータを格納する。
【００３０】
次に、図１０乃至図１２を用いて、本実施の形態に係る情報処理システムの処理内容について説明する。なお、本実施の形態では、ノード群１００がＮ次元メッシュで接続されているものとする。
【００３１】
まず、初期設定部２１０のハミルトンパス生成部２１１は、所定のアルゴリズムにてハミルトンパスを形成し、ハミルトンパスデータ格納部２２０に格納する（図１０：ステップＳ１）。所定のアルゴリズムについては、従来から存在するいかなるものであっても良いので、ここでは説明を省略する。また、ハミルトンパスについては、管理者によって予め与えられる場合もあるが、その場合には本ステップはスキップされる。
【００３２】
そして、初期設定部２１０は、通信部２４０を介して各監視対象ノードに対して通信経路及び通番を含むハミルトンパスのデータを通知する（ステップＳ３）。ハミルトンパスにおいて自ノードの次のノードが正常に動作していればよいが、以下で述べるように次のノードが正常に動作していない場合には次に正常に動作しているノードを探索する処理を行うので、ハミルトンパスにおいて少なくとも配布先ノード以降のノードのデータを配布する。
【００３３】
その後、監視処理部２３０は、異常発生ノード数のカウンタｅｒｒ＿ｎｕｍを０に初期化し、ハミルトンパスにおける監視対象ノード列のノード番号（通番）のカウンタｎを０に初期化する（ステップＳ５）。
【００３４】
そして、監視処理部２３０は、通番ｎの監視対象ノードへ、ｅｒｒ＿ｎｕｍを含むメッセージを、通信部２４０を介して送信する（ステップＳ７）。なお、監視対象ノード１の通信部１０は、メッセージを受信すると、ＡＣＫメッセージ等を返信するものとする。
【００３５】
監視処理部２３０は、通信部２４０を介して、通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかったか、すなわちタイムアウトしたか否かを判断する（ステップＳ９）。タイムアウトしなかった場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信した場合には、この段階における管理ノード２００の処理は終了する。
【００３６】
一方、タイムアウトした場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかった場合には、監視処理部２３０は、ノードデータ領域２５２において通番ｎのための領域にエラーを書き込む（ステップＳ１１）。例えば、エラーフラグをオンにセットする。
【００３７】
さらに、監視処理部２３０は、ｅｒｒ＿ｎｕｍを１インクリメントし、ｎも１インクリメントする（ステップＳ１３）。そして、監視処理部２３０は、ｎが監視対象ノード数ｎmaxに達したか否かを判断する（ステップＳ１５）。すなわち、監視対象ノード全てに対して管理ノード２００からメッセージを送信したか否かを判断する。
【００３８】
ｎが監視対象ノード数ｎmaxに達していない場合には、処理はステップＳ７に戻り、ハミルトンパスにおいて次の監視対象ノードに対してメッセージを送ることになる。
【００３９】
一方、ｎがｎmaxに達した場合には、１つも監視対象ノードが正常に動作していなかったことになるので、監視処理部２３０は、異常ノード数ｅｒｒ＿ｎｕｍ（＝監視対象ノード総数ｎmax）を、サマリデータ領域２５１に書き込む（ステップＳ１７）。そして処理は終了する。
【００４０】
このようにハミルトンパスにおいて最初に正常に動作する監視対象ノードに対して、検出した異常ノード数についてのメッセージを送信する。但し、監視対象ノード全てが正常に動作していない場合には、その旨メモリ２５０に書き込むことになる。
【００４１】
次に、各監視対象ノード１において実行される処理について、図１１を用いて説明する。
【００４２】
監視対象ノード１の通信部１０は、ｅｒｒ＿ｎｕｍを含むメッセージを他の装置から受信すると（ステップＳ２１）、監視処理部２０に出力する。
【００４３】
監視処理部２０は、自ノードがハミルトンパスにおける終点ノードであるか否かを判断する（ステップＳ２３）。自ノードが終点ノードであれば、監視処理部２０は、ＲＤＭＡ部１１に指示を行って、管理ノード２００のメモリ２５０におけるサマリデータ領域２５１に、ｅｒｒ＿ｎｕｍを書き込ませる（ステップＳ３７）。そして処理を終了する。
【００４４】
一方、自ノードが終点ノードではない場合には、監視処理部２０は、ハミルトンパスデータ格納部３０に格納されているハミルトンパス通番ｎ（但し、本ステップを最初に実行する場合には自ノードの通番＋１をｎに設定。）の監視対象ノードを特定し、当該監視対象ノードに対して、ｅｒｒ＿ｎｕｍを含むメッセージを、通信部１０を介して送信する（ステップＳ２５）。
【００４５】
監視処理部２０は、通信部１０を介して、通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかったか、すなわちタイムアウトしたか否かを判断する（ステップＳ２７）。タイムアウトしなかった場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信した場合には、この監視対象ノード１の処理は終了する。
【００４６】
一方、タイムアウトした場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかった場合には、監視処理部２０は、ＲＤＭＡ部１１に指示して、管理ノード２００が有するメモリ２５０のノードデータ領域２５２において通番ｎのための領域にエラーを書き込ませる（ステップＳ２９）。例えば、エラーフラグをオンにセットする。
【００４７】
また、監視処理部２０は、ｅｒｒ＿ｎｕｍの値を１インクリメントする（ステップＳ３１）。そして、監視処理部２０は、ｎが監視対象ノード数ｎmaxに達したか否かを判断する（ステップＳ３３）。すなわち、ハミルトンパスにおいて、自ノードより後ろに設定されている監視対象ノード全てに対して現監視対象ノード１からメッセージを送信したか否かを判断する。
【００４８】
ｎが監視対象ノード数ｎmaxに達していない場合には、監視処理部２０は、ｎを１インクリメントする（ステップＳ３５）。そして、処理はステップＳ２５に戻り、ハミルトンパスにおいて次の監視対象ノードに対してメッセージを送ることになる。
【００４９】
一方、ｎが監視対象ノード数ｎmaxに達した場合には、処理はステップＳ３７に移行する。すなわち、正常に動作する監視対象ノードがハミルトンパスの自ノード以降において他に存在しないので、管理ノード２００に報告を行う。
【００５０】
監視対象ノード１では、ＲＤＭＡ部１１を用いて、ＲＤＭＡによってデータを、管理ノード２００のメモリ２５０に直接書き込むので、管理ノード２００の処理負荷を増加させずに済むようになっている。
【００５１】
次に、管理ノード２００において、上で述べた監視処理が行われた後に実行される処理について図１２を用いて説明する。
【００５２】
まず、管理ノード２００の異常処理部２６０は、メモリ２５０におけるサマリデータ領域２５１から異常ノード数（ｅｒｒ＿ｎｕｍ）を読み出す（図１２：ステップＳ４１）。
【００５３】
そして、異常処理部２６０は、ｅｒｒ＿ｎｕｍが０を超える値であるか否かを判断する（ステップＳ４３）。ｅｒｒ＿ｎｕｍが０であれば、全ての監視対象ノード１が正常に動作していることになるので、処理は終了する。
【００５４】
一方、ｅｒｒ＿ｎｕｍが０を超えている場合には、異常処理部２６０は、カウンタｉを０に初期化する（ステップＳ４５）。そして、異常処理部２６０は、ｉ番目の異常ノードを、ノードデータ領域２５２から特定する（ステップＳ４７）。異常の場合にフラグがオンになるような場合には、ｉ番目にフラグがオンとなっている異常ノードを特定する。
【００５５】
そして、異常処理部２６０は、特定された異常ノードについて異常状態に応じた処理を実行する（ステップＳ４９）。具体的な処理内容については従来と同様であるから詳細な説明は省略するが、例えば再度通信を行って異常状態を確認の上、管理者に対して通知を行う。
【００５６】
そして、異常処理部２６０は、ｉがｅｒｒ＿ｎｕｍより小さいか否かを判断する（ステップＳ５１）。この条件が満たされる場合には、異常処理部２６０は、ｉを１インクリメントする（ステップＳ５３）。そして処理はステップＳ４７に移行する。
【００５７】
一方、ｉがｅｒｒ＿ｎｕｍ以上となった場合には、処理は終了する。これによって、管理ノード２００によって異常対処が行われる。
【００５８】
上で述べたような処理を行うことで、監視対象ノード１又はハミルトンパス上の通信リンクに異常が発生しない場合、ハミルトンパスに沿った最少回数の通信と、ハミルトンパスにおける終点の監視対象ノードから管理ノード２００へのＲＤＭＡ通信のみで監視を実施することができる。
【００５９】
監視対象ノード１のいずれかに異常が発生した場合は、監視対象ノード１から管理ノード２００へのデータの書き込みが行われるが、ＲＤＭＡを利用することで、管理ノード２００の処理負荷を軽減することができる。
【００６０】
ハミルトンパス上の通信リンクに異常が発生した場合には、ハミルトンパス以外の迂回路を使って通信を行う。この場合、使用するリンク数が増えることになるが、そもそもハミルトンパスを利用する場合は使用リンク数が最少になるため、リンク故障の影響を受ける確率は最小となる。
【００６１】
また、ハミルトンパスの選択方法は複数存在しており、リンク故障発見後にハミルトンパスの再設定を行う場合においても、ハミルトンパスの再設定は容易に行うことができる。
【００６２】
［実施の形態２］
第１の実施の形態では、ハミルトンパスを１本のみ設定する例を示したが、監視対象ノードが多数存在する場合には、ハミルトンパスが長くなりすぎて監視にかかる時間が長くなりすぎる場合がある。
【００６３】
本実施の形態では、監視対象ノードをグループ化して各グループにハミルトンパスを設定することによって、メッセージの転送を並列に実行して処理時間を短縮するものである。
【００６４】
図１３に、本実施の形態に係るシステムの概要を示す。本実施の形態では、管理ノード２００ｂは、ノード群１００ａだけではなく、ノード群１００ｂ及び１００ｃ等、複数のノード群に接続されている。
【００６５】
図１４に、本実施の形態に係る管理ノード２００ｂの機能ブロック構成を示す。図８に示した第１の実施の形態に係る管理ノード２００との差は、通信部２４０が通信部２４０ｂに置換されている点であり、通信部２４０ｂは、ＲＤＭＡ部２４１に加えて、リダクション処理部２４２を有する。なお、ノードデータ領域２５２には、ノード群１００ａ、１００ｂ及び１００ｃ等に属する各ノードについて領域が設けられている。
【００６６】
リダクション処理部２４２は、監視対象ノードから呼び出されると当該監視対象ノードから受信した値（ｅｒｒ＿ｎｕｍ）を累積することでｅｒｒ＿ｎｕｍの総和を算出して、サマリデータ領域２５１に格納する。
【００６７】
一方、本実施の形態に係る監視対象ノード１Ｘの機能ブロック構成を図１５に示す。本実施の形態に係る監視対象ノード１Ｘと第１の実施の形態に係る監視対象ノード１との差は、通信部１０が通信部１０ｂで置換されており、通信部１０ｂは、ＲＤＭＡ部１１に加えて、リダクション処理部１２を有する。リダクション処理部１２は、管理ノード２００ｂの通信部２４０ｂにおけるリダクション処理部２４２を呼び出して、ｅｒｒ＿ｎｕｍを送信する。
【００６８】
次に、図１６及び図１７を用いて、管理ノード２００ｂの処理内容を説明する。
【００６９】
まず、初期設定部２１０のハミルトンパス生成部２１１は、所定のアルゴリズムにてグループ毎にハミルトンパスを形成し、ハミルトンパスデータ格納部２２０に格納する（図１６：ステップＳ６１）。このステップは、ノード群毎に実行する点を除きステップＳ１と同様である。
【００７０】
そして、初期設定部２１０は、通信部２４０ｂを介して各監視対象ノードに対して通信経路及び通番を含むハミルトンパスのデータを通知する（ステップＳ６３）。本ステップは、ハミルトンパスがノード群毎に異なる点を除きステップＳ３と同様である。
【００７１】
その後、監視処理部２３０は、異常発生ノード数のカウンタｅｒｒ＿ｎｕｍを０に初期化し、ハミルトンパスにおける監視対象ノード列のノード番号（通番）のカウンタｎを０に初期化し、ハミルトンパスの数（＝グループの数）をｎｕｍ＿ｐａｔｈに設定する（ステップＳ６５）。さらに、監視処理部２３０は、ノード群のためのカウンタｉを０に初期化する（ステップＳ６７）。
【００７２】
そして、監視処理部２３０は、ｉ番目のグループに対する送信処理を実行する（ステップＳ６９）。送信処理については、図１７を用いて後に説明する。
【００７３】
ｉ番目のグループに対する送信処理が完了すると、監視処理部２３０は、ｉを１インクリメントする（ステップＳ７１）。その後、監視処理部２３０は、ｉがｎｕｍ＿ｐａｔｈよりも小さいか否かを判断する（ステップＳ７３）。ｉがｎｕｍ＿ｐａｔｈより小さい場合には、監視処理部２３０は、ｎを０に初期化し、ｅｒｒ＿ｎｕｍも０に初期化する（ステップＳ７５）。その後、処理はステップＳ６９に戻る。一方、ｉがｎｕｍ＿ｐａｔｈ以上となった場合には、処理は終了する。
【００７４】
このようにノード群毎に送信処理が行われる。
【００７５】
次に、図１７を用いて送信処理について説明する。
【００７６】
監視処理部２３０は、ｉ番目のハミルトンパスにおける通番ｎの監視対象ノードへ、ｅｒｒ＿ｎｕｍを含むメッセージを、通信部２４０ｂを介して送信する（ステップＳ８１）。なお、監視対象ノード１Ｘの通信部１０ｂは、メッセージを受信すると、ＡＣＫメッセージを返信するものとする。
【００７７】
監視処理部２３０は、通信部２４０ｂを介して、通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかったか、すなわちタイムアウトしたか否かを判断する（ステップＳ８３）。タイムアウトしなかった場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信した場合には、この段階における管理ノード２００ｂの処理は終了する。
【００７８】
一方、タイムアウトした場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかった場合には、監視処理部２３０は、ノードデータ領域２５２において通番ｎのための領域にエラーを書き込む（ステップＳ８５）。例えば、エラーフラグをオンにセットする。
【００７９】
さらに、監視処理部２３０は、ｅｒｒ＿ｎｕｍを１インクリメントし、ｎも１インクリメントする（ステップＳ８７）。そして、監視処理部２３０は、ｎがｉ番目のハミルトンパスにおける監視対象ノード数ｎmaxiに達したか否かを判断する（ステップＳ８９）。すなわち、ｉ番目のハミルトンパスにおける監視対象ノード全てに対して管理ノード２００ｂからメッセージを送信したか否かを判断する。
【００８０】
ｎが監視対象ノード数ｎmaxiに達していない場合には、処理はステップＳ８１に戻り、ハミルトンパスにおいて次の監視対象ノードに対してメッセージを送ることになる。
【００８１】
一方、ｎがｎmaxiに達した場合には、１つも監視対象ノードが正常に動作していなかったことになるので、監視処理部２３０は、異常ノード数ｅｒｒ＿ｎｕｍ（＝そのグループの監視対象ノード総数ｎmaxi）を、サマリデータ領域２５１に格納されている値と加算する（ステップＳ９１）。サマリデータ領域２５１には初期値として０が格納されているものとする。そして処理は呼び出し元の処理に戻る。
【００８２】
このようにすれば、各ハミルトンパスについて、ｅｒｒ＿ｎｕｍを含むメッセージを送信できる。なお、正常に動作する監視対象ノードが存在しない場合には、その結果がサマリデータ領域２５１に蓄積される。
【００８３】
一方、各監視対象ノード１Ｘは、図１８の処理を実行する。
【００８４】
まず、監視対象ノード１Ｘの通信部１０ｂが、ｅｒｒ＿ｎｕｍを含むメッセージを他の装置から受信すると（図１８：ステップＳ１０１）、監視処理部２０に出力する。
【００８５】
監視処理部２０は、自ノードがハミルトンパスにおける終点ノードであるか否かを判断する（ステップＳ１０３）。自ノードが終点ノードであれば、監視処理部２０は、通信部１０ｂのリダクション処理部１２に、管理ノード２００ｂのリダクション処理部２４２を呼び出してｅｒｒ＿ｎｕｍを出力させる（ステップＳ１１７）。そして処理を終了する。このようにリダクション機能を用いることで、ｅｒｒ＿ｎｕｍの集計については、管理ノード２００ｂにおけるリダクション処理部２４２に委託する。
【００８６】
一方、自ノードが終点ノードではない場合には、監視処理部２０は、ハミルトンパスデータ格納部３０に格納されているハミルトンパス通番ｎ（但し、本ステップを最初に実行する場合には自ノードの通番＋１をｎに設定。）の監視対象ノードを特定し、当該監視対象ノードに対して、ｅｒｒ＿ｎｕｍを含むメッセージを、通信部１０ｂを介して送信する（ステップＳ１０５）。
【００８７】
監視処理部２０は、通信部１０ｂを介して、通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかったか、すなわちタイムアウトしたか否かを判断する（ステップＳ１０７）。タイムアウトしなかった場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信した場合には、この監視対象ノード１Ｘの処理は終了する。
【００８８】
一方、タイムアウトした場合、すなわち通番ｎの監視対象ノードからＡＣＫメッセージを所定時間内に受信しなかった場合には、監視処理部２０は、ＲＤＭＡ部１１に指示して、管理ノード２００ｂが有するメモリ２５０のノードデータ領域２５２において通番ｎのノードのための領域にエラーを書き込ませる（ステップＳ１０９）。例えば、エラーフラグをオンにセットする。例えば、自ノードが１００００番台のノード群に属する場合、１００００＋ｎでシステム全体の中の通番を算出し、当該システム全体の中の通番のノードのための領域に書き込む。
【００８９】
また、監視処理部２０は、ｅｒｒ＿ｎｕｍの値を１インクリメントする（ステップＳ１１１）。そして、監視処理部２０は、ｎが自ノードが属するハミルトンパスにおける監視対象ノード数ｎmaxに達したか否かを判断する（ステップＳ１１３）。すなわち、ハミルトンパスにおいて、自ノードより後ろに設定されている監視対象ノード全てに対して現監視対象ノード１Ｘからメッセージを送信したか否かを判断する。
【００９０】
ｎが監視対象ノード数ｎmaxに達していない場合には、監視処理部２０は、ｎを１インクリメントする（ステップＳ１１５）。そして、処理はステップＳ１０５に戻り、ハミルトンパスにおいて次の監視対象ノードに対してメッセージを送ることになる。
【００９１】
一方、ｎが監視対象ノード数ｎmaxに達した場合には、処理はステップＳ１１７に移行する。すなわち、正常に動作する監視対象ノードがハミルトンパスの自ノード以降において他に存在しないので、管理ノード２００ｂに報告を行う。
【００９２】
監視対象ノード１Ｘでは、ＲＤＭＡ部１１を用いて、ＲＤＭＡによってデータを、管理ノード２００ｂのメモリ２５０に直接書き込むので、管理ノード２００ｂの処理負荷を増加させずに済むようになっている。
【００９３】
各ハミルトンパスにおいて正常に動作する監視対象ノードのうち最後尾の監視対象ノードは、上で述べたように、ステップＳ１１７で、管理ノード２００ｂにおけるリダクション処理部２４２に、ｅｒｒ＿ｎｕｍを出力する。
【００９４】
そうすると、管理ノード２００ｂにおけるリダクション処理部２４２は、図１９に示すような処理を実行する。
【００９５】
すなわち、リダクション処理部２４２は、監視対象ノード１Ｘから呼び出されてｅｒｒ＿ｎｕｍを受信し（ステップＳ１２１）、サマリデータ領域２５１に格納されている値に対して受信したｅｒｒ＿ｎｕｍを加算してサマリデータ領域２５１に書き込むことで、ｅｒｒ＿ｎｕｍの合計を更新する（ステップＳ１２３）。
【００９６】
このような処理を実行することで、非同期に各ハミルトンパスにおいて実質的な最後尾の監視対象ノードからｅｒｒ＿ｎｕｍを受信しても、サマリデータ領域２５１に格納されている値を、通信部２４０ｂの処理として更新するので、管理ノード２００ｂのＣＰＵ（Central Processing Unit）の処理負荷を抑制できる。
【００９７】
なお、第１の実施の形態でも第２の実施の形態でもＮ次元メッシュを前提とした説明であったが、Ｎ次元トーラスでも同様の処理を行うことで、上で述べたような効果を得ることができる。トーラスの場合には、ハミルトンパスの始点と終点とが同じ監視対象ノードとなる場合があるが、メッセージの送信元が管理ノードであれば始点ノードとして動作し、他の監視対象ノードであれば終点ノードとして動作すればよい。
【００９８】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で述べた機能ブロック構成は、必ずしも装置の部品構成やプログラムモジュール構成と一致しない場合もある。
【００９９】
また、ｅｒｒ＿ｎｕｍを含むメッセージを送受信する例を示したが、それ以外のデータについてもメッセージに含めるようにしても良い。例えば、ハミルトンパスの経路上に存在する監視対象ノードに対応するビット列を含むようにして、メッセージの送信先が異常であると検出されるとその送信先の監視対象ノードに対応するビットをオンにセットするようにしても良い。
【０１００】
さらに、処理フローについても、処理結果が変わらない限り、実行順番を入れ替えたり、複数ステップを並列に実行するようにしても良い。
【０１０１】
なお、上で述べた管理ノード２００及び２００ｂ及び監視対象ノード１及び１Ｘは、コンピュータ装置であって、図２０に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１０２】
なお、通信制御部２５１７は、管理ノード２００又は２００ｂにおける通信部２４０又は２４０ｂや、監視対象ノード１又は１Ｘにおける通信部１０又は１０ｂに対応する。すなわち、通信制御部２５１７は、ＲＤＭＡ機能やリダクション機能を有している。
【０１０３】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１０４】
本実施の形態に係るシステムは、通信パスを介して接続された複数の情報処理装置と、複数の情報処理装置を管理する管理装置とを含む。そして、上記管理装置は、（ａ１）複数の情報処理装置に対して設定されたハミルトンパスにおいて複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信する。一方、（ｂ１）上で述べた複数の情報処理装置の各々は、メッセージを受信すると、ハミルトンパスにおいて次に正常に動作する情報処理装置が存在する場合には当該次に正常に動作する情報処理装置に、これまでに検出された異常に関する情報を含むメッセージを送信し、（ｂ２）ハミルトンパスにおいて次に正常に動作する情報処理装置を検出できない又はハミルトンパスの末端である情報処理装置は、これまでに検出された異常に関する情報を前記管理装置に送信する。
【０１０５】
このようにすれば、異常検知のための処理負荷をシステム全体として削減できるようになる。すなわち、メッセージの送受信が各情報処理装置において原則として１回で済む。また、管理装置についても、原則としてメッセージの送信は１ハミルトンパスにつき１回に抑制され、検出された異常に関する情報についても１ハミルトンパスにつき１回の受信に抑制される。さらに、検出された異常に関する情報の管理装置への送信については、メッセージで送信する場合もあれば、ＲＤＭＡを用いる場合もある。
【０１０６】
なお、上で述べた複数の情報処理装置の各々は、（ｂ３）ハミルトンパスにおいて次に正常に動作する情報処理装置を探索し、（ｂ４）異常な情報処理装置を検出すると、当該異常な情報処理装置のデータを管理装置のメモリに書き込むようにしても良い。このようにＲＤＭＡを用いれば、管理装置のプロセッサの処理負荷を下げることができる。
【０１０７】
さらに、上で述べた管理装置は、（ａ２）複数の情報処理装置の各々がいずれかに属する複数のグループの各々に対して設定されたハミルトンパスにおいて複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、（ａ３）複数のグループの各々について上記これまでに検出された異常に関する情報を受信すると、当該情報を集約するようにしても良い。情報処理装置のグループ毎にハミルトンパスを設定すれば、多数の情報処理装置を取り扱う場合には並列に処理が行われるので、処理時間を短縮できる。
【０１０８】
なお、上で述べたような処理をプロセッサ又はコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【０１０９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１０】
（付記１）
通信パスを介して接続された複数の情報処理装置と、
前記複数の情報処理装置を管理する管理装置と
を含み、
前記管理装置は、
前記複数の情報処理装置に対して設定されたハミルトンパスにおいて前記複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、
前記複数の情報処理装置の各々は、
前記メッセージを受信すると、前記ハミルトンパスにおいて次に正常に動作する情報処理装置が存在する場合には当該次に正常に動作する情報処理装置に、これまでに検出された異常に関する情報を含むメッセージを送信し、
前記ハミルトンパスにおいて次に正常に動作する情報処理装置を検出できない又は前記ハミルトンパスの末端である情報処理装置は、
これまでに検出された異常に関する情報を前記管理装置に送信する
システム。
【０１１１】
（付記２）
前記複数の情報処理装置の各々は、
前記ハミルトンパスにおいて次に正常に動作する情報処理装置を探索し、
異常な情報処理装置を検出すると、当該異常な情報処理装置のデータを前記管理装置のメモリに書き込む
付記１記載のシステム。
【０１１２】
（付記３）
前記管理装置は、
前記複数の情報処理装置の各々がいずれかに属する複数のグループの各々に対して設定されたハミルトンパスにおいて前記複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、
前記複数のグループの各々について前記これまでに検出された異常に関する情報を受信すると、当該情報を集約する
付記１又は２記載のシステム。
【０１１３】
（付記４）
通信パスを介して接続された複数の情報処理装置と、前記複数の情報処理装置を管理する管理装置とを有するシステムにより実行される異常検出方法であって、
前記管理装置は、前記複数の情報処理装置に対して設定されたハミルトンパスにおいて前記複数の情報処理装置のうち正常に動作する最初の情報処理装置に、検出した異常に関する情報を含むメッセージを送信し、
前記複数の情報処理装置の各々は、前記メッセージを受信すると、前記ハミルトンパスにおいて次に正常に動作する情報処理装置が存在する場合には当該次に正常に動作する情報処理装置に、これまでに検出された異常に関する情報を含むメッセージを送信し、
前記複数の情報処理装置のうち前記ハミルトンパスにおいて次に正常に動作する情報処理装置を検出できない又は前記ハミルトンパスの末端である情報処理装置は、これまでに検出された異常に関する情報を前記管理装置に送信する
処理を含む異常検出方法。
【符号の説明】
【０１１４】
１，１Ｘ  監視対象ノード
１０，１０ｂ  通信部
１１  ＲＤＭＡ部
１２  リダクション処理部
２０  監視処理部
３０  ハミルトンパスデータ格納部
２００，２００ｂ  管理ノード
２１０  初期設定部
２１１  ハミルトンパス生成部
２２０  ハミルトンパスデータ格納部
２３０  監視処理部
２４０，２４０ｂ  通信部
２４１  ＲＤＭＡ部
２４２  リダクション処理部
２５０  メモリ
２６０  異常処理部
【図１】
0006323243.tif 000002
【図２】
0006323243.tif 000003
【図３】
0006323243.tif 000004
【図４】
0006323243.tif 000005
【図５】
0006323243.tif 000006
【図６】
0006323243.tif 000007
【図７】
0006323243.tif 000008
【図８】
0006323243.tif 000009
【図９】
0006323243.tif 000010
【図１０】
0006323243.tif 000011
【図１１】
0006323243.tif 000012
【図１２】
0006323243.tif 000013
【図１３】
0006323243.tif 000014
【図１４】
0006323243.tif 000015
【図１５】
0006323243.tif 000016
【図１６】
0006323243.tif 000017
【図１７】
0006323243.tif 000018
【図１８】
0006323243.tif 000019
【図１９】
0006323243.tif 000020
【図２０】
0006323243.tif 000021