JP2019219755A - 監視プログラム、監視方法、および並列処理装置 - Google Patents

監視プログラム、監視方法、および並列処理装置 Download PDF

Info

Publication number
JP2019219755A
JP2019219755A JP2018114883A JP2018114883A JP2019219755A JP 2019219755 A JP2019219755 A JP 2019219755A JP 2018114883 A JP2018114883 A JP 2018114883A JP 2018114883 A JP2018114883 A JP 2018114883A JP 2019219755 A JP2019219755 A JP 2019219755A
Authority
JP
Japan
Prior art keywords
node
message
monitoring
identifier
monitoring 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.)
Granted
Application number
JP2018114883A
Other languages
English (en)
Other versions
JP7063139B2 (ja
Inventor
玲司 正木
Reiji Masaki
玲司 正木
剛 橋本
Takeshi Hashimoto
剛 橋本
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018114883A priority Critical patent/JP7063139B2/ja
Publication of JP2019219755A publication Critical patent/JP2019219755A/ja
Application granted granted Critical
Publication of JP7063139B2 publication Critical patent/JP7063139B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】並列処理を実行するシステムにおいて発生したタイムアウトの原因の特定を支援することを目的とする。【解決手段】監視プログラムは、第1ノードからの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、自ノードの識別子を含む監視メッセージを第1ノードに送信し、第2ノードからの所定メッセージを待つ状態であるときに監視メッセージを受信した場合、受信した監視メッセージに自ノードの識別子を付加し、自ノードの識別子が付加された監視メッセージを第2ノードに送信し、受信した監視メッセージに自ノードの識別子が含まれている場合、受信した監視メッセージに含まれる各識別子を表示する処理をノードに実行させる。【選択図】図14

Description

本発明は、監視プログラム、監視方法、および並列処理装置に関する。
近年、大規模な科学技術計算等を実行する場合、分散メモリ型のシステム上で、複数のノードによる並列処理が行われる。複数のノードによる並列処理が行われる場合、並列処理システムの規模が大きくなるほど、ノード間のメッセージ通信でタイムアウトが発生した時の原因の特定が困難となる。
関連する技術として、システム内の複数の構成要素(例えば、トランザクション)間の依存性の循環的連鎖を含む潜在的デッドロックを検出する技術が提案されている(例えば、特許文献1を参照)。
また、関連する技術として、システム運用中にロック待ちが発生したときに、初めて、手続と資源の要求と取得の関係を生成し、この要求と取得の関係に循環が発生していないかチェックする技術が提案されている(例えば、特許文献2を参照)。
特開平8−263352号公報 特開平11−31080号公報
分散メモリ型の並列システム上で並列処理が行われる際、例えばメッセージの転送ルートの設定が誤っている場合、デッドロックが発生する可能性がある。
デッドロックの有無を確認するために、事象待ちの連鎖を調査するには、他のノード上のメッセージ受信待ち状況の情報全てを取得することが考えられる。また、例えば、グラフ理論に基づくデッドロック検出アルゴリズム等を生成し、並列処理システムに導入する場合、大規模なプログラムを並列処理システムに導入することが考えられる。しかし、これらの方法では、調査のための準備に時間がかかる。
1つの側面として、本発明は、並列処理を実行するシステムにおいて発生したタイムアウトの原因の特定を支援することを目的とする。
1つの態様では、監視プログラムは、複数のノードによる並列処理を行うシステムにおいて前記ノードに実行させる監視プログラムであって、第1ノードからの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、自ノードの識別子を含む監視メッセージを前記第1ノードに送信し、第2ノードからの所定メッセージを待つ状態であるときに前記監視メッセージを受信した場合、受信した前記監視メッセージに自ノードの識別子を付加し、前記自ノードの識別子が付加された前記監視メッセージを前記第2ノードに送信し、受信した前記監視メッセージに自ノードの識別子が含まれている場合、受信した前記監視メッセージに含まれる各識別子を表示する処理を前記ノードに実行させる。
1つの側面によれば、並列処理を実行するシステムにおいて発生したタイムアウトの原因の特定を支援することができる。
実施形態におけるノードおよび表示装置の一例を示す図である。 第1のシステム構成例を示す図である。 第1のシステムにおける監視メッセージの例を示す図である。 第1のシステムにおけるエラーメッセージの例を示す図である。 第2のシステム構成例を示す図である。 第2のシステムにおける監視メッセージの例を示す図である。 第2のシステムにおけるエラーメッセージの例を示す図である。 第3のシステム構成例を示す図である。 第3のシステムにおける監視メッセージの例を示す図である。 並列処理システムの監視方法の一例を示す図である。 待ち状態発生時におけるノードの動作例を示す図である。 タイムアウト発生時におけるノードの動作例を示す図である。 監視メッセージ受信時におけるノードの動作例を示す図である。 実施形態の処理の一例を示すフローチャートである。 図14のステップS102の処理の一例を示すフローチャートである。 図14のステップS104の処理の一例を示すフローチャートである。 図14のステップS106の処理の一例を示すフローチャートである。 ノードのハードウェア構成の一例を示す図である。
近年、大規模な科学技術計算等を実行する場合、分散メモリ型のシステム上で、複数のノードによる並列処理が行われる。その際、プログラム言語の実行時処理系(runtime system)が、複数の計算ノード間のメッセージ通信や同期処理を管理し、利用者プログラムに対して体系化されたインタフェースを提供している。プログラム言語の実行時処理系として、例えば、Message Passing Interface(MPI)などのライブラリ関数、Fortran2008以降でサポートされるCoArray機能やUnified Parallel C (UPC)等が用いられる。
並列処理が行われる際、デッドロックが発生する可能性がある。デッドロックとは、複数の異なる動作単位の間で、他の動作単位の事象待ちを解消させるための動作を行う際の順番を調査すると、循環が存在することを指す。例えば、動作単位A1が、動作単位A2が発生させる事象を待ち、動作単位A2が、動作単位A3が発生させるべき事象を待つとする。そして、動作単位Akが、動作単位A1が発生させるべき事象を待っている場合、デッドロックが発生している事が想定される。
通信ライブラリ関数ないしプログラム言語の実行時処理系の内部にデッドロック検出の仕組みを含めるために、検出のために利用者プログラムにリンクされるプログラムの命令列自体の長さを調査することが考えられる。しかし、この調査のための負担が増加するという課題がある。また、全ノードでのメッセージ待ち合わせ関係を定義したデータ等を記憶しておくことが考えられるが、プログラムの実行開始以前に記憶する静的なデータが増加するため、好ましくない。さらに、利用者にとっての実用的価値を十分高くするためには、デッドロック以外の原因によるタイムアウト発生時の場合にも、調査に十分な情報を表示あるいは記録する事が好ましい。
<実施形態>
以下、図面を参照して、実施形態について説明する。図1は、実施形態におけるノード1および表示装置2の一例を示す図である。ノード1は、並列処理装置の一例であり、複数のノード1による並列処理を行うシステムに含まれる。ノード1は、並検出部11と記録部12と生成部13と送信部14と判定部15と出力部16と記憶部17とを含む。送信部14は、第1送信部および第2送信部の一例である。
検出部11は、所定の並列処理において、他ノードからの所定メッセージを待つ状態(待ち状態)が発生したか判定する。また、検出部11は、監視対象プログラムが実行する並列処理において待ち状態である期間中に、タイムアウトが発生したか判定する
記録部12は、検出部11が待ち状態が発生したことを検出した場合、監視メッセージ関連情報を記録する。記録部12は、例えば、待ち状態となった処理で他のノードに送信されるメッセージの種類、および自ノードを示す識別情報を、監視メッセージ関連情報として記録する。
記録部12は、監視メッセージを受信したときに自ノードが休止状態である場合、受信した監視メッセージに休止状態となった原因に関する情報を付加する。休止状態は、プロセスの実行が中断されている状態であり、例えば、Unix系のOperating System(OS)で用いられるシステムコール「sleep」により発生する。
記録部12は、他のノード(第2ノード)からの所定メッセージを待つ状態であるときにいずれかのノードから監視メッセージを受信した場合、その監視メッセージに自ノードを示す識別子を付加する。
生成部13は、監視メッセージ関連情報を用いて、タイムアウトが発生した処理で待つメッセージの種類と自ノードの識別子を含む監視メッセージを生成する。
送信部14は、他のノード(第1ノード)からの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、生成部13が生成した監視メッセージを第1ノードに送信する。
送信部14は、監視メッセージを受信したときに自ノードが休止状態である場合、記録部12により休止状態となった原因に関する情報が付加された監視メッセージを、その監視メッセージの送信元ノードに送信する。
送信部14は、監視メッセージが自ノードの識別子を含まず、末端のノードを経由していた場合、その監視メッセージを、その監視メッセージの前回の送信元に送信する。
送信部14は、他のノード(第2ノード)からの所定メッセージを待つ状態であるときに第2ノードから監視メッセージを受信した場合、自ノードを示す識別子が付加された監視メッセージを、監視対象プログラムの待ち合わせ対象ノードに送信する。
判定部15は、監視メッセージの受信時に各種判定処理を行う。判定部15の判定処理により、監視メッセージの受信時に記録部12や送信部14等が実行する処理が選択される。
出力部16は、監視メッセージ内のメッセージ種類や識別子を含むエラーメッセージを表示する。出力部16は、例えば、エラーメッセージを表示装置2に表示するとともに、ログデータとして出力してもよい。
出力部16は、受信した監視メッセージに自ノードの識別子と休止状態となった原因に関する情報とが含まれている場合、情報を表示する。出力部16は、受信した監視メッセージに自ノードの識別子が含まれ、休止状態となった原因に関する情報が含まれていない場合、デッドロックが発生したことを示すメッセージを表示する。
記憶部17は、監視メッセージ関連情報等を記録する。表示装置2は、ノード1に接続されており、出力部16からの指示に応じて、エラーメッセージを表示する。なお、表示装置2は、ノード1に含まれていてもよい。
図2は、第1のシステム構成例を示す図である。図2は、並列処理を実行する際に、複数のノードによる事象待ちが循環することにより、デッドロックが発生しているシステムの例を示す。図2に示すシステムは、並列処理を行うノード1−1、1−2、1−3、および1−4を含む。なお、以下の説明において、複数のノードを区別しない場合、ノード1と称する。
図2による矢印は、所定の処理を行うノード1から、その所定処理を行う前に実行する必要がある処理を行う他ノードに対して向けられている。そして、所定の処理を行うノード1は、他ノードが実行する処理により生成される所定メッセージを待っているとする。この場合、他ノードを、待ち合わせ対象ノードと称する。
例えば、所定処理を行うノードがノード1−1である場合、待ち合わせ対象ノードは、ノード1−2である。そして、ノード1−1は、ノード1−2が処理を実行し所定メッセージをノード1−1に送信することを待っている。同様に、ノード1−2は、ノード1−3からのメッセージを待ち、ノード1−3は、ノード1−4からのメッセージを待ち、ノード1−4はノード1−1からのメッセージを待っている。図2に示す例では、並列処理が完了せずにデッドロックとなり、各ノード1でタイムアウトが発生する。
図2に示す例において、ノード1−1に対するノード1−2は、第1ノードの一例である。ノード1−2に対するノード1−3、ノード1−3に対するノード1−4、ノード1−4に対するノード1−1は、第2ノードの一例である。
図3は、第1のシステムにおける監視メッセージの例を示す図である。図2に示す例において、ノード1−1でタイムアウトが発生し、ノード1−1が監視メッセージを生成したとする。なお、以下の説明において、タイムアウトの発生により監視メッセージを生成したノード1を起点ノードと称することがある。図3(a)は、ノード1−1がノード1−2に送信する監視メッセージを示す。図3(b)は、ノード1−2がノード1−3に送信する監視メッセージを示す。図3(c)は、ノード1−3がノード1−4に送信する監視メッセージを示す。図3(d)は、ノード1−4がノード1−1に送信する監視メッセージを示す。
図3において、監視メッセージの先頭に記述される記号は、並列処理において各ノード1が他のノード1に送信するメッセージの種類を示す。"G"は、”gather”というMessage Passing Interface(MPI)で発生するメッセージを示す。ノード1−1は、メッセージの種類"G"と自ノードの識別子”1”とを含む監視メッセージを生成し、ノード1−2に送信する。他のノード1は、自ノードの識別子を監視メッセージに付加し、待ち合わせ対象ノードに送信する。ノード1−1は、ノード1−4から受信した監視メッセージに自ノードの識別子が監視メッセージに含まれているため、デッドロックが発生していると判定する。
監視メッセージの内容は、図3に示す内容に限られない。例えば、メッセージの種類を数字で表現してもよい。下記のカッコ内はメッセージの種類を示す記号である。
1:ブロッキング型の1対通信
send(1,2)
recv(1,2)
2:他の動作単位からの待ち合わせを行う集団通信
barrier(2,1)
gather(2,2)
reduce(2,3)
例えば、ノードの識別子が4であるノードが集団通信”gather”を実行している場合に、監視メッセージは(2,2,4)となる。
図4は、第1のシステムにおけるエラーメッセージの例を示す図である。図4に示すエラーメッセージは、ノード1−1が、図3(d)に示す監視メッセージを受信した際に表示される。ノード1−1は、図4に示すエラーメッセージを表示装置2に表示させるとともに、ログデータとして出力してもよい。エラーメッセージは、監視メッセージが経由したノードを示す識別子(ノード番号1,2,3,4)と、タイムアウトが発生した処理で待つメッセージの種類(gather)を含む。
ユーザは、図4に示すエラーメッセージを参照することにより、デッドロックが発生したことと、デッドロックされているノード、原因となったメッセージ種類を知ることができる。すなわち、ノード1は、図4に示すエラーメッセージを出力することにより、タイムアウトの原因の特定を支援することができる。
図5は、第2のシステム構成例を示す図である。図5は、あるノードが休止状態となることにより他のノードにタイムアウトが発生するシステムの例を示す。図2に示すシステムは、並列処理を行うノード1−1、1−2、1−3、および1−4を含む。図2と同様に、矢印は、所定の処理を行うノードから、待ち合わせ対象ノードに向けられている。
すなわち、ノード1−2は、ノード1−1からのメッセージを待ち、ノード1−3は、ノード1−1からのメッセージを待ち、ノード1−4は、ノード1−1のメッセージを待っている。図2に示す例では、ノード1−1からメッセージが送信されないことにより並列処理が完了せずに、ノード1−2、1−3、および1−4でタイムアウトが発生する。なお、以下の説明において、休止状態となり他のノードのタイムアウト発生原因となっているノード1を末端ノードと称することがある。図5に示す例では、ノード1−1が末端ノードである。
図5に示す例において、ノード1−2、1−3、1−4に対するノード1−1は、第1ノードの一例である。
図6は、第2のシステムにおける監視メッセージの例を示す図である。図6に示す例において、ノード1−1でタイムアウトが発生したとする。図6(a)は、ノード1−2がノード1−1に送信する監視メッセージを示す。図6(b)は、ノード1−3がノード1−1に送信するメッセージを示す。図6(c)は、ノード1−4がノード1−1に送信する監視メッセージを示す。図3に示す例と同様に、図6に示す監視メッセージは、並列処理において各ノード1が他のノード1に送信するメッセージの種類と自ノードの識別子を含む。
図6(d)は、ノード1−1がノード1−2に送信する監視メッセージを示す。図6(e)は、ノード1−1がノード1−3に送信するメッセージを示す。図6(f)は、ノード1−1がノード1−4に送信するメッセージを示す。図6(d)におけるメッセージのうち、”1”はノード1−1の識別子であり、”R”はノード1−1を休止状態にさせたシステムコール「Read」を示す記号であり、”arg1”、”arg2”は、「Read」の引数を示す。図6(e)、(f)の監視メッセージも同様の構成である。すなわち、休止状態となっているノード1−1は、自ノードの識別子、休止状態にさせたシステムコール、および引数を、受信した監視メッセージに付加して、監視メッセージの送信元に返す。
図7は、第2のシステムにおけるエラーメッセージの例を示す図である。図7に示すエラーメッセージは、ノード1−2が、図6(d)に示す監視メッセージを受信した際に表示される。ノード1−2は、図7に示すエラーメッセージを表示装置2に表示させるとともに、ログデータとして出力してもよい。エラーメッセージは、監視メッセージが経由したノードを示す識別子(ノード番号1,2)と、ノード1−1が休止状態となった原因に関する情報(read(arg1,arg2))を含む。
ユーザは、図7に示すエラーメッセージを参照することにより、ノード1−1が休止状態となったことと、休止状態となった原因を知ることができる。すなわち、ノード1は、図7に示すエラーメッセージを出力することにより、タイムアウトの原因の特定を支援することができる。
図8は、第3のシステム構成例を示す図である。図8は、あるノードが休止状態となることにより他のノードにタイムアウトが発生するシステムであって、メッセージ待ちの関係がN対1(Nは2以上の整数)となる例を示す。図8に示すシステムは、並列処理を行うノード1−1、1−2、1−3、1−4、1−5、1−6および1−7を含む。図2と同様に、矢印は、所定の処理を行うノードから、待ち合わせ対象ノードに向けられている。
すなわち、ノード1−2は、ノード1−1からのメッセージを待ち、ノード1−3、1−5は、ノード1−2からのメッセージを待ち、ノード1−4は、ノード1−3のメッセージを待っている。また、ノード1−6は、ノード1−5からのメッセージを待ち、ノード1−7は、ノード1−4からのメッセージを待っている。図8に示す例では、ノード1−1が休止状態となり、ノード1−1からメッセージが送信されないことにより並列処理が完了せず、他のノード1でタイムアウトが発生する。図8に示す例では、ノード1−1が末端ノードである。
図9は、第3のシステムにおける監視メッセージの例を示す図である。図9に示す例において、ノード1−4でタイムアウトが発生したとする。図9(a)は、ノード1−4がノード1−3に送信する監視メッセージを示す。図9(b)は、ノード1−3がノード1−2に送信する監視メッセージを示す。図9(c)は、ノード1−2がノード1−1に送信する監視メッセージを示す。図9(a)〜(c)に示す例では、図3、図6に示す例と同様に、監視メッセージは、並列処理において各ノード1が他のノード1に送信するメッセージの種類と自ノードの識別子を含む。
図9(d)は、ノード1−1がノード1−2に送信する監視メッセージを示す。図9(e)は、ノード1−2がノード1−3に送信するメッセージを示す。図9(f)は、ノード1−3がノード1−4に送信するメッセージを示す。図6(d)〜(f)に示す例と同様に、図9(d)〜(f)におけるメッセージのうち、”R”はノード1−1を休止状態にさせたシステムコール「Read」を示す記号であり、”arg1”、”arg2”は、「Read」の引数を示す。ノード1−2、1−3は、送信された監視メッセージをそのまま、前回の監視メッセージの送信元に返す。
図10は、並列処理システムの監視方法の一例を示す図である。各ノード1は、監視プログラムおよび監視対象プログラムが記憶されている。監視プログラムは、監視対象プログラムにリンクするライブラリおよびインタフェースを含む。
監視プログラムは、監視対象プログラムが実行される際に実行される。ただし、監視プログラムは、監視対象プログラムとは独立して動作し、他のノードの監視プログラムと監視メッセージの送受信を常時実行可能であるとする。この監視プログラムの機能は、複数の事象を同時に待ち合わせ可能なシステムコール(例えば、Unix系のOSで用いられるselect、poll等)を使用することにより実現される。また、監視プログラムの機能は、OSの機能を用いて、監視対象プログラムと独立にスケジュールされるスレッドやプロセス内で監視プログラムを動作させる事により実現できる。
監視対象プログラムは、他のノード1の監視対象プログラムと所定メッセージの送受信を実行する。なお、並列処理システムは、図8に示すように1対Nの接続関係を含んでいてもよい。
図11は、待ち状態発生時のノードの動作例を示す図である。監視対象プログラムは、メインプログラムと、ライブラリとを含む。監視対象プログラムが実行中に他ノードからの所定メッセージを待つ所定の並列処理を実行する場合、メインプログラムは、ライブラリを呼び出す。並列処理は、例えば、gather等の集団通信を含む。呼び出されたライブラリは、並列処理が実行され、待ち状態が発生することを監視プログラムに通知する。また、ライブラリは、他ノードと通信を開始し、他ノードとの所定メッセージの送受信を実行する。
監視プログラムにより実現される記録部12は、待ち状態が発生することを示す通知を監視対象プログラムから受け取った場合、待ち状態となった処理に関する監視メッセージ関連情報を記録する。監視メッセージ関連情報は、監視メッセージに用いられる情報であり、メッセージ種類および自ノードの識別子を含む。
図12は、タイムアウト発生時におけるノードの動作例を示す図である。例えば、待ち状態が発生してから所定時間経過した場合、ライブラリがタイムアウトを発生させる。ライブラリは、監視プログラムにタイムアウトが発生したことを通知する。その後、ライブラリは、メインプログラム、および他ノードの監視対象プログラムにタイムアウトが発生したことを通知する。監視対象プログラムは、タイムアウトが発生した場合、通常のタイムアウト処理を実行する。
監視プログラムは、ライブラリからタイムアウトが発生したことが通知されると、記録された監視メッセージ関連情報に基づいて、待ち合わせ対象ノード(図12のノード1−2)に送信する。送信された監視メッセージは、待ち合わせ対象ノードの監視プログラムによりノード内に記憶される。
図13は、監視メッセージ受信時におけるノードの動作例を示す図である。監視プログラムは、受信した監視メッセージが自ノードの識別子を含む場合、監視メッセージに含まれるメッセージ種類、経由したノードの識別子を含むエラーメッセージを表示装置2に表示する。
または、監視プログラムは、受信した監視メッセージが、自ノードの識別子を含まず、自ノードに記録されたメッセージ関連情報に対応する場合、監視メッセージに自ノードの識別子を付加して待ち合わせ対象ノードに送信する。
図14は、実施形態の処理の一例を示すフローチャートである。検出部11は、所定の並列処理において、他ノードからの所定メッセージを待っている状態(待ち状態)が発生したか判定する(ステップS101)。待ち状態が発生した場合(ステップS101でYES)、記録部12は、監視メッセージ関連情報記録処理を実行する(ステップS102)。
ステップS101でNOの場合、検出部11は、監視対象プログラムが実行する並列処理において待ち状態である期間中に、タイムアウトが発生したか判定する(ステップS103)。検出部11がタイムアウトの発生を検出した場合(ステップS103でYES)、ノード1は、監視メッセージ送信処理を実行する(ステップS104)。
ステップS103でNOであって、ノード1が他ノードから監視メッセージを受信した場合(ステップS105でYES)、ノード1は、監視メッセージ受信時処理を実行する(ステップS106)。
ステップS105でNOの場合、または、ステップS106の処理後、ノード1は、監視終了指示を受けたか判定する(ステップS107)。ステップS107でNOの場合、ノード1は、ステップS101の処理に戻る。ステップS107でYESの場合、ノード1は、監視プログラムによる監視処理を終了する。なお、ステップS102、S104、およびS106に関して、詳細な処理を後述する。
図15は、図14のステップS102の処理の一例を示すフローチャートである。記録部12は、待ち状態となった処理に関して、監視メッセージ関連情報が記録済みであるか判定する(ステップS201)。記録部12は、例えば、待ち状態となった処理で他ノードに送信される所定メッセージの種類を示す情報が、監視メッセージ関連情報として記録済みであるか判定する。
ステップS201でNOの場合、記録部12は、待ち状態となった処理に関する監視メッセージ関連情報を記憶部17に記録する(ステップS202)。記録部12は、例えば、待ち状態となった処理で他のノードに送信されるメッセージの種類、および自ノードを示す識別情報を、監視メッセージ関連情報として記録する。また、記録部12は、監視メッセージの送信先ノードを示す識別子をライブラリから受け付け、その識別子を監視メッセージ関連情報とともに記録してもよい。監視メッセージの送信先ノードは、待ち合わせ対象ノードである。
ステップS201でYESの場合、記録部12は、待ち状態となった処理に関する監視メッセージ関連情報を、既に記憶部17に記憶されている監視メッセージ関連情報に上書きして記録する(ステップS203)。
なお、記録部12は、監視対象プログラムが待ち合わせ対象のノードから所定メッセージを受信して待ち状態が解消された場合、その所定メッセージに対応する監視メッセージ関連情報を削除してもよい。
図16は、図14のステップS104の処理の一例を示すフローチャートである。生成部13は、タイムアウトが発生した処理に関する監視メッセージ関連情報が存在するか判定する(ステップS301)。例えば、タイムアウトが発生した処理が待ち状態となり、図15のステップS202で監視メッセージ関連情報が記録された場合、記憶部17に監視メッセージ関連情報が存在している。ステップS301でNOの場合、ノード1は、ステップS104の処理を終了する。
ステップS301でYESの場合、生成部13は、監視メッセージ関連情報を用いて、タイムアウトが発生した処理で待つメッセージの種類と自ノードの識別子を含む監視メッセージを生成する(ステップS302)。送信部14は、生成された監視メッセージを待ち合わせ対象ノードに送信する(ステップS303)。
図17は、図14のステップS106の処理の一例を示すフローチャートである。判定部15は、受信した監視メッセージが自ノードの識別子を含むか判定する(ステップS401)。受信した監視メッセージが自ノードの識別子を含む場合、自ノードが起点ノードであり、自ノードが生成した監視メッセージが他ノードを経由して戻ってきたことが考えられる。よって、ステップS401でYESの場合、出力部16は、監視メッセージ内のメッセージ種類や識別子を含むエラーメッセージを表示する(ステップS402)。出力部16は、例えば、エラーメッセージを表示装置2に表示するとともに、ログデータとして出力してもよい。
ステップS401でNOの場合、判定部15は、自ノードが休止状態であるか判定する(ステップS403)。自ノードが休止状態である場合、記録部12は、自ノードの識別子と受信した監視メッセージに休止状態となった原因に関する情報とを付加し、送信部14は、その監視メッセージを、その監視メッセージの送信元ノードに送信する(ステップS404)。送信部14は、例えば、休止状態の原因がメッセージの受信待ちではない場合に、ステップS404の応答を行うとする。
ステップS403でNOの場合、判定部15は、自ノードが待ち状態であるか判定する(ステップS405)。待ち状態である場合(ステップS405でNO)、判定部15は、監視メッセージが末端のノードを経由したか判定する(ステップS406)。末端のノードは、いずれかのノードの待ち合わせ対象ノードであり、休止状態となっているノードである。判定部15は、例えば、監視メッセージに休止状態となった原因に関する情報が含まれている場合、監視メッセージが末端ノードを経由したと判定する。
ステップS406でYESの場合、送信部14は、監視メッセージを、その監視メッセージの前回の送信元に送信する(ステップS407)。監視メッセージが末端のノードを経由しており、自ノードが起点でない場合、起点ノードに監視メッセージを返すこととなる。従って、送信部14は、その監視メッセージの前回の送信元に送信することにより、起点ノードに監視メッセージを返す。
ステップS406でNOの場合、判定部15は、監視メッセージが記録した情報に対応するか判定する(ステップS408)。判定部15は、例えば、受信した監視メッセージに含まれるメッセージ種類が、記録した監視メッセージ関連情報に含まれるメッセージ種類に対応するか判定する。
ステップS408でYESの場合、記録部12は、監視メッセージに自ノードを示す識別子を付加する(ステップS409)。そして、送信部14は、識別子を付加した監視メッセージを、監視対象プログラムの待ち合わせ対象ノードに送信する(ステップS410)。記録部12は、監視メッセージが送信された場合、その監視メッセージに対応する監視メッセージを記憶部17から削除してもよい。
ステップS402、S404、S407、S410の処理後、ステップS405、S408でNOの場合、ステップS106の処理は終了する。
以上のように、ノード1は、大規模なプログラムを用いなくても、送信した監視メッセージが戻ってきた場合に、経由したノード1を表示して、タイムアウトとなった原因の特定を支援することができる。また、デッドロックだけではなく、あるノード1が休止状態となったことによりタイムアウトとなった場合に、休止状態となった原因を表示することにより、タイムアウトとなった原因の特定を支援することができる。
次に、ノード1のハードウェア構成の一例を説明する。図18は、ノード1のハードウェア構成の一例を示す図である。図18の例に示すように、ノード1において、バス100に、プロセッサ111とメモリ112と補助記憶装置113と通信インタフェース114と媒体接続部115と入力装置116と出力装置117とが接続される。
プロセッサ111は、メモリ112に展開されたプログラムを実行する。実行されるプログラムには、実施形態における処理を行う監視プログラムが適用されてもよい。
メモリ112は、例えば、Random Access Memory(RAM)である。補助記憶装置113は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。補助記憶装置113に実施形態の処理を行う監視プログラムが記憶されていてもよい。
通信インタフェース114は、Local Area Network(LAN)、Wide Area Network(WAN)等の通信ネットワークに接続され、通信に伴うデータ変換等を行う。送信部14が他のノード1に情報を送信する場合、通信インタフェース114を介して、情報を送信する。
媒体接続部115は、可搬型記録媒体118が接続可能なインタフェースである。可搬型記録媒体118には、光学式ディスク(例えば、Compact Disc(CD)やDigital Versatile Disc(DVD))、半導体メモリ等が適用されてもよい。可搬型記録媒体118に実施形態の処理を行う監視プログラムが記録されていてもよい。
入力装置116は、例えば、キーボード、ポインティングデバイス等であり、ユーザからの指示及び情報等の入力を受け付ける。
出力装置117は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザへの問い合わせ又は指示、及び処理結果等を出力する。図1に示す表示装置2には、図18に示す出力装置117が適用されてもよい。
図1に示す記憶部17は、メモリ112、補助記憶装置113または可搬型記録媒体118等により実現されてもよい。図1に示す検出部11、記録部12、生成部13、送信部14、判定部15、および出力部16は、メモリ112に展開された監視プログラムをプロセッサ111が実行することにより実現されてもよい。
メモリ112、補助記憶装置113および可搬型記録媒体118は、コンピュータが読み取り可能であって非一時的な有形の記憶媒体であり、信号搬送波のような一時的な媒体ではない。
<その他>
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で様々な変更、追加、省略が適用可能である。
1 ノード
2 表示装置
11 検出部
12 記録部
13 生成部
14 送信部
15 判定部
16 出力部
17 記憶部
100 バス
111 プロセッサ
112 メモリ
113 補助記憶装置
114 通信インタフェース
115 媒体接続部
116 入力装置
117 出力装置
118 可搬型記録媒体

Claims (6)

  1. 複数のノードによる並列処理を行うシステムにおいて前記ノードに実行させる監視プログラムであって、
    第1ノードからの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、自ノードの識別子を含む監視メッセージを前記第1ノードに送信し、
    第2ノードからの所定メッセージを待つ状態であるときに前記監視メッセージを受信した場合、受信した前記監視メッセージに自ノードの識別子を付加し、前記自ノードの識別子が付加された前記監視メッセージを前記第2ノードに送信し、
    受信した前記監視メッセージに自ノードの識別子が含まれている場合、受信した前記監視メッセージに含まれる各識別子を表示する
    処理を前記ノードに実行させるための監視プログラム。
  2. 前記監視メッセージを受信したときに自ノードが休止状態である場合、自ノードの識別子と休止状態となった原因に関する情報とを前記監視メッセージに付加し、前記監視メッセージの送信元ノードに前記監視メッセージを送信する、
    処理を前記ノードに実行させることを特徴とする請求項1記載の監視プログラム。
  3. 受信した前記監視メッセージに自ノードの識別子と前記休止状態となった原因に関する情報とが含まれている場合、前記情報を表示し、
    受信した前記監視メッセージに自ノードの識別子が含まれ、前記休止状態となった原因に関する情報が含まれていない場合、デッドロックが発生したことを示すメッセージを表示する、
    処理を前記ノードに実行させることを特徴とする請求項2記載の監視プログラム。
  4. 前記第1ノードからの所定メッセージを待つ状態が発生した場合、前記所定メッセージの種類を記録し、
    前記第1ノードからの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、記録した前記所定メッセージの種類と自ノードの識別子とを含む監視メッセージを前記第1ノードに送信し、
    受信した前記監視メッセージに自ノードの識別子が含まれている場合、受信した前記監視メッセージに含まれる前記所定メッセージの種類と各識別子とを表示する
    処理を前記ノードに実行させることを特徴とする請求項1乃至3のうちのいずれか1項に記載の監視プログラム。
  5. 複数のノードによる並列処理を行うシステムにおける前記ノードが、
    第1ノードからの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、自ノードの識別子を含む監視メッセージを前記第1ノードに送信し、
    第2ノードからの所定メッセージを待つ状態であるときに前記監視メッセージを受信した場合、受信した前記監視メッセージに自ノードの識別子を付加し、前記自ノードの識別子が付加された前記監視メッセージを前記第2ノードに送信し、
    受信した前記監視メッセージに自ノードの識別子が含まれている場合、受信した前記監視メッセージに含まれる各識別子を表示する
    処理を実行することを特徴とする監視方法。
  6. 複数の並列処理装置による並列処理を行うシステムにおける前記並列処理装置であって、
    第1ノードからの所定メッセージを待つ状態であるときにタイムアウトが発生した場合、自ノードの識別子を含む監視メッセージを前記第1ノードに送信する第1送信部と、
    第2ノードからの所定メッセージを待つ状態であるときに前記監視メッセージを受信した場合、受信した前記監視メッセージに自ノードの識別子を付加する記録部と、
    前記自ノードの識別子が付加された前記監視メッセージを前記第2ノードに送信する第2送信部と、
    受信した前記監視メッセージに自ノードの識別子が含まれている場合、受信した前記監視メッセージに含まれる各識別子を表示する出力部と
    を備えることを特徴とする並列処理装置。
JP2018114883A 2018-06-15 2018-06-15 監視プログラム、監視方法、および並列処理装置 Active JP7063139B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018114883A JP7063139B2 (ja) 2018-06-15 2018-06-15 監視プログラム、監視方法、および並列処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018114883A JP7063139B2 (ja) 2018-06-15 2018-06-15 監視プログラム、監視方法、および並列処理装置

Publications (2)

Publication Number Publication Date
JP2019219755A true JP2019219755A (ja) 2019-12-26
JP7063139B2 JP7063139B2 (ja) 2022-05-09

Family

ID=69096488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018114883A Active JP7063139B2 (ja) 2018-06-15 2018-06-15 監視プログラム、監視方法、および並列処理装置

Country Status (1)

Country Link
JP (1) JP7063139B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174427A (zh) * 2022-06-01 2022-10-11 中国电子科技集团公司第十研究所 一种航天地面设备报文监视系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0314161A (ja) * 1989-06-13 1991-01-22 Toshiba Corp プロセッサ監視処理方式
JPH0816430A (ja) * 1994-06-27 1996-01-19 Mitsubishi Electric Corp 並列プログラムトレース装置
JP2002312199A (ja) * 2001-04-13 2002-10-25 Mitsubishi Electric Corp 異常検知電子機器及び異常検知方法及び異常検知電子機器システム及び異常検知プログラム及び異常検知プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002351855A (ja) * 2001-05-28 2002-12-06 Mitsubishi Electric Corp 計算機異常処理システムおよび、計算機異常処理方法および、計算機で動作する計算機異常処理プログラムおよび、コンピュータにより読み取り可能な記録媒体に記録された計算機異常処置プログラム
JP2016038705A (ja) * 2014-08-07 2016-03-22 富士通株式会社 システム及び異常検知方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0314161A (ja) * 1989-06-13 1991-01-22 Toshiba Corp プロセッサ監視処理方式
JPH0816430A (ja) * 1994-06-27 1996-01-19 Mitsubishi Electric Corp 並列プログラムトレース装置
JP2002312199A (ja) * 2001-04-13 2002-10-25 Mitsubishi Electric Corp 異常検知電子機器及び異常検知方法及び異常検知電子機器システム及び異常検知プログラム及び異常検知プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002351855A (ja) * 2001-05-28 2002-12-06 Mitsubishi Electric Corp 計算機異常処理システムおよび、計算機異常処理方法および、計算機で動作する計算機異常処理プログラムおよび、コンピュータにより読み取り可能な記録媒体に記録された計算機異常処置プログラム
JP2016038705A (ja) * 2014-08-07 2016-03-22 富士通株式会社 システム及び異常検知方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174427A (zh) * 2022-06-01 2022-10-11 中国电子科技集团公司第十研究所 一种航天地面设备报文监视系统及方法

Also Published As

Publication number Publication date
JP7063139B2 (ja) 2022-05-09

Similar Documents

Publication Publication Date Title
US10169211B2 (en) Application programming interface testing services
US10599551B2 (en) Automatically detecting distributed concurrency errors in cloud systems
US8549540B1 (en) Message queue transaction tracking using application activity trace data
US20180329860A1 (en) Remote direct memory access (rdma) high performance producer-consumer message processing
US20070101179A1 (en) Method for fault handling in a co-operative workflow environment
US7941703B2 (en) Capturing machine state of unstable java program
JP5998764B2 (ja) 情報処理装置、ログ出力方法およびログ出力プログラム
US20170126580A1 (en) Tracking Contention in a Distributed Business Transaction
CN112685247B (zh) 基于Zabbix监控系统的告警抑制方法及监控系统
JP7063139B2 (ja) 監視プログラム、監視方法、および並列処理装置
US20110035730A1 (en) Tracking Database Deadlock
CN112445860B (zh) 一种处理分布式事务的方法和装置
WO2018088490A1 (ja) 情報蓄積装置、情報蓄積方法およびプログラム
US20180287914A1 (en) System and method for management of services in a cloud environment
US9348721B2 (en) Diagnosing entities associated with software components
JP2010511955A (ja) ウェブサービス基盤の規則処理のためのデバイス及びその方法
US20100306777A1 (en) Workflow message and activity correlation
WO2022179470A1 (zh) 定时器处理方法、装置、电子设备和计算机可读存储介质
US10419306B2 (en) Determining the causation of events across multiple nodes using message properties
JP6497278B2 (ja) ログ管理プログラム、ログ管理方法およびログ管理装置
CN118041804B (zh) 通信设备联网数据检测方法、装置、电子设备与可读介质
US11956071B2 (en) Systems and methods for synchronous and asynchronous messaging
US11693739B2 (en) Hang detection and remediation in a multi-threaded application process
WO2023162272A1 (ja) テスト支援装置、システム、及び、方法、並びに、コンピュータ可読媒体
JP2009277119A (ja) ログ記録システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220224

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: 20220322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220404

R150 Certificate of patent or registration of utility model

Ref document number: 7063139

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150