(57)【要約】【課題】  分散オブジェクトシステムにおいて、オブジェクト間を介して複数のオブジェクトの処理を経由した後に１つの処理が完結するような処理フローについての性能モニタリング方法を提供する。【解決手段】  コレクタ１３１，１３２は、各々計算機１０１，１０２上の計測対象となるオブジェクトについて他オブジェクトからのメッセージの受信時刻及び他オブジェクトへのメッセージの送信時刻を性能データとして収集し、マネージャ１３０へ送信する。マネージャ１３０は、受信した性能データを集約して処理フローを構成する各オブジェクトの処理時間及びオブジェクト間の通信時間を算出し、表示する。【選択図】図１
2005302057.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラム実体が複数の計算機上に分散して配置され、該プログラム実体が他のプログラム実体と通信を行いながら処理を実行する分散処理システムの性能モニタリング方法において、
各計算機上に配置されるモニタリング手段によって計測対象となるプログラム実体について他プログラム実体からのメッセージの受信時刻及び他プログラム実体へのメッセージの送信時刻の少なくとも一方を性能データとして収集し、
各モニタリング手段によって収集された該性能データを集約して処理フローを構成する各プログラム実体の処理時間及びプログラム実体間の通信時間を算出し、表示装置上に表示することを特徴とする分散処理システムの性能モニタリング方法。
【請求項２】
前記プログラム実体はオブジェクトであることを特徴とする請求項１記載の分散処理システムの性能モニタリング方法。
【請求項３】
一連の処理の流れである処理フローについて、該処理フローの処理を開始するプログラム実体の最初のメッセージ受信時刻の代わりに処理開始時刻を収集し、該処理フローの処理を終了するプログラム実体の最後のメッセージ送信時刻の代わりに処理終了時刻を収集することを特徴とする請求項１記載の分散処理システムの性能モニタリング方法。
【請求項４】
一連の処理の流れである処理フローを構成する各プログラム実体の処理時間およびプログラム実体間の通信時間をその処理の順番に従って時系列に配列した後に前記表示装置上に表示することを特徴とする請求項１記載の分散処理システムの性能モニタリング方法。
【請求項５】
複数のプログラム実体が複数の計算機上に分散して配置され、該プログラム実体が他のプログラム実体と通信を行いながら処理を実行する分散処理システムにおいて、
各計算機上に配置され、計測対象となるプログラム実体について他プログラム実体からのメッセージの受信時刻及び他プログラム実体へのメッセージの送信時刻の少なくとも一方を性能データとして収集するコレクタ手段と、
各コレクタ手段によって収集された該性能データを集約して各プログラム実体についてメッセージ送信時刻とメッセージ受信時刻との差である処理時間と、同一メッセージについて第１のプログラム実体のメッセージ送信時刻と第２のプログラム実体のメッセージ受信時刻との差である通信時間とを算出して表示するマネージャ手段とを有することを特徴とする分散処理システム。
【請求項６】
前記プログラム実体はオブジェクトであることを特徴とする請求項５記載の分散処理システム。
【請求項７】
前記コレクタ手段は、一連の処理の流れである処理フローについて、該処理フローの処理を開始するプログラム実体の最初のメッセージ受信時刻の代わりに処理開始時刻を収集し、該処理フローの処理を終了するプログラム実体の最後のメッセージ送信時刻の代わりに処理終了時刻を収集することを特徴とする請求項５記載の分散処理システム。
【請求項８】
前記マネージャ手段は、処理フローを構成する各プログラム実体の処理時間及びプログラム実体間の通信時間を表示装置上に表示することを特徴とする請求項５記載の分散処理システム。
【請求項９】
複数のプログラム実体が複数の計算機上に分散して配置され、該プログラム実体が他のプログラム実体と通信を行いながら処理を実行する分散処理システムを構成する計算機であって、該計算機の各々は複数のプログラム実体と性能モニタリング手段とを有し、
該プログラム実体は、他のプログラム実体からのメッセージの受信時刻及び他のプログラム実体へのメッセージの送信時刻の少なくとも一方を性能データとして該性能モニタリング手段に通知する手段を有し、
該モニタリング手段は、その属する計算機内の計測対象となるプログラム実体から該性能データを収集して外部に送信する手段を有することを特徴とする計算機。
【請求項１０】
計算機読み取り可能なプログラムを格納する記憶媒体であって、該プログラムは複数の計算機の各々に分散して配置される第１のプログラム手段と、別の計算機上に配置される第２のプログラム手段とを有し、
第１のプログラム手段は、第２のプログラム手段から通知される計測対象について他計測対象からのメッセージの受信時刻及び他計測対象へのメッセージの送信時刻の少なくとも一方を性能データとして収集して第２のプログラム手段へ送信する機能を有し、
第２のプログラム手段は、計測対象を第１のプログラム手段に通知した後、第１のプログラム手段の各々によって収集された該性能データを集約して各計測対象についてメッセージ送信時刻とメッセージ受信時刻との差である処理時間と、同一メッセージについて第１の計測対象のメッセージ送信時刻と第２の計測対象のメッセージ受信時刻との差である通信時間とを算出して表示する機能を有することを特徴とするプログラムを格納する記憶媒体。
【請求項１１】
複数のオブジェクトが複数の計算機上に分散して配置され、該オブジェクトが他のオブジェクトと通信を行いながら処理を実行する分散オブジェクトシステムの性能モニタリング方法において、
第１のオブジェクトが第２のオブジェクトからメッセージを受信したとき、メッセージを受信した時刻とメッセージに付加されているテーブルをモニタリング手段に送信し、
該モニタリング手段によって第１のオブジェクトのＩＤとメッセージ受信時刻を格納するリストを作成し、
第１のオブジェクトが第３のオブジェクトにメッセージを送信するとき、送信が発生した時刻をモニタリング手段に送信し、
該モニタリング手段によって該リストに送信が発生した時刻を格納し、該リストを受け取った該テーブルに付加して第１のオブジェクトへ送信し、
第１のオブジェクトによって、送信すべきメッセージに該テーブルを付加して第３のオブジェクトへ送信することを特徴とする分散オブジェクトシステムの性能モニタリング方法。
【請求項１２】
複数のオブジェクトが複数の計算機上に分散して配置され、該オブジェクトが他のオブジェクトと通信を行いながら処理を実行する分散オブジェクトシステムにおいて、
他のオブジェクトからメッセージを受信したとき、メッセージを受信した時刻とメッセージに付加されているテーブルをコレクタ手段に送信し、他オブジェクトにメッセージを送信するとき、送信が発生した時刻を該コレクタ手段に送信し、送信すべきメッセージにコレクタ手段から受け取った更新後の該テーブルを付加して他オブジェクトへ送信するオブジェクト手段と、
メッセージ受信時刻を受信したとき該オブジェクト手段のＩＤとメッセージ受信時刻を格納するリストを作成し、メッセージ送信発生時刻を受信したとき該リストに送信発生時刻を格納し、該リストを該オブジェクト手段から受け取ったテーブルに付加して該オブジェクト手段へ送信するコレクタ手段とを有することを特徴とする分散オブジェクトシステム。
【請求項１３】
前記分散オブジェクトシステムは、さらに各計算機に配置される前記コレクタ手段から前記テーブルを受け取り、表示装置上に表示するマネージャ手段を有することを特徴とする請求項１２記載の分散オブジェクトシステム。
【請求項１４】
複数のオブジェクトが複数の計算機上に分散して配置され、該オブジェクトが他のオブジェクトと通信を行いながら処理を実行する分散オブジェクトシステムの性能モニタリング方法において、
（ａ）処理フローを構成する各オブジェクトの処理時間を計測し、
（ｂ）（ａ）で計測した処理時間があらかじめ定められた当該オブジェクトの処理時間の閾値を越えているとき、当該オブジェクトが配置される計算機で実行されるオブジェクト群について各オブジェクトが他のオブジェクトにリクエストを発行してから結果を得るまでの待ち時間を計測することを特徴とする分散オブジェクトシステムの性能モニタリング方法。
【請求項１５】
（ｂ）で計測した待ち時間があらかじめ定められた当該オブジェクトの待ち時間の閾値を越えているとき、当該オブジェクトの処理を先頭とする処理フローについて（ａ）を実行することを特徴とする請求項１４の分散オブジェクトシステムの性能モニタリング方法。
【請求項１６】
複数のオブジェクトが複数の計算機上に分散して配置され、該オブジェクトが他のオブジェクトと通信を行いながら処理を実行する分散オブジェクトシステムの性能モニタリング方法において、
（ａ）特定の計算機で実行されるオブジェクト群について各オブジェクトが他のオブジェクトにリクエストを発行してから結果を得るまでの待ち時間を計測し、（ｂ）（ａ）で計測した待ち時間があらかじめ定められた当該オブジェクトの待
ち時間の閾値を越えているとき、当該オブジェクトの処理を先頭とする処理フローについて該処理フローを構成する各オブジェクトの処理時間を計測することを特徴とする分散オブジェクトシステムの性能モニタリング方法。
【請求項１７】
複数のオブジェクトが複数の計算機上に分散して配置され、該オブジェクトが他のオブジェクトと通信を行いながら処理を実行する分散オブジェクトシステムの性能モニタリング方法において、
各計算機上に分散して配置されるモニタリング手段によって計測対象となる第１のオブジェクトのＩＤ及び第１のオブジェクトがメッセージを受信した第２のオブジェクトのＩＤをリストとして収集し、
各モニタリング手段によって収集されたリストを集約して呼び出し元のオブジェクトと呼び出し先のオブジェクトの関連を図式化して表示することを特徴とする分散オブジェクトシステムの性能モニタリング方法。
【請求項１８】
さらに呼び出し元オブジェクトと呼び出し先オブジェクトの組が同一であるリストの呼び出し発生回数を計数することを特徴とする請求項１７記載の分散オブジェクトシステムの性能モニタリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機上に複数のオブジェクが分散して配置される分散処理システムに係わり、特にその性能モニタリング方法に関する。
【背景技術】
【０００２】
一つの計算機上で複数のプロセスが協調して一つの処理を行う場合に関連する複数のプロセスの稼動状況を測定する装置として、例えば特開平７−２９５８６４号公報に示されているような計算機システムの稼動状況をプロセスごとに時系列データとして測定する装置がある。
これを製品化した例として、『日経バイト特別増刊号』１９９８．１１−８、Ｎｏ．１８４ ｐｐ１９２−１９３にあるように一台の計算機で実行されるアプリケーションの性能上のボトルネックをモジュールレベル、関数レベル、ソースレベルで解析するプロファイラであるラショナルソフトウェア（Ｒａｔｉｏｎａｌ Ｓｏｆｔｗａｒｅ）社のビジュアル・クオンティファイ（Ｖｉｓｕａｌ Ｑｕａｎｔｉｆｙ）などが知られている。
【０００３】
一方、複数の計算機からなる分散処理システムにおいて複数のプロセスが相互に協調して一つの処理を行うような場合、遠隔手続き呼び出しを意識しないで性能測定を行う方法として、例えば特開平５−２７４１８５号公報に示されるように、遠隔手続き呼び出し発行検出手段、遠隔手続き呼び出し終了検出手段、中央性能測定制御手段を持つことによってプロセスの対応づけを行う仕組みを実現した例がある。この方法は遠隔手続きをすべて中央性能測定制御装置に通知することによって、呼び出した側と呼び出された側の対応づけを行うものである。
【０００４】
【特許文献１】日本特開平７−２９５８６４号公報
【特許文献２】日本特開平５−２７４１８５号公報
【非特許文献１】日経バイト特別増刊号１９９８．１１−８、Ｎｏ．１８４ ｐｐ１９２−１９３
【発明の開示】
【発明が解決しようとする課題】
【０００５】
今後、複数計算機に亘る処理の分散化が進み、複数の計算機を有し、これら複数の計算機上に分散して配置され実行されるプログラムであるオブジェクトと、これらオブジェクト間の通信機能を有する分散オブジェクトシステムが広く普及することが予想されている。
【０００６】
特開平７−２９５８６４号公報に開示されている技術を用いることによって、一台の計算機内の性能のボトルネック検出は可能である。しかしこれを分散オブジェクトシステムの各計算機に適用しただけでは、それぞれの計算機において採取した性能データの対応づけがないため、分散オブジェクトシステムの性能のボトルネックを検出することは困難である。
【０００７】
また特開平５−２７４１８５号公報に開示されている技術を用いることにより、分散オブジェクトシステムにおいて個々のオブジェクト間通信についてその送信オブジェクトと受信オブジェクトを対応づけることは可能である。しかしオブジェクト間通信を介して複数のオブジェクトの処理を経由した後に一つの処理が完結するような場合、関連するオブジェクト間通信を対応づける手段がないため、この一連の処理の流れを追跡することは困難である。
【０００８】
このように従来技術では各計算機、各オブジェクトのようにポイントの性能データは収集できるが、分散オブジェクトシステム全体を対象とした性能モニタリングはできないという問題点がある。
【０００９】
本発明は、上記のような事情に鑑み為されたもので、その目的とするところは、分散処理システム全体を対象とした性能モニタリングを行う方法及びそのような分散処理システムを提供することにある。
【００１０】
また性能のボトルネックを絞り込める分散処理システムの性能モニタリング方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、各計算機上に配置されるモニタリング手段によつて計測対象となるプログラム実体について他プログラム実体からのメッセージの受信時刻及び他プログラム実体へのメッセージの送信時刻の少なくとも一方を性能データとして収集し、各モニタリング手段によって収集された性能データを集約して処理フローを構成する各プログラム実体の処理時間及びプログラム実体間の通信時間を算出し、表示装置上に表示する分散処理システムの性能モニタリング方法を特徴とする。
【００１２】
また本発明は、（ａ）処理フローを構成する各オブジェクトの処理時間を計測し、（ｂ）（ａ）で計測した処理時間があらかじめ定められた当該オブジェクトの処理時間の閾値を越えているとき、当該オブジェクトが配置される計算機で実行されるオブジェクト群について各オブジェクトが他のオブジェクトにリクエストを発行してから結果を得るまでの待ち時間を計測し、（ｃ）（ｂ）で計測した待ち時間があらかじめ定められた当該オブジェクトの待ち時間の閾値を越えているとき、当該オブジェクトの処理を先頭とする処理フローについて（ａ）を実行する分散オブジェクトシステムの性能モニタリング方法を特徴とする。
【発明の効果】
【００１３】
本発明によれば、オブジェクト間通信を介して複数のオブジェクトの処理を経由した後に１つの処理が完結するような処理フローについて各オブジェクトの処理時間及びオブジェクト間の通信時間を取得できるので、分散処理システム全体を対象とした性能モニタリングを行うことができる。また処理フローを対象とする性能モニタリングと特定の計算機を対象とする性能モニタリングとを動的に切り替えることができるので、性能のボトルネックの解析を容易にするという効果がある。
【発明を実施するための最良の形態】
【００１４】
以下に本発明の実施形態について図面を用いて詳細に説明する。
【実施例１】
【００１５】
（１）第１の実施形態
図１は、本実施形態の性能モニタリング方法を実現する計算機システムの構成図である。本計算機システムは、採取した性能に関するデータの処理と表示を行うプログラムであるマネージャ１３０を実行する計算機１０３と、性能モニタリングを行う対象であるオブジェクトを搭載する計算機１０１，１０２および計算機間を接続するＬＡＮ１４０から成る。本例ではモニタリングの対象となる計算機は２台であるが、その台数に制約はない。また各計算機はＬＡＮ１４０によって相互通信が可能であるが、通信を実現する手段もＬＡＮに限定されるわけではない。コレクタ１３１，１３２は、マネージャ１３０から指示を受け、必要に応じて性能データの採取、採取データのマネージャへの転送を行うプログラムである。１２１から１２６までは実際にモニタリングの対象となるプログラム実体であるオブジェクトである。マネージャはそれぞれのオブジェクトに対してオブジェクトＩＤと呼ばれる一意のＩＤを用いることによってこれを区別する。オブジェクトＩＤとして、例えば分散オブジェクト技術の標準の一つであるＣＯＲＢＡで用いられているオブジェクトリファレンスを用いる。ＣＯＲＢＡ技術に関しては、「"Ｔｈｅ Ｃｏｍｍｏｎ Ｏｂｊｅｃｔ Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ:Ａ
ｒｃｈｉｔｅｃｔｕｒｅ ａｎｄ Ｓｐｅｃｉｆｉｃａｔｉｏｎ” ＯＭＧ Ｄｏｃｕｍｅｎｔ Ｒｅｖｉｓｉｏｎ ２．２， Ｆｅｂｒｕａｒｙ １９９８」に詳しい。
【００１６】
なお各計算機１０１，１０２，１０３には図示しないが表示装置及び入力装置が接続される。特に計算機１０３の表示装置は、オブジェクトＩＤの一覧、オブジェクトからオブジェクトへ亘る一連の処理について各オブジェクトの処理時間及びオブジェクト間の通信時間等を表示する。また計算機１０３の入力装置は、モニタリングの対象とするオブジェクトを指定するなどのデータ入力や指令入力のために使用される。
【００１７】
また図１ではマネージャ１３０は計算機１０１，１０２とは独立した計算機１０３上に配置されているが、マネージャ１３０を例えば計算機１０１のようにコレクタ１３１と同一の計算機１０１に配置しても本発明を実施できる。マネージャ１３０を独立した計算機１０３上に配置すると、マネージャ１３０が性能モニタリングに与える性能上の影響を除去することができる。
【００１８】
またマネージャ１３０及びコレクタ１３１，１３２をプログラムとして格納する記憶媒体を作成することが可能である。この記憶媒体上のプログラムを計算機１０１，１０２，１０３に接続される駆動装置から読み込むか、または他の計算機からネットワークを経由して計算機１０１，１０２，１０３へ伝送し、各々の計算機に配置されるプログラム部分であるコレクタ１３１，１３２又はマネージャ１３０をその計算機のメモリにロードしてその計算機によって実行することができる。
【００１９】
図２は、第１の実施形態のシステム全体の処理の概略手順を示す図である。この処理手順はマネージャ１３０の担当部分であるブロック２０１とコレクタ１３１，１３２の担当部分であるブロック２０２の２つのブロックから成る。
【００２０】
まずマネージャ１３０が実行するブロック２０１について説明する。マネージャ１３０は最初にステップ２１０においてオブジェクトの一覧を表示し、性能データを採取するオブジェクトの選択入力を受け付ける。次にステップ２２０において、ステップ２１０で入力された性能データを採取するオブジェクトのオブジェクトＩＤを全てのコレクタ１３１，１３２にブロードキャストによつて通知する。マネージャ１３０はステップ２３０において、コレクタ１３１，１３２から転送されてくる性能データの到着を待つ。性能データを受信すると、ステップ２４０で各コレクタから送信される断片的な性能データの対応づけを行う。ここで対応づけとは、同一処理シーケンスに属する性能データをグループにまとめ、かつ時系列に従って配列することである。対応づけられた性能データをステップ２５０において表示する。表示後、ステップ２５５において終了条件の判定を行う
。本実施形態では任意の動作時間をあらかじめ設定しておき、ステップ２５５では設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ２３０に戻る。このようにステップ２３０、２４０および２５０の処理は、マネージャ１３０が最初にコレクタ１３１，１３２から性能データを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
【００２１】
続いてコレクタ１３１，１３２が実行するブロック２０２について説明する。コレクタ１３１，１３２はステップ２７０において、マネージャ１３０によってブロードキャストされた少なくとも１つのオブジェクトＩＤからなるデータを受信する。コレクタ１３１，１３２は、そのコレクタが実行されている計算機１０１，１０２内に受信したオブジェクトＩＤと同じオブジェクトＩＤを持つオブジェクトがあれば、そのオブジェクトの監視を開始する。以下このオブジェクトを計測対象オブジェクトと呼ぶ。コレクタ１３１，１３２はステップ２８０で計測対象オブジェクトに処理が発生すると、性能に係わるデータを採取し、採取したデータをステップ２９０においてマネージャに送信する。性能データ送信後、ステップ２９５において終了条件の判定を行う。本実施形態ではステップ２５５の動作時間と同じ動作時間をあらかじめ設定しておき、ステップ２９５で設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ２８０に戻る。このようにステップ２８０および２９０の処理は、コレクタ１３１，１３２がマネージャ１３０からオブジェクトＩＤのデータを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
【００２２】
図３は、計算機１０３の表示装置上に表示される計測対象オブジェクト選択画面３０１の例を示す図である。オブジェクト一覧ウィンドウ３０２上には性能データを取得する対象候補としてオブジェクトのＩＤが複数個表示され、その中から計測対象とする１個又は１個以上のオブジェクトを選択可能である。同時に複数のオブジェクトが選択される場合には、選択される複数のオブジェクトは通常オブジェクト間通信によつて関連づけられるオブジェクトのグループである。計測開始ボタン３０３は、計測対象オブジェクトの選択後にマネージャ１３０に計測開始を指示するためボタンである。計測開始ボタン３０３が押下されると、ステップ２２０で、マネージャ１３０は各コレクタ１３１，１３２に対し選択されたオブジェクトＩＤのブロードキャストを行う。
【００２３】
この例は、オブジェクト一覧ウィンドウ３０２にはコレクタ１３１および１３２が計測対象とするオブジェクトのオブジェクトＩＤ、２０００１，２０００２，２０００３，２０００４，２０００５および２０００６が表示され、このうち２０００１，２０００４および２０００５が選択されていることを示している。
【００２４】
図４は、コレクタ１３１，１３２が各々計算機１０１，１０２のメモリ上に作成する採取データリスト５０１のデータ構成を示す図である。採取データリスト５０１は、オブジェクトＩＤ５０２、受信側オブジェクトＩＤ５０３、受信側メッセージＩＤ５０４、受信時刻５０５、送信側オブジェクトＩＤ５０６、送信側メッセージＩＤ５０７および送信時刻５０８の各フィールドから成る。採取データリスト５０１は、計測対象オブジェクトが他のオブジェクトからメッセージを受信するか、他のオブジェクトにメッセージを送信するか、またはメッセージ受信に続いてメッセージ送信をするごとに１つ生成される。オブジェクトＩＤ５０２は計測対象オブジェクトのＩＤである。受信側オブジェクトＩＤ５０３は計測対象オブジェクトがメッセージ受信したときの相手オブジェクトのＩＤである。受信側メッセージＩＤ５０４は、その受信メッセージに付加されているメッセージＩＤを格納する。受信時刻５０５はメッセージ受信時刻を格納する。送信側オブジェクトＩＤ５０６は、計測対象オブジェクトがメッセージ送信したときの相手オブジェクトのＩＤである。送信側メッセージＩＤ５０７は、その送信メッセージに付加されるメッセージＩＤである。送信時刻５０８はメッセージ送信時刻を格納する。なお利用者からのデータ入力等のイベントが発生して処理を開始するオブジェクトＩＤ５０２については、受信側オブジェクトＩＤ５０３および受信側メッセージＩＤ５０４の格納はなく、受信時刻５０５に処理開始時刻が格納される。また他のオブジェクトへのメッセージ送信の代わりにその計測対象オブジェクトをもって処理を終了するオブジェクトＩＤ５０２については、送信側オブジェクトＩＤ５０６および送信側メッセージＩＤ５０７の格納はなく、送信時刻５０８に処理終了時刻が格納される。ここでメッセージＩＤとして、例えば分散オブジェクト技術の標準の一つであるＣＯＲＢＡにおいて内部的に用いられているメッセージＩＤを使用することができる。
【００２５】
計測対象オブジェクトは、データ入力等のイベントが発生し、処理開始する時点でその計算機に設けられるコレクタへその計測対象オブジェクトのＩＤ及び処理開始時刻を通知する。また計測対象オブジェクトは、他のオブジェクトにメッセージを送信する時点でそのコレクタへその計測対象オブジェクトのＩＤ、相手オブジェクトのＩＤ、送信するメッセージＩＤ及びメッセージ送信時刻を通知する。また他のオブジェクトからメッセージを受信した時点でそのコレクタへ計測対象オブジェクトのＩＤ、相手オブジェクトのＩＤ、受信したメッセージＩＤ、メッセージ受信時刻、および引き続きメッセージ送信が発生するか否かを示すフラグを通知する。また一連の処理を終了する時点で計測対象オブジェクトのＩＤ及び処理終了時刻をコレクタに通知する。コレクタは、マネージャ１３０から計測対象オブジェクトの通知を受けた後、計測対象オブジェクトに指令を送付してオブジェクトの時刻などの通知を開始させる。
【００２６】
図５は、性能データを採取するコレクタ１３１，１３２の処理の流れを示すフローチャートである。コレクタ１３１，１３２は、計測対象オブジェクトから通知を受けると、メモリ上に採取データリスト５０１の領域を確保し（ステップ４２０）、確保した採取データリスト５０１領域のオブジェクトＩＤ５０２に通知を受けた計測対象オブジェクトのオブジェクトＩＤを格納し、他の各フィールドを−１によって初期化する（ステップ４３０）。次に発生した通信の種類をチェックする（ステップ４４０）。計測対象オブジェクトから処理開始通知とメッセージ送信通知を受けたときには（ステップ４４０送信）、採取データリスト５０１の受信時刻５０５に処理開始時刻を格納し、メッセージ送信通知の情報に基づいて採取データリスト５０１の送信側オブジェクトＩＤ５０６、送信側メッセージＩＤ５０７及び送信時刻５０８を格納し（ステップ４４５）、採取データリスト５０１が完成する。
【００２７】
計測対象オブジェクトからメッセージ受信通知を受けたときには（ステップ４４０受信）、メッセージ受信通知の情報に基づいて採取データリスト５０１の受信側オブジェクトＩＤ５０３、受信側メッセージＩＤ５０４及び受信時刻５０５を格納する（ステップ４５０）。次に計測対象オブジェクトから受け取ったフラグによって引き続き送信が発生するか否かを判定する（ステップ４５５）。引き続き送信が発生する場合には（ステップ４５５Ｙｅｓ）、同一計測対象オブジェクトからのメッセージ送信通知を待ち、メッセージ送信通知を受け取ったとき採取データリスト５０１の送信側オブジェクトＩＤ５０６、送信側メッセージＩＤ５０７及び送信時刻５０８を格納し（ステップ４６０）、採取データリスト５０１が完成する。引き続き送信が発生しない場合には（ステップ４５５Ｎｏ）、同一計測対象オブジェクトからの処理終了通知を待ち、処理終了通知を受け取ったとき採取データリスト５０１の送信時刻５０８に処理終了時刻を格納し（ステップ４６５）、採取データリスト５０１が完成する。
【００２８】
なお同一のオブジェクトについて処理開始時刻からメッセージ送信時刻までの処理時間又はメッセージ受信時刻から処理終了時刻までの処理時間を性能モニタリング上無視できる場合には、処理開始時刻又は処理終了時刻の採取を省略してもよい。処理終了時刻を無視する場合には、ステップ４６５の処理はない。
【００２９】
図６は、マネージャ１３０が計算機１０３のメモリ上に作成するリクエストフローテーブル７０１のデータ構成を示す図である。リクエストフローテーブル７０１は、通信によつて関連づけられる計測対象オブジェクトのグループについてマネージャ１３０に到着した採取データリスト５０１を処理が行われた順に従って時系列に配列されるようにソートしたものである。リクエストフローテーブル７０１の各行は採取データリスト５０１そのものであり、オブジェクトＩＤ７０２、受信側オブジェクトＩＤ７０３、受信側メッセージＩＤ７０４、受信時刻７０５、送信側オブジェクトＩＤ７０６、送信側メッセージＩＤ７０７及び送信時刻７０８の各フィールドの内容は、各々オブジェクトＩＤ５０２、受信側オブジェクトＩＤ５０３、受信側メッセージＩＤ５０４、受信時刻５０５、送信側オブジェクトＩＤ５０６、送信側メッセージＩＤ５０７及び送信時刻５０８と同じである。リクエストフローテーブル７０１の各行について送信時刻７０８と受信時刻７０５との差がその計測対象オブジェクトの処理時間（同一計算機内の待ち時間を含む処理の経過時間）である。またある行の送信側オブジェクトＩＤ７０６に格納されるオブジェクトＩＤが次の行のオブジェクトＩＤ７０２であり、次の行の受信側オブジェクトＩＤ７０３に格納されるオブジェクトＩＤがある行のオブジェクトＩＤ７０２であり、送信側のメッセージＩＤと受信側のメッセージＩＤが一致する場合、同一トランザクションについての処理の流れの中で両方の計測対象オブジェクト間に通信が行われたことを示し、ある行の送信時刻７０８と次の行の受信時刻７０５との差が両オブジェクト間の通信時間である。リクエストフローテーブル７０１は一連の処理の流れごとに各々作成される。
【００３０】
図７は、計算機１０３の表示装置上に表示される計測結果表示画面８１０の例を示す図である。計測結果表示画面８１０は、リクエストフローテーブル７０１を図式化した処理フロー８２０を表示する。処理フロー８２０は処理が行われたオブジェクトのオブジェクトＩＤ８０１を処理が行われた順に従って時系列に配列し、オブジェクトＩＤ８０１の前後を線分８０４によって結んだものである。処理フロー８２０は、オブジェクトＩＤ８０１、その処理時間を示す８０２、オブジェクト間の通信時間を示す８０３の組、および各オブジェクトを結び付ける線分８０４から構成される。各オブジェクトＩＤ８０１はリクエストフローテーブル７０１の各オブジェクトＩＤ７０２に相当する。
【００３１】
図８は、リクエストフローテーブル７０１を作成し表示するマネージャ１３０の処理の流れを示すフローチャートである。マネージャ１３０はコレクタ１３１，１３２から採取データリスト５０１が到着するのを待つ（ステップ６１０）。
採取データリスト５０１が到着すると（ステップ６１０Ｙｅｓ）、その受信側オブジェクトＩＤ５０３をチェックし、このＩＤが選択された計測対象オブジェクトのＩＤのいずれかと一致しているか否かを判定する（ステップ６２０）。一致していない場合（ステップ６２０Ｎｏ）、計算機１０３のメモリ上に新規にリクエストフローテーブル７０１の領域を確保し、到着した採取データリスト５０１をその先頭の要素とする（ステップ６３５）。なおこの完成していないリクエストフローテーブル７０１を以降、作成中リクエストフローテーブルと呼ぶ。作成中リクエストフローテーブルは、図８に示された処理が行われている間、複数作成され得る。
【００３２】
一致している場合（ステップ６２０Ｙｅｓ）、作成中リクエストフローテーブルを探索し、その中にテーブルの最後尾を構成する採取データリストの送信側メッセージＩＤと、今取得した採取データリストの受信メッセージＩＤが一致しているテーブルがあるかどうかをチェックする（ステップ６４５）。チェックの結果、一致するものがあれば（ステップ６４５Ｙｅｓ）、当該作成中リクエストフ
ローテーブルの最後尾に今取得した採取データリストを付加する（ステップ６４７）。また一致するものがなければ（ステップ６４５Ｎｏ）、採取データリストをメモリ上の一時保存領域である採取データリストバッファに保存し（ステップ６４９）、ステップ６１０に戻って新たな採取データリストの到着を待つ。
【００３３】
ステップ６３５、ステップ６４７に続くステップ６５０において、作成中リクエストフローテーブルの最後尾に付加された採取データリストの送信側オブジェクトＩＤ７０６をチェックする（ステップ６５０）。これが選択された計測対象オブジェクトのＩＤでなければ（ステップ６５０Ｎｏ）、このリクエストフローテーブルはこれで完結するので、このリクエストフローテーブルの表示を行う（
ステップ６５２）。表示後、あらかじめ設定された時間を超えていないかをチェックする（ステップ６５４）。超えていなければ（ステップ６５４Ｙｅｓ）、ステップ６１０に戻って新たな採取データリストの到着を待つ。超えていれば（ステップ６５４Ｎｏ）、マネージャ１３０の処理を終了する。
【００３４】
ステップ６５０のチェックの結果、送信側オブジェクトが選択された計測対象オブジェクトのＩＤであった場合には（ステップ６５０Ｙｅｓ）、送信側メッセージＩＤ７０７と同じ受信側メッセージＩＤを持つ採取データリストを採取データリストバッファから探索する（ステップ６５５）。採取データリストが見つかれば（ステップ６５５有）、この採取データリストをステップ６３５又は６４７で対象とした作成中リクエストフローテーブルの最後尾に付加し、その後ステップ６５０に戻る。採取データリストがなければ（ステップ６５５無し）、ステップ６１０に戻り新たな採取データリストの到着を待つ。
【００３５】
図８に示すマネージャ１３０の処理手順によれば、複数のトランザクションに属する採取データリスト５０１が混在してマネージャ１３０に到着したり、各オブジェクトの処理のシーケンスと採取データリスト５０１到着のシーケンスとが異なっても、各トランザクションごとにリクエストフローテーブル７０１が作成され、リクエストフローテーブル７０１を構成する採取データリストは処理のシーケンスに従って時系列に配列される。リクエストフローテーブルに格納すべき時点より早く到着した採取データリストはステップ６４９で採取データリストバッファに保存され、格納すべき時点になったときステップ６６５で同テーブルに格納される。
【００３６】
第１の実施形態ではあらかじめ一定の動作時間を定めておき、この時間だけマネージャ１３０とコレクタ１３１，１３２の性能データ収集処理を繰り返し行うが、マネージャ１３０にユーザからの終了指示を受け付ける機能を付与することにより任意の時間、処理を行うことが可能になる。この処理を行うために必要な図２に示したフローチャートについての変更点は以下の通りである。マネージャ１３０の変更点は、終了判定ステップ２５５を「ユーザからの終了指示があるか？」とすることと、終了指示があれば終了前にコレクタに終了指示を送信することの２点である。コレクタ１３１，１３２の変更点は、ステップ２９５を「マネージャからの終了指示があるか？」とすることである。
【００３７】
以上説明した第１の実施形態によれば、選択された計測対象オブジェクトに係わる処理時間を採取することが可能である。さらに選択された複数の計測対象オブジェクトに亘って処理が行われる場合、これらの処理を一つの処理フロー８２０として表示し、各オブジェクトについての処理時間とオブジェクト間の通信時間を表示することが可能である。
【実施例２】
【００３８】
（２）第２の実施形態
第１の実施形態では、処理フローを取得したい場合に、ユーザはその処理フローに関与するすべてのオブジェクトを計測対象として指定しなければならないという面倒がある。第２の実施形態では、ユーザはオブジェクトを１つ指定することによってそのオブジェクトが行う処理から後の一連の処理について処理フローを得ることができる。この機能を実現するためにコレクタ１３１，１３２がリクエストフローテーブルを作成する。すなわちオブジェクト間を移動するメッセージにリクエストフローテーブルを付加し、各オブジェクトで処理が行われるごとにリクエストフローテーブルに採取データリストを追加する。以下に図１で示される分散オブジェクト環境について第２の実施形態の構成及び動作を説明する。
【００３９】
図９は、第２の実施形態のシステム全体の処理の概略手順を示すフロー図である。この処理手順はマネージャ１３０の担当部分であるブロック９０１とコレクタ１３１，１３２の担当部分であるブロック９０２の２つのブロックから成る。
【００４０】
まずマネージャ１３０が実行するブロック９０１について説明する。マネージャ１３０は最初にステップ９１０において処理フローの最初に処理を行うオブジェクトの選択入力を受け付ける。この入力方法は第１の実施形態で説明した方法と同じである。ただし指定するオブジェクトの数は１つに限定される。次にステップ９２０において、ステップ９１０で入力された性能データを採取するオブジェクトのオブジェクトＩＤを全てのコレクタ１３１，１３２にブロードキャストによつて通知する。マネージャ１３０はステップ９３０において、コレクタ１３１，１３２から転送されてくるデータの到着を待つ。性能データを受信すると、ステップ９５０で処理フローの表示を行う。表示後、ステップ９５５において終了条件の判定を行う。本実施形態では任意の動作時間をあらかじめ設定しておき、ステップ９５５では設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ９３０に戻る。このようにステップ９３０および９５０の処理は、マネージャ１３０が最初にコレクタ１３１，１３２より性能データを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
【００４１】
続いてコレクタ１３１，１３２が実行するブロック９０２について説明する。コレクタ１３１，１３２はステップ９７０において、マネージャ１３０によってブロードキャストされたオブジェクトＩＤを受信する。コレクタ１３１，１３２は、そのコレクタが実行されている計算機１０１，１０２内で実行されているオブジェクトの監視を開始する。コレクタ１３１，１３２はステップ９８０でオブジェクトに処理が発生すると、処理開始時刻又はメッセージ受信時刻、メッセージ送信時刻又は処理終了時刻を必要に応じて採取し、採取したデータによって処理フローデータを作成する。次にステップ９９０で作成した処理フローデータをマネージャに送信する。性能データ送信後、ステップ９９５において終了条件の判定を行う。本実施形態ではステップ９９５の動作時間と同じ動作時間をあらかじめ設定しておき、ステップ９９５で設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ９８０に戻る。このようにステップ９８０および９９０の処理は、コレクタ１３１，１３２がマネージャ１３０からオブジェクトＩＤのデータを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
【００４２】
図１０は、第２の実施形態で用いる採取データリスト１１０１のデータ構成を示す図である。採取データリスト１１０１はオブジェクトＩＤ１１１０、受信時刻１１２０及び送信時刻１１３０の各フィールドから構成される。オブジェクトＩＤ１１１０はユーザによって指定されたオブジェクト又は処理フローを構成するいずれかのオブジェクトのＩＤである。受信時刻１１２０はそのオブジェクトについて処理開始時刻又はメッセージ受信時刻である。送信時刻１１３０はそのオブジェクトについてメッセージ送信時刻又は処理終了時刻である。
【００４３】
図１１は、第２の実施形態で用いるリクエストフローテーブル１２０１のデータ構成を示す図である。リクエストフローテーブル１２０１は採取データリスト１１０１を処理が行われた順に従って時系列に配列したテーブルである。リクエストフローテーブル１２０１は各処理フローについて１つ作成される。
【００４４】
各オブジェクトは、データ入力等のイベントが発生し、処理開始する時点でその計算機に設けられるコレクタへそのオブジェクトのＩＤ及び処理開始時刻を通知する。また各オブジェクトは、他のオブジェクトにメッセージ送信する時点でそのコレクタへそのオブジェクトのＩＤ及びメッセージ送信の発生した時刻を通知する。コレクタからリクエストフローテーブル１２０１を受け取り、他のオブジェクトへのメッセージに受け取ったリクエストフローテーブル１２０１を付加して送信する。また他のオブジェクトからメッセージ又はメッセージとリクエストフローテーブル１２０１を受信した時点でそのコレクタへそのオブジェクトのＩＤ、リクエストフローテーブル１２０１を受けていればリクエストフローテーブル１２０１、メッセージ受信時刻、および引き続きメッセージ送信が発生するか否かを示すフラグを通知する。また一連の処理を終了する時点でそのオブジェクトのＩＤ及び処理終了時刻をコレクタに通知する。
【００４５】
コレクタ１３１，１３２は、ステップ９１０の処理、すなわちユーザからオブジェクト選択の入力を受け付ける処理では、第１の実施形態と同様に計測対象オブジェクト選択画面３０１を表示し、オブジェクトＩＤの入力を受ける。ただし第２の実施形態では、オブジェクト一覧ウィンドウ３０２に表示されるオブジェクトＩＤのうちの１つのみが選択可能である。オブジェクトＩＤが選択された後、計測開始ボタン３０３が押下されると、マネージャ１３０は各コレクタ１３１，１３２に対して選択されたオブジェクトＩＤのブロードキャストを行う。
【００４６】
図１２は、性能データを採取し、リクエストフローテーブル１２０１を作成するコレクタ１３１，１３２の処理の流れを示すフローチャートである。まずコレクタ１３１，１３２はあらかじめ設定された時間を超えていないかをチェックする（ステップ１００５）。超えていればコレクタ１３１，１３２の処理を終了する。超えていなければ、その計算機で実行されているすべてのオブジェクトについて通信の発生を待つ（ステップ１０１０）。
【００４７】
いずれかのオブジェクトからメッセージ送信通知又は処理開始通知とメッセージ送信通知を受けたときには（ステップ１０２０ＹＥＳ）、送信を行うオブジェクトが選択された(指定された)オブジェクトか否かチェックする（ステップ１０３０）。指定されたオブジェクトでなければ（ステップ１０３０ＮＯ）、性能データを採取する必要がないため、ステップ１００５に戻る。指定されたオブジェクトであれば、メモリ上にリクエストフローテーブル１２０１用の領域を確保する（ステップ１０３２）。次にメモリ上に採取データリスト１１０１の領域を確保し（ステップ１０３４）、このリストにオブジェクトＩＤ１１１０、受信時刻１１２０及び送信時刻１１３０を格納する（ステップ１０３６）。オブジェクトＩＤ１１１０には当該オブジェクトのオブジェクトＩＤ、受信時刻１１２０には処理開始時刻、送信時刻１１３０には送信の発生した時刻を格納する。次に作成した採取データリスト１１０１をリクエストフローテーブル１２０１の最後端に追加し、当該オブジェクトへ送信する（ステップ１０４０）。
【００４８】
一方オブジェクトからメッセージ受信通知を受けたときには（ステップ１０２０ＮＯ）、その通知にリクエストフローテーブル１２０１が付加されているか否かをチェックする（ステップ１０５０）。リクエストフローテーブル１２０１が付加されていなければ（ステップ１０５０ＮＯ）、そのオブジェクトが指定されたオブジェクトか否かをチェックする（ステップ１０６０）。指定されたオブジェクトでなければ（ステップ１０６０ＮＯ）、性能データを採取する必要がないため、ステップ１００５に戻る。指定されたオブジェクトであれば、メモリ上にリクエストフローテーブル１２０１用の領域を確保し（ステップ１０６２）、ステップ１０７０へ行く。
【００４９】
メッセージ受信通知にリクエストフローテーブル１２０１が付加されていたとき（ステップ１０５０ＹＥＳ）、メモリ上に採取データリスト１１０１の領域を確保し（ステップ１０７０）、このリストにオブジェクトＩＤ１１１０及び受信時刻１１２０を格納する（ステップ１０７２）。オブジェクトＩＤ１１１０には当該オブジェクトのオブジェクトＩＤ、受信時刻１１２０にはメッセージ受信時刻を格納する。
【００５０】
次に当該オブジェクトから受け取ったフラグによって引き続き送信が発生するか否か判定する（ステップ１０８０）。引き続き送信が発生する場合には（ステップ１０８０ＹＥＳ）、同一オブジェクトからのメッセージ送信通知を待ち、メッセージ送信通知を受けたとき作成中の採取データリスト１１０１の送信時刻１１３０に送信の発生した時刻を格納する（ステップ１０８２）。次に作成した採
取データリスト１１０１をすでに当該オブジェクトから受け取っているか又は新規に生成したリクエストフローテーブル１２０１の最後端に追加し、当該オブジェクトへ送信する（ステップ１０８４）。
【００５１】
引き続き送信が発生しない場合には（ステップ１０８０ＮＯ）、同一オブジェクトからの処理終了通知を待ち、処理終了通知を受けたとき作成中の採取データリスト１１０１の送信時刻１１３０に処理終了時刻を格納する（ステップ１０８５）。次に作成した採取データリスト１１０１をすでに当該オブジェクトから受け取っているか又は新規に生成したリクエストフローテーブル１２０１の最後端に追加し（ステップ１０８６）、完成したリクエストフローテーブル１２０１をマネージャ１３０に送信し（ステップ１０８８）、ステップ１００５に戻る。
【００５２】
次にステップ９５０が行う処理フローの表示について説明する。ここでは第１の実施形態と同様に処理フロー８２０を計測結果表示画面８１０に表示する。オブジェクトＩＤ８０１はリクエストフローテーブル１２０１の各行を構成する採取データリスト１１０１のオブジェクトＩＤ１１１０そのものであり、オブジェクト実行の処理時間８０２はリクエストフローテーブル１２０１の各行を構成する採取データリスト１１０１の受信時刻１１２０と送信時刻１１３０の差を取ることによって求め、通信時間８０３はリクエストフローテーブル１２０１を構成する２つの連続した採取データリスト１１０１の送信時刻と受信時刻の差を取ることによって求める。
【００５３】
以上説明した第２の実施形態によれば、ユーザはオブジェクトを１つ指定することによって、そのオブジェクトの処理から後の処理フローを得ることが可能となる。これにより例えばあるクライアントオブジェクトがどのサーバオブジェクトにアクセスするかわからなくても、そのクライアントオブジェクトを指定するだけでそのクライアントからの要求によって始まる一連の処理の処理フローを得ることが可能となる。また第１の実施形態のように特定のオブジェクトによって処理された処理フローを抽出することも可能である。
【実施例３】
【００５４】
（３）第３の実施形態
第１および第２の実施形態では、計測対象オブジェクト又は処理フローの先頭の処理を行うオブジェクトの入力を受け付け、指定されたオブジェクトに係わる処理フロー又は指定されたオブジェクトを処理の先頭とする処理フローを取得した。第３の実施形態では対象計算機の入力を受け付け、対象計算機が入力されると指定された計算機内で実行される全オブジェクトのポイントデータの取得を可能とする。また第２の実施形態の性能データの収集処理とポイントデータの収集処理を状況に応じて自動的に切り替える機能を提供する。
【００５５】
図１３は、計算機１０３の表示装置上に表示されるデータ収集対象の選択画面１４１０の例を示す図である。選択画面１４１０はフローデータ選択ボタン１４２０及びポイントデータ選択ボタン１４３０を表示する。フローデータ選択ボタン１４２０は、収集対象としてフローデータを選択するとき押下されるボタンである。フローデータとは、第１の実施形態で説明したように、一連の処理が複数のオブジェクトに亘って行われるときに処理の流れを構成する各オブジェクトの処理の時間及びオブジェクト間の通信の時間を集めたものである。ポイントデータ選択ボタン１４３０は、収集対象としてポイントデータを選択するとき押下されるボタンである。ポイントデータとは、ある計算機に着目し、その計算機で実行されるすべてのオブジェクトの処理の時間を集めたものである。
【００５６】
図１４は、計算機１０３の表示装置上に表示される計測対象計算機選択画面１５１０の例を示す図である。計測対象計算機選択画面１５１０は、計算機一覧ウィンドウ１５２０および計測開始ボタン１５３０を表示する。計算機一覧ウィンドウ１５２０は、ＬＡＮ１４０上に接続されているすべての計算機の一覧を表示する。計測開始ボタン１５３０は、計算機が指定された後、計測の開始を指示するためのボタンである。
【００５７】
図１５は、計算機１０３のメモリ上に設定される閾値テーブル１６１０のデータ構成を示す図である。「オブジェクトＩＤ」は各オブジェクトのＩＤ、「処理時間」はそのオブジェクト内の処理に要する時間の上限である。「処理時間」はその処理を実行する計算機で発生する待ち時間も含む処理経過時間である。「待ち時間」はそのオブジェクトが他の計算機のオブジェクトに処理を依頼してから結果を受け取るまでの待ち時間である。
【００５８】
図１６は、計算機１０３の表示装置上に表示されるポイントデータの収集結果表示画面の例を示す図である。画面上には指定された計測対象計算機の識別子と、その計算機で実行されたオブジェクトのＩＤ及び処理時間を表示する。アイドルはすぐ上のオブジェクトが他の計算機のオブジェクトに処理を依頼したために生じた待ち時間である。
【００５９】
図１７は、第３の実施形態に関するマネージャ１３０の処理の流れを示すフローチャートである。フローチャートは大きく３つのブロック、すなわちデータの収集・表示対象の初期設定を行うブロック１３０１、フローデータの収集・表示を行うブロック１３０２、およびポイントデータの収集・表示を行うブロック１３０３から構成される。
【００６０】
マネージャ１３０はまず選択画面１４１０を表示し、入力情報からデータ収集の対象がフローデータかポイントデータかを判定する（ステップ１３０５）。フローデータが選択された場合には、計測対象オブジェクト選択画面３０１を表示し、処理フローの最初に位置する対象オブジェクトの指定を受け付ける（ステップ１３０７）。そして計測開始ボタン３０３が押下されると、ステップ１３１０へ進む。一方ポイントデータが選択された場合には、計測対象計算機選択画面１５１０を表示し、計測対象計算機の指定を受け付ける（ステップ１３０９）。そして計算機が指定され、計測開始ボタン１５３０が押下されると、ステップ１３６０へ進む。
【００６１】
フローデータの収集・表示の場合、まず各コレクタに対して指定されたオブジェクトのＩＤを通知してデータの計測を指示する（ステップ１３１０）。次に各コレクタからリクエストフローテーブル１２０１を受け取り（ステップ１３２０）、収集したデータを編集して処理フローを表示する（ステップ１３３０）。以上のステップ１３１０〜１３３０の処理は、第２の実施形態のマネージャ１３０及びコレクタ１３１，１３２の処理と同じである。
【００６２】
さらにメモリ上の閾値テーブル１６１０を参照して計測対象を切り替える必要があるか否かを判定する（ステップ１３４０）。マネージャ１３０は、処理フロ
ーを構成する各オブジェクトについて計測された計算機内処理の待ち時間を含む処理時間と閾値テーブル１６１０上の対応するオブジェクトの処理時間とを比較する。そして処理時間の閾値を上回る計測時間をもつオブジェクトがなければ（ステップ１３４０ＮＯ）、切り替え不要と判断し、ステップ１３１０へ戻り、同一処理フローを構成するオブジェクトについてフローデータの収集・表示処理を継続する。一方、閾値を上回る計測時間をもつオブジェクトが存在する場合には（ステップ１３４０ＹＥＳ）、切り替えが必要と判断して該当するオブジェクトを１つ選択し、そのオブジェクトが実行された計算機を計測対象として設定する（ステップ１３５０）。マネージャ１３０は、そのオブジェクトのＩＤを指定して各コレクタ１３１，１３２に問い合わせ、そのオブジェクトを監視するコレクタが実行された計算機の識別子の回答を得る。そしてステップ１３６０へ進み、ポイントデータの収集・表示処理に切り替える。
【００６３】
ポイントデータの収集・表示の場合、まずマネージャ１３０は指定された計算機に対応するコレクタに対して当該計算機で実行されるすべてのオブジェクトの処理についてデータの計測を指示する（ステップ１３６０）。指示を受けたコレクタは、計測対象とするオブジェクトから処理開始時刻、メッセージ受信時刻、メッセージ送信時刻および処理終了時刻の通知を受け取る。そして対象オブジェクトについて、採取データリスト５０１を作成し、各処理フローごとに時系列に採取データリスト５０１を配列してリクエストフローテーブルを作成する。次にこのリクエストフローテーブルから各対象オブジェクトの処理時間及び待ち時間を算出する。処理時間は処理開始時刻とメッセージ送信時刻との差、メッセージ受信時刻とメッセージ送信時刻との差、またはメッセージ受信時刻と処理終了時刻との差である。待ち時間は他の計算機のオブジェクトへのメッセージの送信時刻と他の計算機の同一オブジェクトからのメッセージの受信時刻との差である。次にコレクタは各対象オブジェクトの処理時間及び待ち時間をマネージャ１３０に送信する。なおコレクタは、データ計測の指示を受けてからあらかじめ決められた時間が経過するまでの間のデータを計測し、これらのデータをまとめてマネージャ１３０に送信する。マネージャ１３０はコレクタから計測データを受け取り（ステップ１３７０）、収集したポイントデータを表示する（ステップ１３８０）。
【００６４】
次にメモリ上の閾値テーブル１６１０を参照して計測対象を切り替える必要があるか否かを判定する（ステップ１３９０）。マネージャ１３０は、計測対象オブジェクトの各々について計測された待ち時間と閾値テーブル１６１０上の対応するオブジェクトの待ち時間とを比較する。待ち時間の閾値を上回る待ち時間をもつオブジェクトがなければ（ステップ１３９０ＮＯ）、切り替え不要と判断し
、ステップ１３６０へ戻り指定された計測対象計算機についてポイントデータの収集・表示処理を継続する。一方、閾値を上回る待ち時間をもつオブジェクトが存在する場合には（ステップ１３９０ＹＥＳ）、該当するオブジェクトを１つ選択し、そのオブジェクトを計測対象としてステップ１３１０へ進み、フローデータの収集・表示処理に切り替える。
【００６５】
第３の実施形態によれば、フローデータの収集中に処理時間の上限設定値を越える処理時間を計測したオブジェクトを検出したとき、そのオブジェクトが実行される計算機で実行される他のオブジェクトの処理時間を収集することによって過大な処理時間の原因を追及できる。またポイントデータの収集中に待ち時間の上限設定値を越える待ち時間を計測したオブジェクトを検出したとき、そのオブジェクトの処理を先頭とする処理フローについてフローデータを収集することによって過大な待ち時間の原因を追及できる。このようにフローデータ収集からポイントデータ収集、ポイントデータ収集からフローデータ収集に切り替えながら性能データを収集することによって、性能のボトルネックがどの処理フローのどのオブジェクトに存在するか、あるいはどの計算機で実行されるどのオブジェクトに存在するかを検出することが可能になる。この際のフローデータ収集とポイントデータ収集との間の切り替えを自動的に行うことができる。
【実施例４】
【００６６】
（４）第４の実施形態
複数の計算機上で多数のオブジェクトが動作する場合に、どのオブジェクトがどのオブジェクトと関連をもって動作するかとか、どの処理フローにトランザクションが集中するかなどを把握することが困難なことがある。第４の実施形態は、オブジェクト間の呼び出しの関係及び呼び出し回数を取得することによってこのような問題を解決し、もって性能モニタリングを支援するものである。
【００６７】
以下に図１に示される分散オブジェクト環境において図２の概略処理手順を用いて第４の実施形態の特徴を説明する。マネージャ１３０は最初にステップ２１０においてオブジェクトの一覧を表示し、オブジェクト相関データを採取するオブジェクトの選択入力を受け付ける。オブジェクト一覧上のすべてのオブジェクトを選択することも可能である。次にステップ２２０において入力されたオブジェクト相関データを採取するオブジェクトのオブジェクトＩＤをすべてのコレクタ１３１，１３２にブロードキャストによって通知する。マネージャ１３０はステップ２３０においてコレクタ１３１，１３２から転送されてくる採取データリスト５０１の到着を待つ。採取データリスト５０１を受信すると、ステップ２４０で採取データリスト５０１から後述する呼び出しテーブル２００１を作成し、ステップ２５０でこの呼び出しテーブル２００１から後述するオブジェクト相関図１８０２を作成して表示する。表示後、ステップ２５５において指定時間が経過したか否かの終了条件の判定を行い、指定時間が経過していなければステップ２３０に戻って上記処理を繰り返す。
【００６８】
一方コレクタ１３１，１３２が実行するブロック２０２の処理は第１の実施形態で説明したものと全く同じである。
【００６９】
図１８は、呼び出しテーブル２００１のデータ構成を示す図である。呼び出し元２０１０はリクエストを発行したオブジェクトのＩＤ、呼び出し先２０２０はそのリクエストを受け取ったオブジェクトのＩＤ、呼び出し回数２０３０はリクエストを発行した回数、すなわち呼び出し先２０２０のオブジェクトを呼び出した回数である。
【００７０】
図１９は、オブジェクト相関図表示画面１８０１の例を示す図である。オブジェクト相関図表示画面１８０１は、オブジェクト相関図１８０２をに表示する。１８１０はオブジェクトＩＤ表示部であり、１８２０は関連のあるオブジェクトを結合する線分、１８３０は線分１８２０の右側に位置するオブジェクトを呼び出した回数である。図１９のオブジェクト相関図１８０２は、図１８に例示する呼び出しテーブル２００１を図式化したものである。
【００７１】
図２０は、上記ステップ２４０及びステップ２５０の処理の流れを示すフローチャートである。コレクタから採取データリスト５０１が到着すると、まず呼び出しテーブル２００１の中に呼び出し元２０１０が受け取った採取データリスト５０１の受信側オブジェクトＩＤ５０３と一致しており、かつ呼び出し先２０２０がその採取データリスト５０１のオブジェクトＩＤ５０２と一致している行があるかどうかをチェックする（ステップ１９１０）。この場合にはオブジェクト
ＩＤ５０２で示されるオブジェクトが計測対象として指定されたオブジェクトである。一致するものがあれば（ステップ１９１０ＹＥＳ）、一致した呼び出しテーブルの行の呼び出し回数２０３０に１を加える（ステップ１９２０）。一致するものがなければ（ステップ１９１０ＮＯ）、呼び出しテーブル２００１に呼び出し元２０１０をその採取データリスト５０１の受信側オブジェクトＩＤ５０３、呼び出し先２０２０を採取データリストのオブジェクトＩＤ５０２、呼び出し回数２０３０を１とする行を加える（ステップ１９２５）。
【００７２】
上記ステップ１９２０、もしくは１９２５の処理によって、呼び出しテーブル２００１が更新された後、最新の呼び出しテーブル２００１に基づいてオブジェクト関連図表示画面１８０１上のオブジェクト相関図１８０２の表示の更新を行う（ステップ１９３０）。
【００７３】
なお呼び出し元２０１０をその採取データリスト５０１のオブジェクトＩＤ５０２、呼び出し先２０２０を採取データリスト５０１の送信側オブジェクトＩＤ５０６と一致するものとみなしてもよい。この場合にもオブジェクトＩＤ５０２で示されるオブジェクトが計測対象として指定されたオブジェクトである。
【００７４】
以上説明した第４の実施形態によれば、指定されたオブジェクトについて採取データリスト５０１を採取し、オブジェクトから別のオブジェクトに亘って一連の処理が行われる場合、それらオブジェクト間の呼び出し元／呼び出し先の関連を明示するとともに、オブジェクト間のリクエストの発生回数を示すオブジェクト関連図１８０２を表示することが可能である。
【図面の簡単な説明】
【００７５】
【図１】実施形態の計算機システムの構成図である。
【図２】第１の実施形態の処理の概略手順を示す図である。
【図３】第１の実施形態の計測対象オブジェクト選択画面３０１の例を示す図である。
【図４】第１の実施形態の採取データリスト５０１のデータ構成を示す図である。
【図５】第１の実施形態のコレクタ１３１，１３２の処理の流れを示すフローチャートである。
【図６】第１の実施形態のリクエストフローテーブル７０１のデータ構成を示す図である。
【図７】第１の実施形態の計測結果表示画面８１０の例を示す図である。
【図８】第１の実施形態のマネージャ１３０の処理手順を示すフローチャートである。
【図９】第２の実施形態の処理の概略手順を示す図である。
【図１０】第２の実施形態の採取データリスト１１０１のデータ構成を示す図である。
【図１１】第２の実施形態のリクエストフローテーブル１２０１のデータ構成を示す図である。
【図１２】第２の実施形態のコレクタ１３１，１３２の処理の流れを示すフローチャートである。
【図１３】第３の実施形態の選択画面１４１０の例を示す図である。
【図１４】第３の実施形態の計測対象計算機選択画面１５１０の例を示す図である。
【図１５】第３の実施形態の閾値テーブル１６１０のデータ構成を示す図である。
【図１６】第３の実施形態のポイントデータ収集結果表示画面の例を示す図である。
【図１７】第３の実施形態のマネージャ１３０の処理手順を示すフローチャートである。
【図１８】第４の実施形態の呼び出しテーブル２００１のデータ構成を示す図である。
【図１９】第４の実施形態のオブジェクト相関図表示画面１８０１の例を示す図である。
【図２０】第４の実施形態の主要部分の処理の流れを示すフローチャートである。
【符号の説明】
【００７６】
１０１〜１０３…計算機、１２１〜１２６…オブジェクト、１３１〜１３２…コレクタ、１３０…マネージャ、１４０…ＬＡＮ、５０１…採取データリスト、７０１…リクエストフローテーブル
【図１】
2005302057.tif 000003
【図２】
2005302057.tif 000004
【図３】
2005302057.tif 000005
【図４】
2005302057.tif 000006
【図５】
2005302057.tif 000007
【図６】
2005302057.tif 000008
【図７】
2005302057.tif 000009
【図８】
2005302057.tif 000010
【図９】
2005302057.tif 000011
【図１０】
2005302057.tif 000012
【図１１】
2005302057.tif 000013
【図１２】
2005302057.tif 000014
【図１３】
2005302057.tif 000015
【図１４】
2005302057.tif 000016
【図１５】
2005302057.tif 000017
【図１６】
2005302057.tif 000018
【図１７】
2005302057.tif 000019
【図１８】
2005302057.tif 000020
【図１９】
2005302057.tif 000021
【図２０】
2005302057.tif 000022