本発明は、複数の計算機上に複数のオブジェクが分散して配置される分散処理システムに係わり、特にその性能モニタリング方法に関する。
一つの計算機上で複数のプロセスが協調して一つの処理を行う場合に関連する複数のプロセスの稼動状況を測定する装置として、例えば特開平7−295864号公報に示されているような計算機システムの稼動状況をプロセスごとに時系列データとして測定する装置がある。
これを製品化した例として、『日経バイト特別増刊号』1998.11−8、No.184 pp192−193にあるように一台の計算機で実行されるアプリケーションの性能上のボトルネックをモジュールレベル、関数レベル、ソースレベルで解析するプロファイラであるラショナルソフトウェア(Rational Software)社のビジュアル・クオンティファイ(Visual Quantify)などが知られている。
一方、複数の計算機からなる分散処理システムにおいて複数のプロセスが相互に協調して一つの処理を行うような場合、遠隔手続き呼び出しを意識しないで性能測定を行う方法として、例えば特開平5−274185号公報に示されるように、遠隔手続き呼び出し発行検出手段、遠隔手続き呼び出し終了検出手段、中央性能測定制御手段を持つことによってプロセスの対応づけを行う仕組みを実現した例がある。この方法は遠隔手続きをすべて中央性能測定制御装置に通知することによって、呼び出した側と呼び出された側の対応づけを行うものである。
日本特開平7−295864号公報
日本特開平5−274185号公報
日経バイト特別増刊号1998.11−8、No.184 pp192−193
今後、複数計算機に亘る処理の分散化が進み、複数の計算機を有し、これら複数の計算機上に分散して配置され実行されるプログラムであるオブジェクトと、これらオブジェクト間の通信機能を有する分散オブジェクトシステムが広く普及することが予想されている。
特開平7−295864号公報に開示されている技術を用いることによって、一台の計算機内の性能のボトルネック検出は可能である。しかしこれを分散オブジェクトシステムの各計算機に適用しただけでは、それぞれの計算機において採取した性能データの対応づけがないため、分散オブジェクトシステムの性能のボトルネックを検出することは困難である。
また特開平5−274185号公報に開示されている技術を用いることにより、分散オブジェクトシステムにおいて個々のオブジェクト間通信についてその送信オブジェクトと受信オブジェクトを対応づけることは可能である。しかしオブジェクト間通信を介して複数のオブジェクトの処理を経由した後に一つの処理が完結するような場合、関連するオブジェクト間通信を対応づける手段がないため、この一連の処理の流れを追跡することは困難である。
このように従来技術では各計算機、各オブジェクトのようにポイントの性能データは収集できるが、分散オブジェクトシステム全体を対象とした性能モニタリングはできないという問題点がある。
本発明は、上記のような事情に鑑み為されたもので、その目的とするところは、分散処理システム全体を対象とした性能モニタリングを行う方法及びそのような分散処理システムを提供することにある。
また性能のボトルネックを絞り込める分散処理システムの性能モニタリング方法を提供することを目的とする。
本発明は、各計算機上に配置されるモニタリング手段によつて計測対象となるプログラム実体について他プログラム実体からのメッセージの受信時刻及び他プログラム実体へのメッセージの送信時刻の少なくとも一方を性能データとして収集し、各モニタリング手段によって収集された性能データを集約して処理フローを構成する各プログラム実体の処理時間及びプログラム実体間の通信時間を算出し、表示装置上に表示する分散処理システムの性能モニタリング方法を特徴とする。
また本発明は、(a)処理フローを構成する各オブジェクトの処理時間を計測し、(b)(a)で計測した処理時間があらかじめ定められた当該オブジェクトの処理時間の閾値を越えているとき、当該オブジェクトが配置される計算機で実行されるオブジェクト群について各オブジェクトが他のオブジェクトにリクエストを発行してから結果を得るまでの待ち時間を計測し、(c)(b)で計測した待ち時間があらかじめ定められた当該オブジェクトの待ち時間の閾値を越えているとき、当該オブジェクトの処理を先頭とする処理フローについて(a)を実行する分散オブジェクトシステムの性能モニタリング方法を特徴とする。
本発明によれば、オブジェクト間通信を介して複数のオブジェクトの処理を経由した後に1つの処理が完結するような処理フローについて各オブジェクトの処理時間及びオブジェクト間の通信時間を取得できるので、分散処理システム全体を対象とした性能モニタリングを行うことができる。また処理フローを対象とする性能モニタリングと特定の計算機を対象とする性能モニタリングとを動的に切り替えることができるので、性能のボトルネックの解析を容易にするという効果がある。
以下に本発明の実施形態について図面を用いて詳細に説明する。
(1)第1の実施形態
図1は、本実施形態の性能モニタリング方法を実現する計算機システムの構成図である。本計算機システムは、採取した性能に関するデータの処理と表示を行うプログラムであるマネージャ130を実行する計算機103と、性能モニタリングを行う対象であるオブジェクトを搭載する計算機101,102および計算機間を接続するLAN140から成る。本例ではモニタリングの対象となる計算機は2台であるが、その台数に制約はない。また各計算機はLAN140によって相互通信が可能であるが、通信を実現する手段もLANに限定されるわけではない。コレクタ131,132は、マネージャ130から指示を受け、必要に応じて性能データの採取、採取データのマネージャへの転送を行うプログラムである。121から126までは実際にモニタリングの対象となるプログラム実体であるオブジェクトである。マネージャはそれぞれのオブジェクトに対してオブジェクトIDと呼ばれる一意のIDを用いることによってこれを区別する。オブジェクトIDとして、例えば分散オブジェクト技術の標準の一つであるCORBAで用いられているオブジェクトリファレンスを用いる。CORBA技術に関しては、「"The Common Object Request Broker:A
rchitecture and Specification” OMG Document Revision 2.2, February 1998」に詳しい。
なお各計算機101,102,103には図示しないが表示装置及び入力装置が接続される。特に計算機103の表示装置は、オブジェクトIDの一覧、オブジェクトからオブジェクトへ亘る一連の処理について各オブジェクトの処理時間及びオブジェクト間の通信時間等を表示する。また計算機103の入力装置は、モニタリングの対象とするオブジェクトを指定するなどのデータ入力や指令入力のために使用される。
また図1ではマネージャ130は計算機101,102とは独立した計算機103上に配置されているが、マネージャ130を例えば計算機101のようにコレクタ131と同一の計算機101に配置しても本発明を実施できる。マネージャ130を独立した計算機103上に配置すると、マネージャ130が性能モニタリングに与える性能上の影響を除去することができる。
またマネージャ130及びコレクタ131,132をプログラムとして格納する記憶媒体を作成することが可能である。この記憶媒体上のプログラムを計算機101,102,103に接続される駆動装置から読み込むか、または他の計算機からネットワークを経由して計算機101,102,103へ伝送し、各々の計算機に配置されるプログラム部分であるコレクタ131,132又はマネージャ130をその計算機のメモリにロードしてその計算機によって実行することができる。
図2は、第1の実施形態のシステム全体の処理の概略手順を示す図である。この処理手順はマネージャ130の担当部分であるブロック201とコレクタ131,132の担当部分であるブロック202の2つのブロックから成る。
まずマネージャ130が実行するブロック201について説明する。マネージャ130は最初にステップ210においてオブジェクトの一覧を表示し、性能データを採取するオブジェクトの選択入力を受け付ける。次にステップ220において、ステップ210で入力された性能データを採取するオブジェクトのオブジェクトIDを全てのコレクタ131,132にブロードキャストによつて通知する。マネージャ130はステップ230において、コレクタ131,132から転送されてくる性能データの到着を待つ。性能データを受信すると、ステップ240で各コレクタから送信される断片的な性能データの対応づけを行う。ここで対応づけとは、同一処理シーケンスに属する性能データをグループにまとめ、かつ時系列に従って配列することである。対応づけられた性能データをステップ250において表示する。表示後、ステップ255において終了条件の判定を行う
。本実施形態では任意の動作時間をあらかじめ設定しておき、ステップ255では設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ230に戻る。このようにステップ230、240および250の処理は、マネージャ130が最初にコレクタ131,132から性能データを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
続いてコレクタ131,132が実行するブロック202について説明する。コレクタ131,132はステップ270において、マネージャ130によってブロードキャストされた少なくとも1つのオブジェクトIDからなるデータを受信する。コレクタ131,132は、そのコレクタが実行されている計算機101,102内に受信したオブジェクトIDと同じオブジェクトIDを持つオブジェクトがあれば、そのオブジェクトの監視を開始する。以下このオブジェクトを計測対象オブジェクトと呼ぶ。コレクタ131,132はステップ280で計測対象オブジェクトに処理が発生すると、性能に係わるデータを採取し、採取したデータをステップ290においてマネージャに送信する。性能データ送信後、ステップ295において終了条件の判定を行う。本実施形態ではステップ255の動作時間と同じ動作時間をあらかじめ設定しておき、ステップ295で設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ280に戻る。このようにステップ280および290の処理は、コレクタ131,132がマネージャ130からオブジェクトIDのデータを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
図3は、計算機103の表示装置上に表示される計測対象オブジェクト選択画面301の例を示す図である。オブジェクト一覧ウィンドウ302上には性能データを取得する対象候補としてオブジェクトのIDが複数個表示され、その中から計測対象とする1個又は1個以上のオブジェクトを選択可能である。同時に複数のオブジェクトが選択される場合には、選択される複数のオブジェクトは通常オブジェクト間通信によつて関連づけられるオブジェクトのグループである。計測開始ボタン303は、計測対象オブジェクトの選択後にマネージャ130に計測開始を指示するためボタンである。計測開始ボタン303が押下されると、ステップ220で、マネージャ130は各コレクタ131,132に対し選択されたオブジェクトIDのブロードキャストを行う。
この例は、オブジェクト一覧ウィンドウ302にはコレクタ131および132が計測対象とするオブジェクトのオブジェクトID、20001,20002,20003,20004,20005および20006が表示され、このうち20001,20004および20005が選択されていることを示している。
図4は、コレクタ131,132が各々計算機101,102のメモリ上に作成する採取データリスト501のデータ構成を示す図である。採取データリスト501は、オブジェクトID502、受信側オブジェクトID503、受信側メッセージID504、受信時刻505、送信側オブジェクトID506、送信側メッセージID507および送信時刻508の各フィールドから成る。採取データリスト501は、計測対象オブジェクトが他のオブジェクトからメッセージを受信するか、他のオブジェクトにメッセージを送信するか、またはメッセージ受信に続いてメッセージ送信をするごとに1つ生成される。オブジェクトID502は計測対象オブジェクトのIDである。受信側オブジェクトID503は計測対象オブジェクトがメッセージ受信したときの相手オブジェクトのIDである。受信側メッセージID504は、その受信メッセージに付加されているメッセージIDを格納する。受信時刻505はメッセージ受信時刻を格納する。送信側オブジェクトID506は、計測対象オブジェクトがメッセージ送信したときの相手オブジェクトのIDである。送信側メッセージID507は、その送信メッセージに付加されるメッセージIDである。送信時刻508はメッセージ送信時刻を格納する。なお利用者からのデータ入力等のイベントが発生して処理を開始するオブジェクトID502については、受信側オブジェクトID503および受信側メッセージID504の格納はなく、受信時刻505に処理開始時刻が格納される。また他のオブジェクトへのメッセージ送信の代わりにその計測対象オブジェクトをもって処理を終了するオブジェクトID502については、送信側オブジェクトID506および送信側メッセージID507の格納はなく、送信時刻508に処理終了時刻が格納される。ここでメッセージIDとして、例えば分散オブジェクト技術の標準の一つであるCORBAにおいて内部的に用いられているメッセージIDを使用することができる。
計測対象オブジェクトは、データ入力等のイベントが発生し、処理開始する時点でその計算機に設けられるコレクタへその計測対象オブジェクトのID及び処理開始時刻を通知する。また計測対象オブジェクトは、他のオブジェクトにメッセージを送信する時点でそのコレクタへその計測対象オブジェクトのID、相手オブジェクトのID、送信するメッセージID及びメッセージ送信時刻を通知する。また他のオブジェクトからメッセージを受信した時点でそのコレクタへ計測対象オブジェクトのID、相手オブジェクトのID、受信したメッセージID、メッセージ受信時刻、および引き続きメッセージ送信が発生するか否かを示すフラグを通知する。また一連の処理を終了する時点で計測対象オブジェクトのID及び処理終了時刻をコレクタに通知する。コレクタは、マネージャ130から計測対象オブジェクトの通知を受けた後、計測対象オブジェクトに指令を送付してオブジェクトの時刻などの通知を開始させる。
図5は、性能データを採取するコレクタ131,132の処理の流れを示すフローチャートである。コレクタ131,132は、計測対象オブジェクトから通知を受けると、メモリ上に採取データリスト501の領域を確保し(ステップ420)、確保した採取データリスト501領域のオブジェクトID502に通知を受けた計測対象オブジェクトのオブジェクトIDを格納し、他の各フィールドを−1によって初期化する(ステップ430)。次に発生した通信の種類をチェックする(ステップ440)。計測対象オブジェクトから処理開始通知とメッセージ送信通知を受けたときには(ステップ440送信)、採取データリスト501の受信時刻505に処理開始時刻を格納し、メッセージ送信通知の情報に基づいて採取データリスト501の送信側オブジェクトID506、送信側メッセージID507及び送信時刻508を格納し(ステップ445)、採取データリスト501が完成する。
計測対象オブジェクトからメッセージ受信通知を受けたときには(ステップ440受信)、メッセージ受信通知の情報に基づいて採取データリスト501の受信側オブジェクトID503、受信側メッセージID504及び受信時刻505を格納する(ステップ450)。次に計測対象オブジェクトから受け取ったフラグによって引き続き送信が発生するか否かを判定する(ステップ455)。引き続き送信が発生する場合には(ステップ455Yes)、同一計測対象オブジェクトからのメッセージ送信通知を待ち、メッセージ送信通知を受け取ったとき採取データリスト501の送信側オブジェクトID506、送信側メッセージID507及び送信時刻508を格納し(ステップ460)、採取データリスト501が完成する。引き続き送信が発生しない場合には(ステップ455No)、同一計測対象オブジェクトからの処理終了通知を待ち、処理終了通知を受け取ったとき採取データリスト501の送信時刻508に処理終了時刻を格納し(ステップ465)、採取データリスト501が完成する。
なお同一のオブジェクトについて処理開始時刻からメッセージ送信時刻までの処理時間又はメッセージ受信時刻から処理終了時刻までの処理時間を性能モニタリング上無視できる場合には、処理開始時刻又は処理終了時刻の採取を省略してもよい。処理終了時刻を無視する場合には、ステップ465の処理はない。
図6は、マネージャ130が計算機103のメモリ上に作成するリクエストフローテーブル701のデータ構成を示す図である。リクエストフローテーブル701は、通信によつて関連づけられる計測対象オブジェクトのグループについてマネージャ130に到着した採取データリスト501を処理が行われた順に従って時系列に配列されるようにソートしたものである。リクエストフローテーブル701の各行は採取データリスト501そのものであり、オブジェクトID702、受信側オブジェクトID703、受信側メッセージID704、受信時刻705、送信側オブジェクトID706、送信側メッセージID707及び送信時刻708の各フィールドの内容は、各々オブジェクトID502、受信側オブジェクトID503、受信側メッセージID504、受信時刻505、送信側オブジェクトID506、送信側メッセージID507及び送信時刻508と同じである。リクエストフローテーブル701の各行について送信時刻708と受信時刻705との差がその計測対象オブジェクトの処理時間(同一計算機内の待ち時間を含む処理の経過時間)である。またある行の送信側オブジェクトID706に格納されるオブジェクトIDが次の行のオブジェクトID702であり、次の行の受信側オブジェクトID703に格納されるオブジェクトIDがある行のオブジェクトID702であり、送信側のメッセージIDと受信側のメッセージIDが一致する場合、同一トランザクションについての処理の流れの中で両方の計測対象オブジェクト間に通信が行われたことを示し、ある行の送信時刻708と次の行の受信時刻705との差が両オブジェクト間の通信時間である。リクエストフローテーブル701は一連の処理の流れごとに各々作成される。
図7は、計算機103の表示装置上に表示される計測結果表示画面810の例を示す図である。計測結果表示画面810は、リクエストフローテーブル701を図式化した処理フロー820を表示する。処理フロー820は処理が行われたオブジェクトのオブジェクトID801を処理が行われた順に従って時系列に配列し、オブジェクトID801の前後を線分804によって結んだものである。処理フロー820は、オブジェクトID801、その処理時間を示す802、オブジェクト間の通信時間を示す803の組、および各オブジェクトを結び付ける線分804から構成される。各オブジェクトID801はリクエストフローテーブル701の各オブジェクトID702に相当する。
図8は、リクエストフローテーブル701を作成し表示するマネージャ130の処理の流れを示すフローチャートである。マネージャ130はコレクタ131,132から採取データリスト501が到着するのを待つ(ステップ610)。
採取データリスト501が到着すると(ステップ610Yes)、その受信側オブジェクトID503をチェックし、このIDが選択された計測対象オブジェクトのIDのいずれかと一致しているか否かを判定する(ステップ620)。一致していない場合(ステップ620No)、計算機103のメモリ上に新規にリクエストフローテーブル701の領域を確保し、到着した採取データリスト501をその先頭の要素とする(ステップ635)。なおこの完成していないリクエストフローテーブル701を以降、作成中リクエストフローテーブルと呼ぶ。作成中リクエストフローテーブルは、図8に示された処理が行われている間、複数作成され得る。
一致している場合(ステップ620Yes)、作成中リクエストフローテーブルを探索し、その中にテーブルの最後尾を構成する採取データリストの送信側メッセージIDと、今取得した採取データリストの受信メッセージIDが一致しているテーブルがあるかどうかをチェックする(ステップ645)。チェックの結果、一致するものがあれば(ステップ645Yes)、当該作成中リクエストフ
ローテーブルの最後尾に今取得した採取データリストを付加する(ステップ647)。また一致するものがなければ(ステップ645No)、採取データリストをメモリ上の一時保存領域である採取データリストバッファに保存し(ステップ649)、ステップ610に戻って新たな採取データリストの到着を待つ。
ステップ635、ステップ647に続くステップ650において、作成中リクエストフローテーブルの最後尾に付加された採取データリストの送信側オブジェクトID706をチェックする(ステップ650)。これが選択された計測対象オブジェクトのIDでなければ(ステップ650No)、このリクエストフローテーブルはこれで完結するので、このリクエストフローテーブルの表示を行う(
ステップ652)。表示後、あらかじめ設定された時間を超えていないかをチェックする(ステップ654)。超えていなければ(ステップ654Yes)、ステップ610に戻って新たな採取データリストの到着を待つ。超えていれば(ステップ654No)、マネージャ130の処理を終了する。
ステップ650のチェックの結果、送信側オブジェクトが選択された計測対象オブジェクトのIDであった場合には(ステップ650Yes)、送信側メッセージID707と同じ受信側メッセージIDを持つ採取データリストを採取データリストバッファから探索する(ステップ655)。採取データリストが見つかれば(ステップ655有)、この採取データリストをステップ635又は647で対象とした作成中リクエストフローテーブルの最後尾に付加し、その後ステップ650に戻る。採取データリストがなければ(ステップ655無し)、ステップ610に戻り新たな採取データリストの到着を待つ。
図8に示すマネージャ130の処理手順によれば、複数のトランザクションに属する採取データリスト501が混在してマネージャ130に到着したり、各オブジェクトの処理のシーケンスと採取データリスト501到着のシーケンスとが異なっても、各トランザクションごとにリクエストフローテーブル701が作成され、リクエストフローテーブル701を構成する採取データリストは処理のシーケンスに従って時系列に配列される。リクエストフローテーブルに格納すべき時点より早く到着した採取データリストはステップ649で採取データリストバッファに保存され、格納すべき時点になったときステップ665で同テーブルに格納される。
第1の実施形態ではあらかじめ一定の動作時間を定めておき、この時間だけマネージャ130とコレクタ131,132の性能データ収集処理を繰り返し行うが、マネージャ130にユーザからの終了指示を受け付ける機能を付与することにより任意の時間、処理を行うことが可能になる。この処理を行うために必要な図2に示したフローチャートについての変更点は以下の通りである。マネージャ130の変更点は、終了判定ステップ255を「ユーザからの終了指示があるか?」とすることと、終了指示があれば終了前にコレクタに終了指示を送信することの2点である。コレクタ131,132の変更点は、ステップ295を「マネージャからの終了指示があるか?」とすることである。
以上説明した第1の実施形態によれば、選択された計測対象オブジェクトに係わる処理時間を採取することが可能である。さらに選択された複数の計測対象オブジェクトに亘って処理が行われる場合、これらの処理を一つの処理フロー820として表示し、各オブジェクトについての処理時間とオブジェクト間の通信時間を表示することが可能である。
(2)第2の実施形態
第1の実施形態では、処理フローを取得したい場合に、ユーザはその処理フローに関与するすべてのオブジェクトを計測対象として指定しなければならないという面倒がある。第2の実施形態では、ユーザはオブジェクトを1つ指定することによってそのオブジェクトが行う処理から後の一連の処理について処理フローを得ることができる。この機能を実現するためにコレクタ131,132がリクエストフローテーブルを作成する。すなわちオブジェクト間を移動するメッセージにリクエストフローテーブルを付加し、各オブジェクトで処理が行われるごとにリクエストフローテーブルに採取データリストを追加する。以下に図1で示される分散オブジェクト環境について第2の実施形態の構成及び動作を説明する。
図9は、第2の実施形態のシステム全体の処理の概略手順を示すフロー図である。この処理手順はマネージャ130の担当部分であるブロック901とコレクタ131,132の担当部分であるブロック902の2つのブロックから成る。
まずマネージャ130が実行するブロック901について説明する。マネージャ130は最初にステップ910において処理フローの最初に処理を行うオブジェクトの選択入力を受け付ける。この入力方法は第1の実施形態で説明した方法と同じである。ただし指定するオブジェクトの数は1つに限定される。次にステップ920において、ステップ910で入力された性能データを採取するオブジェクトのオブジェクトIDを全てのコレクタ131,132にブロードキャストによつて通知する。マネージャ130はステップ930において、コレクタ131,132から転送されてくるデータの到着を待つ。性能データを受信すると、ステップ950で処理フローの表示を行う。表示後、ステップ955において終了条件の判定を行う。本実施形態では任意の動作時間をあらかじめ設定しておき、ステップ955では設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ930に戻る。このようにステップ930および950の処理は、マネージャ130が最初にコレクタ131,132より性能データを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
続いてコレクタ131,132が実行するブロック902について説明する。コレクタ131,132はステップ970において、マネージャ130によってブロードキャストされたオブジェクトIDを受信する。コレクタ131,132は、そのコレクタが実行されている計算機101,102内で実行されているオブジェクトの監視を開始する。コレクタ131,132はステップ980でオブジェクトに処理が発生すると、処理開始時刻又はメッセージ受信時刻、メッセージ送信時刻又は処理終了時刻を必要に応じて採取し、採取したデータによって処理フローデータを作成する。次にステップ990で作成した処理フローデータをマネージャに送信する。性能データ送信後、ステップ995において終了条件の判定を行う。本実施形態ではステップ995の動作時間と同じ動作時間をあらかじめ設定しておき、ステップ995で設定された時間を超えていないかをチェックする。超えていれば処理を終了するが、超えていなければステップ980に戻る。このようにステップ980および990の処理は、コレクタ131,132がマネージャ130からオブジェクトIDのデータを受け取ってからあらかじめ設定された一定時間、繰り返し行われる。
図10は、第2の実施形態で用いる採取データリスト1101のデータ構成を示す図である。採取データリスト1101はオブジェクトID1110、受信時刻1120及び送信時刻1130の各フィールドから構成される。オブジェクトID1110はユーザによって指定されたオブジェクト又は処理フローを構成するいずれかのオブジェクトのIDである。受信時刻1120はそのオブジェクトについて処理開始時刻又はメッセージ受信時刻である。送信時刻1130はそのオブジェクトについてメッセージ送信時刻又は処理終了時刻である。
図11は、第2の実施形態で用いるリクエストフローテーブル1201のデータ構成を示す図である。リクエストフローテーブル1201は採取データリスト1101を処理が行われた順に従って時系列に配列したテーブルである。リクエストフローテーブル1201は各処理フローについて1つ作成される。
各オブジェクトは、データ入力等のイベントが発生し、処理開始する時点でその計算機に設けられるコレクタへそのオブジェクトのID及び処理開始時刻を通知する。また各オブジェクトは、他のオブジェクトにメッセージ送信する時点でそのコレクタへそのオブジェクトのID及びメッセージ送信の発生した時刻を通知する。コレクタからリクエストフローテーブル1201を受け取り、他のオブジェクトへのメッセージに受け取ったリクエストフローテーブル1201を付加して送信する。また他のオブジェクトからメッセージ又はメッセージとリクエストフローテーブル1201を受信した時点でそのコレクタへそのオブジェクトのID、リクエストフローテーブル1201を受けていればリクエストフローテーブル1201、メッセージ受信時刻、および引き続きメッセージ送信が発生するか否かを示すフラグを通知する。また一連の処理を終了する時点でそのオブジェクトのID及び処理終了時刻をコレクタに通知する。
コレクタ131,132は、ステップ910の処理、すなわちユーザからオブジェクト選択の入力を受け付ける処理では、第1の実施形態と同様に計測対象オブジェクト選択画面301を表示し、オブジェクトIDの入力を受ける。ただし第2の実施形態では、オブジェクト一覧ウィンドウ302に表示されるオブジェクトIDのうちの1つのみが選択可能である。オブジェクトIDが選択された後、計測開始ボタン303が押下されると、マネージャ130は各コレクタ131,132に対して選択されたオブジェクトIDのブロードキャストを行う。
図12は、性能データを採取し、リクエストフローテーブル1201を作成するコレクタ131,132の処理の流れを示すフローチャートである。まずコレクタ131,132はあらかじめ設定された時間を超えていないかをチェックする(ステップ1005)。超えていればコレクタ131,132の処理を終了する。超えていなければ、その計算機で実行されているすべてのオブジェクトについて通信の発生を待つ(ステップ1010)。
いずれかのオブジェクトからメッセージ送信通知又は処理開始通知とメッセージ送信通知を受けたときには(ステップ1020YES)、送信を行うオブジェクトが選択された(指定された)オブジェクトか否かチェックする(ステップ1030)。指定されたオブジェクトでなければ(ステップ1030NO)、性能データを採取する必要がないため、ステップ1005に戻る。指定されたオブジェクトであれば、メモリ上にリクエストフローテーブル1201用の領域を確保する(ステップ1032)。次にメモリ上に採取データリスト1101の領域を確保し(ステップ1034)、このリストにオブジェクトID1110、受信時刻1120及び送信時刻1130を格納する(ステップ1036)。オブジェクトID1110には当該オブジェクトのオブジェクトID、受信時刻1120には処理開始時刻、送信時刻1130には送信の発生した時刻を格納する。次に作成した採取データリスト1101をリクエストフローテーブル1201の最後端に追加し、当該オブジェクトへ送信する(ステップ1040)。
一方オブジェクトからメッセージ受信通知を受けたときには(ステップ1020NO)、その通知にリクエストフローテーブル1201が付加されているか否かをチェックする(ステップ1050)。リクエストフローテーブル1201が付加されていなければ(ステップ1050NO)、そのオブジェクトが指定されたオブジェクトか否かをチェックする(ステップ1060)。指定されたオブジェクトでなければ(ステップ1060NO)、性能データを採取する必要がないため、ステップ1005に戻る。指定されたオブジェクトであれば、メモリ上にリクエストフローテーブル1201用の領域を確保し(ステップ1062)、ステップ1070へ行く。
メッセージ受信通知にリクエストフローテーブル1201が付加されていたとき(ステップ1050YES)、メモリ上に採取データリスト1101の領域を確保し(ステップ1070)、このリストにオブジェクトID1110及び受信時刻1120を格納する(ステップ1072)。オブジェクトID1110には当該オブジェクトのオブジェクトID、受信時刻1120にはメッセージ受信時刻を格納する。
次に当該オブジェクトから受け取ったフラグによって引き続き送信が発生するか否か判定する(ステップ1080)。引き続き送信が発生する場合には(ステップ1080YES)、同一オブジェクトからのメッセージ送信通知を待ち、メッセージ送信通知を受けたとき作成中の採取データリスト1101の送信時刻1130に送信の発生した時刻を格納する(ステップ1082)。次に作成した採
取データリスト1101をすでに当該オブジェクトから受け取っているか又は新規に生成したリクエストフローテーブル1201の最後端に追加し、当該オブジェクトへ送信する(ステップ1084)。
引き続き送信が発生しない場合には(ステップ1080NO)、同一オブジェクトからの処理終了通知を待ち、処理終了通知を受けたとき作成中の採取データリスト1101の送信時刻1130に処理終了時刻を格納する(ステップ1085)。次に作成した採取データリスト1101をすでに当該オブジェクトから受け取っているか又は新規に生成したリクエストフローテーブル1201の最後端に追加し(ステップ1086)、完成したリクエストフローテーブル1201をマネージャ130に送信し(ステップ1088)、ステップ1005に戻る。
次にステップ950が行う処理フローの表示について説明する。ここでは第1の実施形態と同様に処理フロー820を計測結果表示画面810に表示する。オブジェクトID801はリクエストフローテーブル1201の各行を構成する採取データリスト1101のオブジェクトID1110そのものであり、オブジェクト実行の処理時間802はリクエストフローテーブル1201の各行を構成する採取データリスト1101の受信時刻1120と送信時刻1130の差を取ることによって求め、通信時間803はリクエストフローテーブル1201を構成する2つの連続した採取データリスト1101の送信時刻と受信時刻の差を取ることによって求める。
以上説明した第2の実施形態によれば、ユーザはオブジェクトを1つ指定することによって、そのオブジェクトの処理から後の処理フローを得ることが可能となる。これにより例えばあるクライアントオブジェクトがどのサーバオブジェクトにアクセスするかわからなくても、そのクライアントオブジェクトを指定するだけでそのクライアントからの要求によって始まる一連の処理の処理フローを得ることが可能となる。また第1の実施形態のように特定のオブジェクトによって処理された処理フローを抽出することも可能である。
(3)第3の実施形態
第1および第2の実施形態では、計測対象オブジェクト又は処理フローの先頭の処理を行うオブジェクトの入力を受け付け、指定されたオブジェクトに係わる処理フロー又は指定されたオブジェクトを処理の先頭とする処理フローを取得した。第3の実施形態では対象計算機の入力を受け付け、対象計算機が入力されると指定された計算機内で実行される全オブジェクトのポイントデータの取得を可能とする。また第2の実施形態の性能データの収集処理とポイントデータの収集処理を状況に応じて自動的に切り替える機能を提供する。
図13は、計算機103の表示装置上に表示されるデータ収集対象の選択画面1410の例を示す図である。選択画面1410はフローデータ選択ボタン1420及びポイントデータ選択ボタン1430を表示する。フローデータ選択ボタン1420は、収集対象としてフローデータを選択するとき押下されるボタンである。フローデータとは、第1の実施形態で説明したように、一連の処理が複数のオブジェクトに亘って行われるときに処理の流れを構成する各オブジェクトの処理の時間及びオブジェクト間の通信の時間を集めたものである。ポイントデータ選択ボタン1430は、収集対象としてポイントデータを選択するとき押下されるボタンである。ポイントデータとは、ある計算機に着目し、その計算機で実行されるすべてのオブジェクトの処理の時間を集めたものである。
図14は、計算機103の表示装置上に表示される計測対象計算機選択画面1510の例を示す図である。計測対象計算機選択画面1510は、計算機一覧ウィンドウ1520および計測開始ボタン1530を表示する。計算機一覧ウィンドウ1520は、LAN140上に接続されているすべての計算機の一覧を表示する。計測開始ボタン1530は、計算機が指定された後、計測の開始を指示するためのボタンである。
図15は、計算機103のメモリ上に設定される閾値テーブル1610のデータ構成を示す図である。「オブジェクトID」は各オブジェクトのID、「処理時間」はそのオブジェクト内の処理に要する時間の上限である。「処理時間」はその処理を実行する計算機で発生する待ち時間も含む処理経過時間である。「待ち時間」はそのオブジェクトが他の計算機のオブジェクトに処理を依頼してから結果を受け取るまでの待ち時間である。
図16は、計算機103の表示装置上に表示されるポイントデータの収集結果表示画面の例を示す図である。画面上には指定された計測対象計算機の識別子と、その計算機で実行されたオブジェクトのID及び処理時間を表示する。アイドルはすぐ上のオブジェクトが他の計算機のオブジェクトに処理を依頼したために生じた待ち時間である。
図17は、第3の実施形態に関するマネージャ130の処理の流れを示すフローチャートである。フローチャートは大きく3つのブロック、すなわちデータの収集・表示対象の初期設定を行うブロック1301、フローデータの収集・表示を行うブロック1302、およびポイントデータの収集・表示を行うブロック1303から構成される。
マネージャ130はまず選択画面1410を表示し、入力情報からデータ収集の対象がフローデータかポイントデータかを判定する(ステップ1305)。フローデータが選択された場合には、計測対象オブジェクト選択画面301を表示し、処理フローの最初に位置する対象オブジェクトの指定を受け付ける(ステップ1307)。そして計測開始ボタン303が押下されると、ステップ1310へ進む。一方ポイントデータが選択された場合には、計測対象計算機選択画面1510を表示し、計測対象計算機の指定を受け付ける(ステップ1309)。そして計算機が指定され、計測開始ボタン1530が押下されると、ステップ1360へ進む。
フローデータの収集・表示の場合、まず各コレクタに対して指定されたオブジェクトのIDを通知してデータの計測を指示する(ステップ1310)。次に各コレクタからリクエストフローテーブル1201を受け取り(ステップ1320)、収集したデータを編集して処理フローを表示する(ステップ1330)。以上のステップ1310〜1330の処理は、第2の実施形態のマネージャ130及びコレクタ131,132の処理と同じである。
さらにメモリ上の閾値テーブル1610を参照して計測対象を切り替える必要があるか否かを判定する(ステップ1340)。マネージャ130は、処理フロ
ーを構成する各オブジェクトについて計測された計算機内処理の待ち時間を含む処理時間と閾値テーブル1610上の対応するオブジェクトの処理時間とを比較する。そして処理時間の閾値を上回る計測時間をもつオブジェクトがなければ(ステップ1340NO)、切り替え不要と判断し、ステップ1310へ戻り、同一処理フローを構成するオブジェクトについてフローデータの収集・表示処理を継続する。一方、閾値を上回る計測時間をもつオブジェクトが存在する場合には(ステップ1340YES)、切り替えが必要と判断して該当するオブジェクトを1つ選択し、そのオブジェクトが実行された計算機を計測対象として設定する(ステップ1350)。マネージャ130は、そのオブジェクトのIDを指定して各コレクタ131,132に問い合わせ、そのオブジェクトを監視するコレクタが実行された計算機の識別子の回答を得る。そしてステップ1360へ進み、ポイントデータの収集・表示処理に切り替える。
ポイントデータの収集・表示の場合、まずマネージャ130は指定された計算機に対応するコレクタに対して当該計算機で実行されるすべてのオブジェクトの処理についてデータの計測を指示する(ステップ1360)。指示を受けたコレクタは、計測対象とするオブジェクトから処理開始時刻、メッセージ受信時刻、メッセージ送信時刻および処理終了時刻の通知を受け取る。そして対象オブジェクトについて、採取データリスト501を作成し、各処理フローごとに時系列に採取データリスト501を配列してリクエストフローテーブルを作成する。次にこのリクエストフローテーブルから各対象オブジェクトの処理時間及び待ち時間を算出する。処理時間は処理開始時刻とメッセージ送信時刻との差、メッセージ受信時刻とメッセージ送信時刻との差、またはメッセージ受信時刻と処理終了時刻との差である。待ち時間は他の計算機のオブジェクトへのメッセージの送信時刻と他の計算機の同一オブジェクトからのメッセージの受信時刻との差である。次にコレクタは各対象オブジェクトの処理時間及び待ち時間をマネージャ130に送信する。なおコレクタは、データ計測の指示を受けてからあらかじめ決められた時間が経過するまでの間のデータを計測し、これらのデータをまとめてマネージャ130に送信する。マネージャ130はコレクタから計測データを受け取り(ステップ1370)、収集したポイントデータを表示する(ステップ1380)。
次にメモリ上の閾値テーブル1610を参照して計測対象を切り替える必要があるか否かを判定する(ステップ1390)。マネージャ130は、計測対象オブジェクトの各々について計測された待ち時間と閾値テーブル1610上の対応するオブジェクトの待ち時間とを比較する。待ち時間の閾値を上回る待ち時間をもつオブジェクトがなければ(ステップ1390NO)、切り替え不要と判断し
、ステップ1360へ戻り指定された計測対象計算機についてポイントデータの収集・表示処理を継続する。一方、閾値を上回る待ち時間をもつオブジェクトが存在する場合には(ステップ1390YES)、該当するオブジェクトを1つ選択し、そのオブジェクトを計測対象としてステップ1310へ進み、フローデータの収集・表示処理に切り替える。
第3の実施形態によれば、フローデータの収集中に処理時間の上限設定値を越える処理時間を計測したオブジェクトを検出したとき、そのオブジェクトが実行される計算機で実行される他のオブジェクトの処理時間を収集することによって過大な処理時間の原因を追及できる。またポイントデータの収集中に待ち時間の上限設定値を越える待ち時間を計測したオブジェクトを検出したとき、そのオブジェクトの処理を先頭とする処理フローについてフローデータを収集することによって過大な待ち時間の原因を追及できる。このようにフローデータ収集からポイントデータ収集、ポイントデータ収集からフローデータ収集に切り替えながら性能データを収集することによって、性能のボトルネックがどの処理フローのどのオブジェクトに存在するか、あるいはどの計算機で実行されるどのオブジェクトに存在するかを検出することが可能になる。この際のフローデータ収集とポイントデータ収集との間の切り替えを自動的に行うことができる。
(4)第4の実施形態
複数の計算機上で多数のオブジェクトが動作する場合に、どのオブジェクトがどのオブジェクトと関連をもって動作するかとか、どの処理フローにトランザクションが集中するかなどを把握することが困難なことがある。第4の実施形態は、オブジェクト間の呼び出しの関係及び呼び出し回数を取得することによってこのような問題を解決し、もって性能モニタリングを支援するものである。
以下に図1に示される分散オブジェクト環境において図2の概略処理手順を用いて第4の実施形態の特徴を説明する。マネージャ130は最初にステップ210においてオブジェクトの一覧を表示し、オブジェクト相関データを採取するオブジェクトの選択入力を受け付ける。オブジェクト一覧上のすべてのオブジェクトを選択することも可能である。次にステップ220において入力されたオブジェクト相関データを採取するオブジェクトのオブジェクトIDをすべてのコレクタ131,132にブロードキャストによって通知する。マネージャ130はステップ230においてコレクタ131,132から転送されてくる採取データリスト501の到着を待つ。採取データリスト501を受信すると、ステップ240で採取データリスト501から後述する呼び出しテーブル2001を作成し、ステップ250でこの呼び出しテーブル2001から後述するオブジェクト相関図1802を作成して表示する。表示後、ステップ255において指定時間が経過したか否かの終了条件の判定を行い、指定時間が経過していなければステップ230に戻って上記処理を繰り返す。
一方コレクタ131,132が実行するブロック202の処理は第1の実施形態で説明したものと全く同じである。
図18は、呼び出しテーブル2001のデータ構成を示す図である。呼び出し元2010はリクエストを発行したオブジェクトのID、呼び出し先2020はそのリクエストを受け取ったオブジェクトのID、呼び出し回数2030はリクエストを発行した回数、すなわち呼び出し先2020のオブジェクトを呼び出した回数である。
図19は、オブジェクト相関図表示画面1801の例を示す図である。オブジェクト相関図表示画面1801は、オブジェクト相関図1802をに表示する。1810はオブジェクトID表示部であり、1820は関連のあるオブジェクトを結合する線分、1830は線分1820の右側に位置するオブジェクトを呼び出した回数である。図19のオブジェクト相関図1802は、図18に例示する呼び出しテーブル2001を図式化したものである。
図20は、上記ステップ240及びステップ250の処理の流れを示すフローチャートである。コレクタから採取データリスト501が到着すると、まず呼び出しテーブル2001の中に呼び出し元2010が受け取った採取データリスト501の受信側オブジェクトID503と一致しており、かつ呼び出し先2020がその採取データリスト501のオブジェクトID502と一致している行があるかどうかをチェックする(ステップ1910)。この場合にはオブジェクト
ID502で示されるオブジェクトが計測対象として指定されたオブジェクトである。一致するものがあれば(ステップ1910YES)、一致した呼び出しテーブルの行の呼び出し回数2030に1を加える(ステップ1920)。一致するものがなければ(ステップ1910NO)、呼び出しテーブル2001に呼び出し元2010をその採取データリスト501の受信側オブジェクトID503、呼び出し先2020を採取データリストのオブジェクトID502、呼び出し回数2030を1とする行を加える(ステップ1925)。
上記ステップ1920、もしくは1925の処理によって、呼び出しテーブル2001が更新された後、最新の呼び出しテーブル2001に基づいてオブジェクト関連図表示画面1801上のオブジェクト相関図1802の表示の更新を行う(ステップ1930)。
なお呼び出し元2010をその採取データリスト501のオブジェクトID502、呼び出し先2020を採取データリスト501の送信側オブジェクトID506と一致するものとみなしてもよい。この場合にもオブジェクトID502で示されるオブジェクトが計測対象として指定されたオブジェクトである。
以上説明した第4の実施形態によれば、指定されたオブジェクトについて採取データリスト501を採取し、オブジェクトから別のオブジェクトに亘って一連の処理が行われる場合、それらオブジェクト間の呼び出し元/呼び出し先の関連を明示するとともに、オブジェクト間のリクエストの発生回数を示すオブジェクト関連図1802を表示することが可能である。
実施形態の計算機システムの構成図である。
第1の実施形態の処理の概略手順を示す図である。
第1の実施形態の計測対象オブジェクト選択画面301の例を示す図である。
第1の実施形態の採取データリスト501のデータ構成を示す図である。
第1の実施形態のコレクタ131,132の処理の流れを示すフローチャートである。
第1の実施形態のリクエストフローテーブル701のデータ構成を示す図である。
第1の実施形態の計測結果表示画面810の例を示す図である。
第1の実施形態のマネージャ130の処理手順を示すフローチャートである。
第2の実施形態の処理の概略手順を示す図である。
第2の実施形態の採取データリスト1101のデータ構成を示す図である。
第2の実施形態のリクエストフローテーブル1201のデータ構成を示す図である。
第2の実施形態のコレクタ131,132の処理の流れを示すフローチャートである。
第3の実施形態の選択画面1410の例を示す図である。
第3の実施形態の計測対象計算機選択画面1510の例を示す図である。
第3の実施形態の閾値テーブル1610のデータ構成を示す図である。
第3の実施形態のポイントデータ収集結果表示画面の例を示す図である。
第3の実施形態のマネージャ130の処理手順を示すフローチャートである。
第4の実施形態の呼び出しテーブル2001のデータ構成を示す図である。
第4の実施形態のオブジェクト相関図表示画面1801の例を示す図である。
第4の実施形態の主要部分の処理の流れを示すフローチャートである。
符号の説明
101〜103…計算機、121〜126…オブジェクト、131〜132…コレクタ、130…マネージャ、140…LAN、501…採取データリスト、701…リクエストフローテーブル