(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを含む複数のノードを有する計算機システムを監視対象とし、該計算機システムとネットワークを介して接続された複数のモニタ用計算機で前記監視対象の計算機システムの所望の性能データをそれぞれ表示する計算機システムの性能モニタリング方法であって、
前記モニタ用計算機の一つで、受信プロセスを稼動させることにより、前記モニタ用計算機の一つから前記計算機システムに、性能データの定期的送信を要求し、
他のモニタ用計算機から接続要求を受けるごとに、該他のモニタ用計算機のために入出力バッファを確保し、
他のモニタ用計算機からデータ転送要求を受けるごとに、該他のモニタ用計算機のために確保した前記入出力バッファに付随する要求フラグをセットし、
前記監視対象の計算機システムから送信された性能データを受信するごとに、前記要求フラグがセットされている入出力バッファの全てに受信した性能データを格納し、格納した入出力バッファから該入出力バッファに対応するモニタ用計算機に前記性能データを送信し、かつ送信に対応して該入出力バッファに付随する要求フラグをクリアする、
ステップを実行して前記監視対象の計算機システムの性能データを複数のモニタ用計算機に分配することを特徴とする計算機システムの性能モニタリング方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の計算機をネットワークで接続した計算機システムにおける性能データの採取ならびにその表示をおこなう性能モニタリング方法、そのための計算機システムおよびプログラム記憶媒体に係り、特に並列計算機あるいは分散システムに好適な性能モニタリング方法に関する。
【０００２】
【従来の技術】
並列計算機や分散システムでは、それらを構成するノードと呼ばれる計算機が複数個協調して並列に稼働するため、それらのノードの動作は、ノード間通信に例示されるように、他のノードの動作に依存する。したがって、逐次型計算機に比較してその動作は非常に複雑なものとなる。
【０００３】
このような並列計算機を有効に使用し十分な性能を引き出すためには、ノード単体の動作のみならず、ノード間の動作の因果関係や負荷のバランスなども含めた複雑な稼働状況を正確に把握し、それらの情報を実行中のプログラムのチューニングに役立てていくことが必要となる。
【０００４】
計算機の稼働状況の把握を支援する従来技術としては、主に次の２通りの方法が用いられてきた。第１は、Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ社が販売しているＰｅｒｆＶｉｅｗなどで用いられている方法で、分散システムの各ノード毎にＣＰＵの稼働状況やメモリの使用状況、ネットワークの通信頻度などといったそのノードの稼働状況に関する性能データを計測し、磁気ディスク記憶装置などの、そのノードに含まれた記憶装置に蓄積する。各ノードに蓄積された性能データを、その分散システムに接続された一つの計算機内に集積し、グラフ表示などによって視覚的に理解できるよう表示する。
【０００５】
第２は、ＩＢＭ社のＶｉｓｕａｌｉｚａｔｉｏｎ  Ｔｏｏｌに代表される方法で、並列計算機の各ノード上に性能データを採取するプロセスを起動し、ネットワークを介してその並列計算機に接続された制御用計算機上に起動された表示プロセスが、各ノード上のプロセスからリアルタイムに性能データを受信し、表示を行う。たとえば、米国Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．発行の、“ＩＢＭ  Ｐａｒａｌｌｅｌ  Ｅｎｖｉｒｏｎｍｅｎｔ  ｆｏｒ  ＡＩＸ  Ｏｐｅｒａｔｉｏｎ  ａｎｄ  Ｕｓｅ  Ｖｅｒｓｉｏｎ  ２．１．０，”ｐｐ．２６３−２６５，１９９５（資料番号ＧＣ２３−３８９１−００）参照。
【０００６】
【発明が解決しようとする課題】
一般に並列計算機あるいは分散システムは複数の利用者により共有して使用されるようになっている。したがって、このような計算機の性能データをネットワークを介してリアルタイムに複数の利用者がモニタリングできることが望ましい。
【０００７】
しかし、第１の方法では、各ノード毎に性能データを記憶装置に蓄積することができるが、性能データの測定を一度終えてからデータの解析ならびに表示を行うため、リアルタイムに稼働状況の把握をすることができない。
【０００８】
第２の方法では、各ノード上のプロセスからリアルタイムに性能データを受信し表示することができるが、上記参考文献は、複数の利用者が同じ監視対象の計算機の性能データをモニタリングする方法を具体的には示していない。
【０００９】
複数の利用者が同じモニタリング対象の計算機の性能データのモニタリングを行う場合、利用者の数が増加するに従ってそのモニタリング対象の計算機に対する、そのモニタリングのための負荷が増大しないことがさらに望ましい。
【００１０】
従って本発明の目的は、性能測定の対象となる計算機の負荷の増大を抑えつつ、リアルタイムに性能データを複数の利用者がモニタリングするのに適した計算機性能モニタリング方法、そのための計算機システムおよびプログラム記憶媒体を提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明では、監視対象の計算機により性能データを繰り返し採取し、稼働状況モニタ用の計算機にネットワークを通じて送信する。このモニタ用の計算機に受信プロセスを起動し、このプロセスは、送信された性能データを受信し、その計算機と同じかまたは異なる複数の計算機上に起動された一つまたは複数の利用プロセスにその受信した性能データを分配する。測定された性能データは、複数の測定項目に対する複数の性能データを含む。それらの利用プロセスは、例えば、複数の表示プロセスあるいは複数の蓄積プロセスである。
【００１２】
いずれかの表示プロセスが上記受信プロセスにより転送された性能データを受信したときには、その表示プロセスは、転送された性能データの内、一部の測定項目に対する性能データを、その表示プロセスが起動されている計算機に接続された表示装置上に表示する。いずれかの蓄積プロセスが上記受信プロセスにより転送された性能データを受信したときには、その蓄積プロセスは、転送された性能データを全て、その蓄積プロセスが起動されている計算機に接続された記憶装置に記憶する。
【００１３】
本発明の一つのより望ましい動作態様では、監視対象の計算機が並列計算機である場合には、その並列計算機の各ノード上に起動した採取プロセスが採取した性能データを、上記ネットワークに接続された、並列計算機内の所定の一つのノード上に起動された収集プロセスにより収集し、上記受信プロセスに転送する。
【００１４】
【発明の実施の形態】
以下、本発明に係る性能モニタリング方法を図面に示したいくつかの実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。また、第２の実施の形態以降では、第１の実施の形態との相違点を主に説明する。
【００１５】
＜発明の実施の形態１＞
図１２において、並列計算機１は、それぞれ少なくとも一つのプロセッサ２Ａとメモリ２Ｂなどで構成される複数のノード２と、それらのノード間を接続する内部ネットワーク５とからなる。各ノードのメモリ２Ｂは、そのノードのプロセッサ２Ａが実行するプログラムおよびデータを保持する。各ノードあるいは一部のノードはさらに磁気記憶装置等の周辺装置を有するが、ここでは簡単化のために図示していない。並列計算機１の特定の１個のノードは外部ネットワーク２１と接続されており、外部ネットワーク２１には複数の計算機１１が接続され、上記一つのノードおよびこれらの計算機はこのネットワーク２１を介して相互に通信可能になっている。並列計算機１が監視対象の計算機であり、外部ネットワーク２１に接続された二つの計算機１１がモニタリングに使用される計算機の例である。ネットワーク２１に接続された他の計算機は、簡単化のために図示されていない。各計算機１１は、プロセッサ１１Ａやメモリ１１Ｂにより構成され、その計算機１１には、ディスプレイ装置とキーボードなどを含む入出力装置１２と磁気ディスク記憶装置などの記憶装置１３が接続されている。各プロセッサは、適当なＯＳ、たとえば、Ｘ／Ｏｐｅｎ  Ｃｏｍｐａｎｙ  Ｌｉｍｉｔｅｄにより開発され、ライセンスされているＵＮＩＸにより制御される。
【００１６】
図１には、本実施の形態におけるモニタリングシステムを構成する５種類のプロセスとそれらの間の関連を示す。これらのプロセスは、適当なプログラム記録媒体に記録された５つのプログラムが、並列計算機１に組み込まれて、それぞれプロセスとして実行されたものである。並列計算機１の各ノード２には採取プロセス４がおかれる。この採取プロセス４はそれぞれのノード２の性能データを一定の時間間隔で繰り返し採取する機能を持つ。収集プロセス３は並列計算機１の複数のノード２のうち、外部ネットワーク２１に接続されている特定のノード上におかれ、各ノード上の採取プロセス４が採取した各ノードの性能データを収集し、いずれか一つのモニタ用の計算機１１へ送信する。
【００１７】
一方、この一つのモニタ用計算機１１には受信プロセス１５、表示プロセス１６そして蓄積プロセス１７が起動される。受信プロセス１５は複数のモニタ用計算機の内の１つのみに起動され、収集プロセス３と１対１でデータの送受信を行う。表示プロセス１６ならびに蓄積プロセス１７は、一人または複数の利用者によって必要な数だけ起動され、受信プロセス１５から性能データの分配を受ける。表示プロセス１６は、その性能データ内の一部の項目別性能データを入出力装置１２内のディスプレイ装置上に表示する。蓄積プロセスは、その性能データの全体を記憶装置１３へ蓄積したりする。この表示プロセス１６および蓄積プロセス１７は、必ずしも受信プロセス１５の起動されたモニタ用計算機１１上で起動される必要はなく、そのモニタ用の計算機とネットワーク２１で接続されている他の計算機上でもそれらのプロセスを起動することもできる。また、いずれか一つのモニタ用計算機１１上に複数の表示プロセス１６を起動することもできる。同様にその計算機上に複数の蓄積プロセス１７を起動することも可能である。
【００１８】
次に、本モニタリングシステムの各プロセスがどのように連携をとりながら動作するかを、図６（ａ），（ｂ）のフローチャートならびに図２から図５に示された上記５つのプロセスの内部構成図を用いて説明する。
【００１９】
まず並列計算機１上の、外部ネットワーク２１に接続された上記特定のノード２上に収集プロセス３を起動する（ステップ５２１（図６（ａ）））。通常の運用では、この収集プロセス３の起動はシステム管理者が並列計算機１に対して収集プロセス起動コマンドを投入することによって行う。収集プロセス３は、起動されると、まず初期化処理を実行する。たとえば、ノード数、各ノードの属性や性能データを取得するノードの数など、並列計算機１の構成が記述された構成定義ファイル２０８（図３）を読み込む。本実施の形態では、全てのノードが性能データを取得すると仮定する。各ノードの属性には、そのノードのアドレス、磁気ディスク記憶装置など周辺機器がそのノードに付属しているか否かの周辺装置付属状況などの情報が含まれる。初期化処理が終わったら、この収集プロセス３はいずれか一つのモニタ用計算機１１上に起動されるであろう受信プロセス１５からの接続要求を待つ。
【００２０】
次いで、いずれか一つのモニタ用計算機１１上に受信プロセス１５を起動する（ステップ５４１）。通常の運用では、受信プロセス１５の起動は、システム管理者がモニタ用計算機１１から受信プロセス起動コマンドを投入することによって行う。この受信プロセス１５は並列計算機１に対してネットワークにより接続された任意の計算機上に起動することが可能である。しかし、本プロセスは複数の利用者が異なる計算機上で起動した複数の表示プロセスから接続される可能性があるため、並列計算機の管理用ワークステーションなど複数の利用者からのアクセスが可能な特定の計算機上で起動するのが一般的である。システム管理者はこの受信プロセス１５の起動コマンドの引数として、収集プロセス３へ接続要求を出す際に必要となる並列計算機１のＩＰアドレス情報（あるいはホスト名）、性能データ採取の時間間隔などのパラメータを入力する。
【００２１】
起動された受信プロセス１５は、図４の接続処理ルーチン３０５により、収集プロセス３に対して接続要求を行う（ステップ５４２）。本接続要求は、ＵＮＩＸにおけるｃｏｎｎｅｃｔシステムコールで実装することができる。この時、接続要求を出す相手である収集プロセス３の識別情報として、起動の際に引数として与えられた並列計算機のＩＰアドレス情報を用いる。接続要求を受け取った収集プロセス３では、接続処理ルーチン２０２が、受信プロセス１５内の接続処理ルーチン３０５（図４）のとの接続処理を行い、これにより収集プロセス３が受信プロセス１５との間でデータの送受信を行うのを可能にする（ステップ５２２）。
【００２２】
接続処理の完了後、収集プロセス３は先に構成定義ファイル２０８から読み込んだ並列計算機１の構成定義情報を受信プロセス１５へ送信する（ステップ５２３）。さて、本システムでは、システムを構成するプロセス間でメッセージを授受することにより、要求の伝達やデータの送受信を行う。本実施の形態では、メッセージは可変長のバイト列であり、先頭１バイトはメッセージの種類を表す識別子を格納する識別子フィールドであり、それに続くデータフィールドにデータを格納する。メッセージは、データフィールドを伴わず、識別子フィールドのみから成る場合もある。上記ステップ５２３での、上記構成定義情報の伝達のためには、収集プロセス３において、内部処理ルーチン２０７（図３）が受信プロセス１５に対応して設けられた入出力バッファ２０３上にその構成定義情報を含むメッセージを構成する。すなわち、識別子フィールドに本メッセージが構成定義情報を含むことを示す１バイトの識別子を格納し、データフィールドに、上記監視用の計算機１１のＩＰアドレスを格納する。このように構成されたメッセージをＵＮＩＸのｓｅｎｄシステムコールを用いて受信プロセス１５へネットワーク２１を介して送る。
【００２３】
受信プロセス１５では、収集プロセス３からこのメッセージ受信すると、入力解析ルーチン３０６（図４）にてその識別子からメッセージ内容が並列計算機１の構成定義情報であることを検知する。さらに、構成定義情報に含まれたノード数から、性能データの転送に必要な入出力バッファ３０１，３０２のサイズを算出する。算出されたサイズは後にそれらの入出力バッファが確保されるときに使用される。各入出力バッファ３０１または３０２は、後に起動される表示プロセス１６あるいは蓄積プロセス１７の一つに対応して確保される。これらの入出力バッファのサイズは、１時間ステップに一つの採取プロセス４により採取される性能データの長さを並列計算機内のノード数倍した長さ以上確保すればよい。次いで、受信プロセス１５は、収集プロセス３に対して各ノードの採取プロセス４の起動を要求する（ステップ５４３）。具体的には、上記計算機構成定義情報の授受と同様に、採取プロセス４は、起動要求であることを示す要求識別子を含んだメッセージを収集プロセス３へ送信し、それを受信した収集プロセス３が入力解析ルーチン２０５でその識別子から要求の内容を識別する。
【００２４】
受信プロセス１５から採取プロセス４の起動を要求された収集プロセス３は、先に受信した構成定義情報内のノードアドレスを使用して、各ノード２上に採取プロセス４を起動する（ステップ５２４）。起動にはＵＮＩＸのリモートシェル機能を用いる。採取プロセス４は起動されると（ステップ５０１）、ＵＮＩＸのｃｏｎｎｅｃｔシステムコールを用いて接続処理ルーチン１００（図２）により収集プロセス３との接続処理を実行するなどの初期処理を行い、収集プロセス３からモニタリング開始が要求されるのを待つ。このようにして採取プロセス４の起動および採取プロセスによる収集プロセス３との接続処理が終了すると、収集プロセス３は受信プロセス１５に対して起動処理終了を通知する。それを受けた受信プロセス１５は収集プロセス３に対してモニタリング開始を要求する（ステップ５４４）。この時、受信プロセスがモニタリング開始要求のために送信するメッセージには、要求の内容を示す識別子の他、性能データ採取時間間隔についての情報が含まれる。
【００２５】
モニタリング開始要求を受けた収集プロセス３は、該当する採取プロセス４へ開始要求メッセージを転送する（ステップ５２５）。採取プロセス４が起動されると、カウンタ制御／読み出しルーチン１０４がｓｅｌｅｃｔシステムコールを発行し、採取プロセス４はメッセージ到着待ち状態になる。採取プロセス４は、ｓｅｌｅｃｔシステムコールに対するリターンの値により、メッセージ到着を検出すると、この採取プロセス４の処理は入力解析ルーチン１０２に移る。入力解析ルーチン１０２ではｒｅｃｅｉｖｅシステムコールを発行してメッセージを入出力バッファ１０１に読み込む。メッセージの先頭の識別子がモニタリング開始要求識別子であることを確認し、メッセージに含まれる性能データ採取時間間隔を取り出し、これを戻り値として使用してカウンタ制御／読み出しルーチン１０４に戻る。こうして採取要求を受けた採取プロセス４は、要求に含まれている採取時間間隔を読みとり、カウンタ制御／読み出しルーチン１０４は、この採取時間間隔をクロック１０７にセットし、クロック１０７はセットされた時間間隔ごとにカウンタ制御／読み出しルーチン１０４に割り込みを発生する。
【００２６】
カウンタ制御／読み出しルーチン１０４は、クロックからの割り込みを受けると、その都度、ＵＮＩＸの性能データ採取のためのシステムコールであるｒｓｔａｔなどの関数を発行してＯＳ１０５から性能データを採取する（ステップ５０２）。性能データは複数の項目別性能データからなり、採取可能な項目別性能データの数と種類は、上記関数の仕様によって予め決まっている。通常、単位時間内でのＣＰＵ利用率、メモリ利用率、磁気ディスク記憶装置アクセス回数、ネットワークによる通信回数（すなわち、送信回数と受信回数）などの項目別性能データを得ることができる。ＯＳは、これらの性能データを、カーネル内のソフトウエアカウンタ１０６、またはそのノード内のハードウエアカウンタ１０８より読み出し、ｒｓｔａｔの出力引数として返す。
【００２７】
このようにして性能データを採取した採取プロセス４のカウンタ制御、読み出しルーチン１０４は、その性能データを入出力バッファ１０１に格納し、出力制御ルーチン１０３に制御を移す。出力制御ルーチン１０３は、ｓｅｎｄシステムコールを発行し、それにより入出力バッファ１０１の内容を内部ネットワーク５を介して収集プロセス３へ送信する（ステップ５０３）。収集プロセス３では、いずれかの採取プロセス４からの性能データを含むメッセージの到着を、内部処理ルーチン２０７（図３）がＯＳのシステムコールであるｓｅｌｅｃｔ関数を用いて監視する。メッセージの到着を確認すると、内部処理ルーチン２０７は、入力解析ルーチン２０５を起動する。入力解析ルーチン２０５は、ｒｅｃｅｉｖｅシステムコールを発行して、そのメッセージ内の性能データを入出力バッファ２０１へ読み込む。入力解析ルーチン２０５は、その性能データの読み込みが終了すると、送信元の採取プロセスを記憶し、全ての採取プロセス４から性能データが送信されてきたかを確認し、処理を内部処理ルーチン２０７に戻す。
【００２８】
この時、性能データをまだ送信してきてない採取プロセス４がある場合は、内部処理ルーチン２０７はｓｅｌｅｃｔシステムコールを発行して性能データを含むメッセージ到着の監視を続ける。全ての採取プロセス４からの性能データが到着した場合は、内部処理ルーチン２０７はそれらの採取プロセス４からの性能データを、それぞれの採取プロセスに対応して設けられた入出力バッファ２０１から、受信プロセス１５に対する入出力バッファ２０３へコピーし、さらに、それらのコピーされた各ノードに関する性能データを一つのメッセージに組み立てる。メッセージは、識別子に続いて、各採取プロセスから送られた性能データを連ねた性能データからなる。次いで内部処理ルーチン２０７は、出力制御ルーチン２０６を起動する。出力制御ルーチン２０６は、ＵＮＩＸのｓｅｎｄシステムコールを発行し、この性能データを含むメッセージを受信プロセス１５に送信する（ステップ５２６）。
【００２９】
受信プロセス１５では、内部処理ルーチン３０８がＵＮＩＸのｓｅｌｅｃｔシステムコールを発行し、収集プロセス３からのメッセージ到着を待つ。収集プロセス３からのメッセージの到着を検出すると、内部処理ルーチン３０８は、入力解析ルーチン３０６に処理を移す。入力解析ルーチン３０６は、ＵＮＩＸのｒｅｃｅｉｖｅシステムコールを発行して、そのメッセージ内の性能データを収集プロセス３に対応して設けられた入出力バッファ３０４へ読み込む（ステップ５４５）。性能データを受信した後、受信プロセス１５は、表示プロセス１６または蓄積プロセス１７が接続されているかを確認する。表示プロセスが１つも接続されていない場合には、以下の性能データの転送処理は行わない。少なくとも一つの表示プロセス１６が接続されていた場合には、受信プロセス１５は入出力バッファ３０４に到着したメッセージをその表示プロセス１６に対して１対１に設けられた入出力バッファ３０１にコピーし、それによりそのメッセージをその入出力バッファ３０１に接続された表示プロセス１６に分配する。もし複数の表示プロセス１６が接続されている入出力バッファ３０１があるときには、全ての表示プロセス１６にその性能データを全く同じ方法で分配する。蓄積プロセス１７が接続されている場合には、その蓄積プロセスに接続して設けられた入出力バッファ３０１を利用する。本分配処理の詳細に関しては後述する。
【００３０】
このようにして、採取プロセス４、収集プロセス３、受信プロセス１５がシステム管理者によって起動された後、本システムの使用者は表示プロセス１６あるいは蓄積プロセス１７を起動すれば、これらのプロセスを使用して性能データをモニタリングをすることが可能となる。この場合、図示された他のモニタ用の計算機１１は、並列計算機１の一人の利用者が使用する机上の計算機でもよい。こうして、システム管理者が管理する計算機１１からもあるいはそれから隔たった、利用者が管理する個人用の汎用の計算機１１からも並列計算機１の性能データをモニタ可能になる。なお、本明細書ではこのように、性能データのモニタリング専用でない汎用の計算機でも性能データのモニタリングに使用される計算機をモニタ用の計算機と呼んでいる。
【００３１】
本実施の形態では、受信プロセスを任意の計算機に起動可能にするとともに、性能データを使用する表示プロセスあるいは蓄積プロセスも任意の計算機に起動可能になっている。さらに、個々の表示プロセスが要求する項目別性能データに依らないで、予め定めた複数の項目別性能データを採取し、表示プロセスはその中から項目別性能データを選択して利用する。これらの予め定められた複数の項目が十分多ければ、利用者が他の項目別性能データを要求した場合でも、通常は上の方法によっても利用者の要求を満たすことができる。
【００３２】
さらに、本実施の形態では、蓄積プロセスでは利用者が後で利用する項目別性能データを選択できるように、採取された全ての項目別性能データを記憶装置に保持するようになっている。このためにも、利用者の要求する項目別性能データが何であるかに依らないで予め定めた一定数の項目別性能データを採取している。
【００３３】
さらに、収集プロセス、採取プロセスと受信プロセスは、表示プロセスあるいは蓄積プロセスの起動とは独立に起動され、その後の表示プロセスあるいは蓄積プロセスの起動に応じて採取した性能データをそれらのプロセスに分配している。これにより、起動された表示プロセスの有無あるいはその数が変化しても、受信プロセスと収集プロセス、採取プロセスは同じ処理を実行すればよいことになる。
【００３４】
表示プロセス１６の動作は以下の通りである。表示プロセス１６はモニタリングシステムの使用者が自分の使用するモニタ用計算機１１上で起動する（ステップ５６１（図６（ｂ）））。この時、使用者は受信プロセス１５が起動された計算機のＩＰアドレスをあらかじめ確認しておき、その表示プロセス１６の起動時の引数として指定する。
【００３５】
複数の利用者が本モニタリングシステムを利用する場合には、通常は、利用者毎に異なるモニタ用計算機を用いる。例えば、二人の利用者が、図１に示される２台のモニタ用計算機１１のそれぞれを用いる。本実施の形態では、同一の利用者が同じ計算機１１上に複数の表示プロセスを起動することができる。少なくとも一つの表示プロセス（第１種の表示プロセス）は、後に例示するように、その表示プロセスに対して定まった項目別性能データを、その表示プロセスにより定められた図形もしくはグラフでもって表示するように構成されている。その他の表示プロセス（第２種の表示プロセス）は利用者が選んだ項目別性能データを、その表示プロセスに対してあらかじめ定められたグラフにより表示するように構成される。後者の種類の表示プロセスとして、それぞれ異なるグラフに対応して準備された複数の表示プロセスが同一のモニタ用の計算機上に起動可能に構成されている。さらにいずれの種類の表示プロセスも、起動された後、利用者の指示により受信プロセスに性能データの転送を要求するように構成されている。このように、表示可能なグラフごとに表示プロセスを起動するように表示プロセスを構成してあるので、各表示プロセスの構造が簡単である。
【００３６】
以上の結果、本実施の形態では性能データを同じ計算機上に表示するには、利用者は最小限一つの表示プロセスを起動する必要があるが、一般には利用者は複数の項目別性能データの表示を希望するので、同一の利用者が同一の計算機上に複数の第２種の表示プロセスを起動することになる。その際、どのグラフで性能データを表示するかに応じて、起動すべき第２種の表示プロセスを選択し、その選択された第２種の表示プロセスを起動後に、その表示プロセスで表示すべき項目別性能データを指示するようになっている。
【００３７】
起動された表示プロセス１６では、制御ルーチン４０３が表示画面の初期化や受信プロセス１５へ接続するための初期化処理を行った後、接続処理ルーチン４０６に処理を移して受信プロセス１５へ接続要求を発行する（ステップ５６２）。
【００３８】
接続要求を受け取った受信プロセス１５の接続処理ルーチン３０３は、その表示プロセス用に入出力バッファ３０１ならびに要求フラグ３０２を生成し、上記表示プロセスに対して接続処理を行う（ステップ５４６）。上記受信プロセスに対する接続処理が終了し、そのプロセスに対してデータの送受信が可能となったら、受信プロセス１５は今接続した表示プロセス１６に対して、受信プロセス１５が先に収集プロセス３から受信した、並列計算機１の構成定義情報を送信する。
【００３９】
構成定義情報を受信した表示プロセス１６は、その情報を参照して性能データを蓄積するための送受信バッファ４０４の確保や全ノードの性能データを表示するためのグラフのレイアウトの計算などを行った上で、ウィンドウを表示装置上に表示する（ステップ５６３）。図７は、表示プロセス（第１種の表示プロセス）により予め定められた複数の項目別性能データを表示するウィンドウの例である。二つの直方体および一組の矢印（６０１，６０２，６０３）によって一つのノードの稼働状況を表す。このような図形を複数のノードに対応して複数個配置することによって並列計算機全体の稼働状況を表す。２つの直方体６０１，６０２の高さはそれぞれ一つのノードでのＣＰＵ利用率とメモリ利用率に対応し、一組の矢印６０３の長さはネットワーク２１へのそのノードからの送信回数と送受信回数に対応する。表示ウィンドウ６１０は、表示エリア６２０と制御エリア６３０から構成され、使用者は制御エリア６３０に配置されたボタン６４０，６５０などのオブジェクトを利用して表示プロセスの制御を行う。ボタン６４０を操作することによりデータ表示が開始され、ボタン６５０を操作することにより表示が停止される。
【００４０】
図８は１画面に利用者が選択した１種類の項目別性能データを表示する他の表示プロセス（第２種の表示プロセス）により表示されるウィンドウの例である。表示エリア６２０には棒グラフが表示される。グラフの横軸１７１１は異なるノードに対応し、縦軸１７１２に一つの項目別性能データがマッピングされる。利用者は、制御エリア６３０に与えられた性能データのリスト１７０４から、棒グラフの縦軸にマッピングしたい性能データを選択する。ボタン６４０，６５０は図７の場合と同様である。図７あるいは図８のいずれの表示プロセスの場合でも、使用者が表示ウィンドウ６１０または１７００内のボタン６４０の操作によりデータ表示の開始を指示すると、表示プロセス１６は受信プロセス１５に対して性能データの転送要求メッセージを送信する（ステップ５６４）。
【００４１】
前述のように、受信プロセス１５は、内部処理ルーチン３０８においてｓｅｌｅｃｔシステムコールを発行し、入出力バッファ３０１および３０４へのメッセージ到着待ちの状態にある。表示プロセス１６からのデータ転送要求メッセージの到着によりｓｅｌｅｃｔシステムコールはリターンし、内部処理ルーチン３０８は、このメッセージの到着を検出すると、入力解析ルーチン３０６に処理を移す。入力解析ルーチン３０６はｒｅｃｅｉｖｅシステムコールを発行して要求メッセージを当該表示プロセスと接続された入出力バッファ３０１に読み込む。次いで、出力制御ルーチン３０７は要求メッセージの識別子をチェックし、メッセージがデータ転送要求であることを判定して、その入出力バッファ３０１に付随する要求フラグ３０２をセットする。なお、同じ使用者または異なる使用者によって複数の表示プロセス１６または蓄積プロセス１７が起動された場合には、受信プロセス１５は上記の処理を繰り返し、それら全てのプロセスと接続操作を行う。
【００４２】
このように表示プロセス１６が受信プロセス１５に接続され、使用者の画面操作によって表示が開始された後の装置動作について説明する。前述の手順により採取プロセス４から収集プロセス３を経由して受信プロセス１５へ性能データの転送が行われる（ステップ５０４，５２７，５４８）。このとき、受信プロセス１５は内部処理ルーチン３０８においてｓｅｌｅｃｔシステムコールを発行し、入出力バッファ３０１，３０５へのメッセージ到着待ち状態にある。収集プロセス３からの性能データを含むメッセージの到着を契機としてｓｅｌｅｃｔシステムコールは内部処理ルーチン３０８にリターンし、さらに内部処理ルーチン３０８は入力解析ルーチン３０６に制御を移す。入力解析ルーチン３０６はｒｅｃｅｉｖｅシステムコールを発行して到着したメッセージを入出力バッファ３０４に読み込み、メッセージの識別子をチェックしてこれが性能データを含むメッセージであることを確認して内部処理ルーチン３０８に処理を戻す。内部処理ルーチン３０８は表示プロセス１６と接続された入出力バッファ３０１に付随する要求フラグ３０２を順次確認する（ステップ５４７）。
【００４３】
もしいずれかの入出力バッファ３０１に付随する要求フラグ３０２がセットされていれば性能データを含むメッセージを入出力バッファ３０４からその一つの入出力バッファ３０１にメモリコピーし、出力制御ルーチン３０７を起動する。出力制御ルーチン３０７はｓｅｎｄシステムコールを発行して入出力バッファに格納された上記メッセージをその入出力バッファ３０１に接続された表示プロセスへ転送し、その入出力バッファ３０１に付随する要求フラグ３０２をクリアする（ステップ５４９）。この処理を全ての接続されている表示プロセス１６に対して設けられている全ての要求フラグ３０２について繰り返すことにより、受信プロセス１５は全ての表示プロセス１６に対して性能データを分配する。蓄積プロセスが入出力バッファ３０１に接続されている場合も全く同様である。このように複数の表示プロセス１６に対して性能データを分配する処理を、モニタ用計算機１１上にある受信プロセス１５が行うため、起動された表示プロセス１６の数が増えた場合でも並列計算機１上にある採取プロセス４や収集プロセス３にはその影響はなく、監視対象の並列計算機の負荷が増加しない。
【００４４】
受信プロセス１５から性能データの転送を受けた表示プロセス１６は、受信した全てのデータのうち表示に必要な項目別性能データを参照して表示画面を作成し、入出力装置１２に描画する（ステップ５６６）。表示に必要なデータとは、図７のウィンドウを持つ表示プロセスの場合には、ＣＰＵ利用率、メモリ利用率、通信回数という、その表示プロセスで定められた３つの項目別性能データであり、図８のウィンドウを持つ表示プロセスの場合には、その表示プロセスに対して利用者が指示した一つの項目別性能データである。
【００４５】
表示プロセス１６は、処理５６４から処理５６６までの表示動作を繰り返すことによって、次々に送られてくる性能データを表示していく。すなわち、表示プロセス１６の制御ルーチン４０３は、データ転送要求を受信プロセス１５に送信する（ステップ５６４）。そのときの具体的な動作は後に説明するとおりである。制御ルーチン４０３は、その後、利用者のウィンドウ操作あるいは受信プロセスからの性能データを含むメッセージの到着のいずれかを検出するための待ち状態になる。性能データを含むメッセージが到着すると、制御ルーチン４０３はｒｅｃｅｉｖｅシステムコールを発行してメッセージを送受信バッファ４０４に読み込む（ステップ５６５）、処理を入力解析ルーチン４０１に移す。入力解析ルーチン４０１は、受信プロセス１５から送られたメッセージの識別子が、性能データを含むメッセージの識別子であることを確認する。次いで描画処理ルーチン４０２を起動し、描画処理ルーチン４０２は、ウィンドウ上のグラフの高さを性能データに応じて変化させる（ステップ５６６）。描画が終了すると処理は制御ルーチン４０３に戻り、制御ルーチン４０３は、次の時間ステップの性能データに対するデータ転送要求メッセージを送受信バッファ４０４に作成し、ｓｅｎｄシステムコールを発行してこのメッセージを受信プロセス１５に送信する（ステップ５６４）。送信後、制御ルーチン４０３は再び上記待ち状態に戻る。
【００４６】
一方、表示の停止は、各時間ステップに対する性能データの描画の後に送信している性能データ転送要求メッセージの送信を中止することにより実現される。使用者が表示ウインド６１０内のボタン６０５を操作すると、制御ルーチン４０３は上記待ち状態から抜けて入力解析ルーチン４０１に制御を移す。入力解析ルーチン４０１がその要求を解析し、押されたボタンが停止ボタン６５０であることを制御ルーチン４０３に伝える。制御ルーチン４０３は、この状態が検出されると、その後、受信プロセス１５に対して性能データ転送要求メッセージの送信を行わない。データ転送要求が行われない表示プロセス１６は対応する要求フラグ３０２をセットしない。したがって、受信プロセス１５はそのような表示プロセス１６には性能データを送信しない。したがって、その表示プロセス１６の表示は停止する。
【００４７】
表示プロセス１６の終了処理は、表示ウインド６１０のメニュー操作により実行される。停止処理の場合と同様に、終了処理の場合も利用者のウィンドウ操作を制御ルーチン４０３が検出して上記待ち状態から抜け、入力解析ルーチン４０１に処理を移す。入力解析ルーチン４０１はメニューから停止が選ばれたことを検出し、制御ルーチン４０３に伝える。制御ルーチン４０３は送受信バッファ４０４に終了通知メッセージを形成し、ｓｅｎｄシステムコールによりこれを受信プロセス１５に送出する（ステップ５６７）。
【００４８】
終了通知メッセージを受けた受信プロセス１５は、その表示プロセス１６との接続状態を解消し、割り当てていた入出力バッファならびに要求フラグを解放する（ステップ５５０）。接続が解消されたら、表示プロセス１６は終了処理（ステップ５６８）を行ったうえで終了する（ステップ５６９）。全ての表示プロセス１６との接続が解消されたら、システム管理者は、受信プロセス１５の終了処理を開始することが可能となる。受信プロセス１５の終了処理を開始するには、受信プロセス１５が起動されている計算機１１を制御するＯＳが提供する割り込み機能を利用して受信プロセス１５に対して割り込み信号を入力する。割り込み信号を受け取った受信プロセス１５は収集プロセス３に対して終了要求を発行する（ステップ５５１）。終了要求を受けた収集プロセス３は、全ての採取プロセス４に対して終了要求を発行し（ステップ５２８）、それを受けた採取プロセス４は終了処理を行う（ステップ５０５）。全ての採取プロセス４に対する接続が解消されたら、収集プロセス３は受信プロセス１５との接続を解消する。その後、収集プロセス３および受信プロセス１５は、各々独立に終了処理を行い、本モニタリングシステム内の全てのプロセスが終了する（ステップ５２９，５５２）。
【００４９】
次に、蓄積プロセス１７が記憶装置１３に性能データを蓄積し、その蓄積したデータを表示プロセス１６で表示する方法について説明する。
図５に示す蓄積プロセス１７は、表示プロセス１６と同様に、使用者によって起動される。蓄積プロセス１７が起動されると、接続処理ルーチン４５５が受信プロセス１５へ接続要求を発行し、表示プロセス１６が実行したのと同様の手順で受信プロセス１５と接続し、その蓄積プロセス１７の動作を使用者に制御させるための制御ウィンドウ（図示せず）を表示する。制御ウィンドウは、表示プロセス１６の表示ウィンドウ、たとえば６１０（図７）と同様であるが、表示エリア６２０はなく、制御エリア６３０のみで構成される。制御エリア６３０で使用者が制御できるのは、蓄積するデータ項目の選択、蓄積するファイル名の指定、蓄積の開始ならびに終了である。制御エリア上の操作で蓄積するデータ項目ならびに蓄積するファイル名を設定した後、データ蓄積開始の操作を行うと、蓄積プロセス１７は表示プロセス１６と同様に性能データの受信を行う。入力解析ルーチン４５１は、受信プロセス１５から送られたメッセージの識別子が、性能データを含むメッセージの識別子であることを確認する。この性能データは送受信バッファ４５２に格納され、その後、この性能データは、データ整形ルーチン４５３で蓄積用のデータ形式に整形され、出力ルーチン４５４によって磁気ディスク記憶装置などの記憶装置１３へ蓄積される。
【００５０】
蓄積するファイル１００４の形式は、図９（ｄ）に示すように、まず最初に並列計算機のノード総数、前述した各ノードの属性、データを採取したノード一覧などといった並列計算機の構成定義情報を格納する。その情報の後に、複数のブロックが記憶される。各ブロックは、複数のノードの一つと、複数の時間ステップの一つに対応する。各ブロックは、複数のデータレコードからなり、各データレコードは、同じ時間ステップに同じノードから取得された、異なる測定項目に対する性能データを含む。ブロックの最初と最後には、それぞれ図９（ａ）のヘッダレコード１００１および図９（ｂ）のブロック終了レコード１００３が置かれ、ブロックの境界を示す。ヘッダレコードには、ブロック全体の長さを示すブロック長やそのブロックに属する複数のデータレコードを生成したノードの番号およびそれらのデータレコードに含まれる性能データが取得された時間ステップを表す時刻情報等が含まれている。さらに、全てのレコードの先頭にはレコードの種類を示すタイプコードおよびそのレコードの長さを示すレコード長がある。ブロックの並ぶ順は、まず、特定のノードと特定の時間ステップに対応する一つのブロックが記憶され、次に同じ時間ステップに対する他のノードに対する他の複数のノードが記憶される。同じ時間ステップに対する全てのノードに対する複数のブロックが蓄積された後に、後続の複数の時間ステップに対する複数のブロックが並ぶ。
【００５１】
このようにして蓄積プロセス１７により蓄積されたデータは、いずれかの表示プロセス１６で表示することが可能となる。この表示に使用する表示プロセスは、すでに起動され、図７または図８に示す表示ウインドウに性能データを表示している表示プロセスでもよく、まだ起動されていない表示プロセスを使用してもよい。以下では、すでに起動され、性能データの表示に使用されている表示プロセスを使用する場合について説明する。
【００５２】
図１０のフローチャートは表示プロセス１６が蓄積データを読み込んで表示を行う手順を示したものである。まず、利用者が事前に入出力装置１２から表示をする蓄積データが格納されたファイル名を入力する（ブロック１１０１）。その後、利用者が表示プロセス１６に対して蓄積データ表示モードへの切り替えの要求を入力すると、表示プロセス１６は蓄積データ表示モードへ切り替える（ステップ１１０２）。この時、表示プロセス１６は、受信プロセスへのデータ転送要求の送信を停止し、入力先切替ルーチン４０５（図５）がデータ入力先を受信プロセス１５から記憶装置１３上の指定したファイルへ切り替える。
【００５３】
表示プロセス１６はこのファイルをオープンすると（ステップ１１０４）、表示プロセス１６はファイルの先頭にある並列計算機の構成定義情報を読み込む（ステップ１１０５）。この時、それまで使用していた構成定義情報をバッファ（図示せず）へ退避し、ファイルから読み込んだ構成定義情報をもとにグラフのレイアウト等を計算し直し、そのグラフを表示画面に表示する。次に、ファイルを最後まで読んでブロック数を数え、先に読み込んだ構成定義情報のノード数でこのブロック数を割ることにより、蓄積されている複数のブロックが測定された時間ステップ数を計算する（ステップ１１０６）。そして、蓄積データ表示機能の制御画面を表示する（ステップ１１０７）。
【００５４】
図１１は制御画面の一例である。ファイル名表示欄９０２には、現在読み込みを行っているファイル名が表示され、データ数表示欄９０３には処理ブロック１１０６で計算した蓄積データの時間ステップ数が表示される。表示範囲入力欄９０４，９０５，９０６には、それぞれ表示する時間ステップ範囲の最初、最後および何時間ステップおきにデータを表示するかという読み飛ばす時間ステップ数を入力する。スライダ９０７は、現在何番目の時間ステップのデータを表示しているかを示すもので、この位置を動かすことによって、表示データを変更することが可能である。ボタン９０８，９０９，９１０，９１１は、それぞれ一つ前の時間ステップへのコマ送り、連続表示の停止、連続表示の開始、一つ先の時間ステップへのコマ送りを指定するためのボタンである。
【００５５】
ステップ１１０９で、このような制御画面９０１により、利用者が表示時刻、すなわち表示すべきデータの時間ステップを指定すると、表示プロセス１６はファイルの内容を読み込んで、該当する時間ステップのデータを検索する（ステップ１１１０）。そして、そのデータを表示装置へ描画する（ステップ１１１１）。また、ステップ１１０９で、制御画面９０１のボタン９１０を押して連続表示を開始させると、表示範囲入力欄９０５で指定された表示範囲の最後の時間ステップに到達するか、表示ボタン９０９により連続表示の停止が指定されるまで（ステップ１１１２）、現在読み込んでいるデータの次から１時間ステップ分のデータを読み込み（ステップ１１１３）、表示することを繰り返す（ステップ１１１４）。表示を繰り返す時間間隔は、ファイルに蓄積しているヘッダレコード１００１内の時刻情報から算出する方法や、あらかじめ指定する方法などが考えられるが、いずれにしても図５における表示プロセス１６内のクロック生成ルーチン４０７によって時刻を計測し、指定時間が経過したら描画処理を行う。
【００５６】
マウス等の入力装置より、蓄積データ表示機能の終了が利用者により指示されると（ステップ１１０８）、終了処理を実行し、それにより、入力先切替ルーチン４０５が受信プロセスへと入力先を切り替え、この表示プロセス１６は、通常のデータ表示モードへ戻る（ステップ１１１５）。この時、表示プロセス１６はファイルから読み込まれた構成定義情報を破棄し、バッファへ退避させておいた以前の構成定義情報を復活させ、表示エリア上のグラフを蓄積データ表示モードに切り替える以前のリアルタイム表示の状態に戻す。これにより、蓄積プロセス１７と表示プロセス１６を起動しておくことにより、現在のデータをリアルタイムで表示している最中に、過去のデータを表示し直すことが可能になる。また、事前に蓄積しておいたデータを用いて、並列計算機の稼働状況を事後解析することも可能となる。なお、蓄積プロセス１７はそれぞれのモニタ用の計算機１１上に並行して起動し、それぞれの蓄積プロセスによりそれぞれが起動された計算機に含まれた記憶装置１３に性能データを並行して蓄積することができる。
【００５７】
さらに、蓄積プロセス１７は受信プロセス１５から見ると表示プロセス１６と特に区別されるものではないため、１つの受信プロセス１５に対して複数の表示プロセス１６が起動可能であるということは、複数の蓄積プロセス１７の起動が可能であることを意味する。したがって、複数の使用者がそれぞれ互いに異なる蓄積プロセス１７を同時に起動することによりデータ蓄積機能を同時に利用することが可能となり、しかもそれらの蓄積プロセスの起動により並列計算機の負荷が増大することはない。
【００５８】
＜発明の実施の形態２＞
本発明は、上記実施の形態で使用した並列計算機とは異なるものにも適用可能である。上記実施の形態では、並列計算機の内の特定のノードのみが外部ネットワークに接続されていた。しかし、すでに開発されている並列計算機の中には、複数の特定のノードがこの外部ネットワークに接続されているものもある。そのような並列計算機においては、それらの特定のノードの各々に、収集プロセスを配置し、並列計算機内に性能データの収集および受信プロセスへの転送をそれらの複数の収集プロセスにより分割して実行させることができる。
【００５９】
すなわち、受信プロセスと各特定のノードに起動された収集プロセスとの間の通信を使用して、その収集プロセスがその特定のノードを含む一部の複数のノードの性能データの収集を指示し、それらのノードが採取した性能データをその収集プロセスが収集し、上記受信プロセスに転送する。このことを各特定のノードに起動された収集プロセスが行う互いに並行に行う。こうすることにより、先の実施の形態における、全てのノードが採取した複数の性能データを収集する特定の一つのノードの負荷よりは、この実施の形態２における各特定のノードの負荷が減少する。このような並列計算機においても、複数のユーザが、この並列計算機に性能データをモニタしようとする場合でも、並列計算機の負荷が増大することはない。
【００６０】
＜発明の実施の形態３＞
すでに開発されている他の並列計算機では、それぞれが複数のノードを含むような複数のパーティションに分割されている。この場合には、各パーティションごとに、その中の複数のノードによりいずれかの一つジョブを並列に実行させることができる。もちろん各パーティションで複数のジョブを実行させることも可能である。しかし、一人の利用者が一つのパーティションを占有して使用するのに適している。このような計算機システムではそれぞれのパーティションごとに稼動状況をモニタリングすることが有効である。
【００６１】
例えば、図１３では、並列計算機１が二つのパーティション１、パーティション２（１００Ａ，１００Ｂ）に分割されている。各パーティションに含まれた複数のノードの内、予め定められた一つのノードが外部ネットワーク２１に接続されている。この場合、採取プロセス４を各ノード上で起動し、かつ収集プロセス３を各パーティションの、外部ネットワーク２１に接続された特定のノード２上に起動する。パーティション１の性能データを監視するために、第１の受信プロセス１５Ａを第１のモニタ用計算機１１上に起動し、第１のパーティションの特定のノードに起動された、収集プロセス３と交信させる。さらに表示プロセス１６Ａあるいは蓄積プロセス１７Ａをそのモニタ用計算機上１１に起動し、上記第１の受信プロセスと１５Ａに接続する。実施の形態１の場合と同様にして、表示プロセス１６Ａあるいは蓄積プロセス１７Ａはこの受信プロセス１５Ａからパーティション１の性能データの分配を受ける。さらに他の図示しない表示プロセスあるいは蓄積プロセスを他の図示しない計算機に起動された場合、その表示プロセスあるいは蓄積プロセスもこの第１の受信プロセスを介して性能データの分配を受ける。
【００６２】
同様にして他のパーティション２に関しても第２の受信プロセス１５Ｂ、表示プロセス１６Ｂあるいは蓄積プロセス１７Ｂあるいはさらに他の図示しない表示プロセスあるいは蓄積プロセスを起動する。この実施の形態においては、各パーティションごとに性能データを他のパーティションとは独立に採取することができる。さらに、同じパーティションの性能データをモニタする表示プロセスと蓄積プロセスの両方が同じモニタ用の計算機に上に起動された場合にもあるいは同じパーティションの性能データをモニタする複数の表示プロセスを異なるモニタ用のｐ計算機上に起動した場合にも、並列計算機の負荷は増えない。
【００６３】
＜発明の実施の形態４＞
実施の形態２の最も極端な場合は、並列計算機の全てのノードが外部ネットワークに接続されている場合である。この場合には、各ノードに上記採取プロセスと収集プロセスの機能を兼ねたプロセスを起動し、上記受信プロセスが、各ノードのこのプロセスと交信してそのノードの性能データを受信させればよい。この場合には、各ノードに性能データの採取のための同じプロセスが起動されるので、実施の形態１に比べて、異なるノード間で性能モニタのための負荷の偏りが少ない。
【００６４】
＜発明の実施の形態５＞
本発明は、外部ネットワークで結合された複数の計算機からなる分散型の計算機システムに対しても同様に適用が可能である。この場合には、この分散型のシステムに属する複数の計算機の各々に、採取プロセスを配置し、それらの計算機の内の一つ、たとえば、ネットワークを管理する計算機に収集プロセスを配し、さらに、それらの計算機の内の、監視対象となる複数の計算機のうちの一つに受信プロセスを配し、それらの監視対象となる複数の計算機の一部あるいはそれらの監視対象となる複数の計算機とは異なるいずれか一つの計算機に表示プロセスあるいは蓄積プロセスを配置すればよい。なお、受信プロセスを監視対象となる複数の計算機とは異なるものに起動することも可能である。この結果、各採取プロセスと上記収集プロセスの間の通信あるいは収集プロセスと受信プロセスの間の通信は外部ネットワークを介して行われる点で、実施の形態１と異なる。しかし、複数の表示プロセスあるいは蓄積プロセスにこの受信プロセスから性能データを分配できることは実施の形態１と同じである。
【００６５】
＜変形例＞
本発明は以上に示した実施の形態に限定されるものではなく、以下に例示する複数の変形例を含めいろいろの変形例を含むものである。
（１）並列計算機内部の高速通信手順の利用
実施の形態では、並列計算機内部の通信、すなわち採取プロセス４と収集プロセス３との間の性能データの受け渡しにＴＣＰ／ＩＰによる通信を用いるとして説明を行った。しかし、並列計算機によっては、内部ネットワークが複数のデータを異なるパスを経由して並列に転送可能なものを使用するものが多い。そのような内部ネットワークを介したノード間の通信には、ＴＣＰ／ＩＰよりも軽量、高速な内部通信手順を利用しているものも多い。そのような計算機においては、上記実施の形態１，２，３のごとく、その計算機内の一つもしくは一部の複数のノードに起動された収集プロセスに他のノードで採取された性能データを転送する方法を採用した場合には、そのノード間通信には、並列計算機固有の高速内部通信プロトコルを使用することが性能データの転送の高速化の点で有効である。
【００６６】
この場合、図３に示す収集プロセス３では、入力解析ルーチン２０５ならびに出力制御ルーチン２０６に代えて、内部通信に対応した入力解析ルーチンおよび出力制御ルーチンの組、ならびに外部通信に対応した入力解析ルーチンと出力制御ルーチンの組とがが用意され、内部通信と外部通信のいずれを行うかにより、これらの組の一方が使用される。入出力バッファ２０１は前者により使用され、入出力バッファ２０３は後者により使用される。例えば、採取プロセス４から  高速内部通信手順によって入出力バッファ２０１に送られてきたデータは、採取プロセス４用の、高速内部通信に対応した入力解析ルーチンによって受信され、一度、内部処理ルーチン２０７へ渡される。内部処理ルーチン２０７は受信プロセス１５と通信するための、外部ネットワーク通信に対応した出力制御ルーチン２０６を呼び出し、データを引き渡す。その出力制御ルーチン２０６はＴＣＰ／ＩＰなどの、モニタ用計算機１１と通信が可能なプロトコルによって受信プロセス１５へデータを送信する。本変形により、並列計算機の全てのノードがＴＣＰ／ＩＰなどといった比較的負荷の重い通信プロトコルを使用する場合より、並列計算機１にかかる、モニタリングによる負荷を減らすことが可能となる。
【００６７】
（２）採取する項目の受信プロセスからの指定
実施の形態１では、採取プロセスが採取する項目別性能データは予め決まっていたが、受信プロセスからこれらの項目を指定させてもよい。このためには、システム管理者が受信プロセスを起動するときに、その受信プロセスを起動する計算機１１にこれらのデータを指定する情報を入力させればよい。
【００６８】
（３）受信プロセスでの一部の項目別性能データの選択
上記実施の形態１では、採取プロセスにて採取された複数の項目別性能データ（例えばＣＰＵ利用率、メモリ利用率、磁気ディスク記憶装置アクセス回数、通信回数）が、収集プロセス３、受信プロセス１５を経由してつねに表示プロセス１６にまで転送された。これに対し、受信プロセス１５にて表示に必要な項目のみを選択して表示プロセス１６に転送させると、転送されるデータ量を低減できる。これを実現するためには、表示プロセス１６が利用者によって起動され、受信プロセス１５に対して接続が確立した（ステップ５６２（図６（ｂ）））直後に、表示プロセス１６から受信プロセス１５に対して表示すべき性能データの通知を行う。受信プロセス１５はどの表示プロセスがどの項目別性能データを必要とするかを記憶する。受信プロセス１５において内部処理ルーチン３０８が性能データを入出力バッファ３０４から、いずれかの表示プロセスに接続された入出力バッファ３０１へメモリコピーする際に、受信した性能データ全体をコピーするのではなく、必要と記憶された項目別性能データのみを選択してコピーする。
【００６９】
（４）項目別性能データの選択的採取
実施の形態１では、表示プロセスまたは蓄積プロセスの起動とは独立に、性能データの収集を受信プロセスから収集プロセスに要求した。しかし、いずれかの表示プロセスまたは蓄積プロセスが起動されてから、この要求を発行するように受信プロセスを構成することもできる。その際、利用者が要求する項目別性能データを表示プロセスあるいは蓄積プロセスから受信プロセスに通知させ、受信プロセスにより起動されたそれらのプロセスが通知した項目別性能データを採取することを監視対象の計算機に要求させることもできる。この方法を採ると、新たに表示プロセスあるいは蓄積プロセスが起動された場合に、その新たに起動されたプロセスが要求する項目別性能データが追加して採取されるように、受信プロセスが採取を要求する項目別性能データを更新することが望ましい。こうすることにより、必要最小限の項目別性能データのみを採取することになるので、採取する性能データの量が少なくなる。
【００７０】
（５）複数の時間ステップでの採取されたデータの一括転送
実施の形態１は、データを採取する時間ステップ毎に採取プロセス４から表示プロセス１６までデータを送信するものであったが、変形例として採取プロセス４において複数の時間ステップの性能データを蓄積しておき、それらをまとめて１回のデータ送信で送り出す方式が考えられる。以下その変形例について説明する。図２において、採取プロセス４の出力制御ルーチン１０３は、カウンタ制御／読み出しルーチン１０４からデータを受け取ると、入出力バッファ１０１中のその時点での最後尾へ格納し、入出力バッファ１０１へ格納したレコード数を記憶しておく。入出力バッファ１０１内のレコード数が所定値に達したら、出力制御ルーチン１０３はそれまで格納したデータをまとめて一つのデータとして収集プロセス３へ送信する。収集プロセス３ならびに受信プロセス１５については、前述の実施の形態１と同様の動作をする。このデータを最終的に受信した表示プロセス１６は、図５において、内部のクロック４０７を参照して、一定時間毎に送受信バッファ４０４内のデータから一時刻分のデータを読み出し、表示を行う。送受信バッファ４０４内のデータを全て処理し終えたら、表示プロセス１６は受信プロセス１５へデータ要求を送信する。なお、蓄積プロセス１７に関しては、動作に変更はなく、前述の実施の形態１の通りデータを蓄積する。これにより、採取したデータの転送回数を少なくすることが可能となり、通信負荷を減少することが可能となる。
【００７１】
【発明の効果】
本発明によれば、監視対象の計算機から採取された性能データを利用するモニタ用のプロセス（表示プロセスあるいは蓄積プロセス）の数が増大しても、監視対象の計算機自体の負荷はほとんど増加することがない。
【図面の簡単な説明】
【図１】本発明による並列計算機性能モニタリングシステムの全体構成図。
【図２】並列計算機性能モニタリングシステムにおける採取プロセスのモジュール関連図。
【図３】並列計算機性能モニタリングシステムにおける収集プロセスのモジュール関連図。
【図４】並列計算機性能モニタリングシステムにおける受信プロセスのモジュール関連図。
【図５】並列計算機性能モニタリングシステムにおける表示プロセス／蓄積プロセスのモジュール関連図。
【図６】図１のシステムで採用される並列計算機性能モニタリング方法の処理手順を示すフローチャート。
【図７】性能データの表示画面の一例を示す図。
【図８】性能データの表示画面の他の例を示す図。
【図９】（ａ）は、蓄積プロセスが記憶装置へ蓄積するブロックのヘッダレコードの形式の例を示す図。
（ｂ）は、蓄積プロセスが記憶装置へ蓄積するブロックの通常のデータレコードの形式の例を示す図。
（ｃ）は、蓄積プロセスが記憶装置へ蓄積するブロックのブロック終了レコードの形式の例を示す図。
（ｄ）は、蓄積プロセスが記憶装置へ蓄積するファイルの形式の例を示す図。
【図１０】蓄積されたデータの再表示処理手順を示すフローチャート。
【図１１】蓄積されたログデータの表示機能を制御するための制御画面の一例を示す図。
【図１２】本発明による性能モニタリング方法を適用する並列計算機の全体構成図。
【図１３】本発明による性能モニタリング方法を適用する他の並列計算機の全体構成図。
【図１】
0003881739.tif 000002
【図２】
0003881739.tif 000003
【図３】
0003881739.tif 000004
【図４】
0003881739.tif 000005
【図５】
0003881739.tif 000006
【図６】
0003881739.tif 000007
【図７】
0003881739.tif 000008
【図８】
0003881739.tif 000009
【図９】
0003881739.tif 000010
【図１０】
0003881739.tif 000011
【図１１】
0003881739.tif 000012
【図１２】
0003881739.tif 000013
【図１３】
0003881739.tif 000014