(57)【要約】【課題】極めて短時間に生じる挙動変化を見逃さずに検出することができるようにする。【解決手段】アドレスデータ格納手段２により、所定のサンプリング周期でＣＰＵ１が実行しているアドレスが取得され、取得したアドレスに取得時刻が関連づけられ、アドレスデータとしてアドレス記録テーブル３に時系列で格納される。次に、実行処理判断手段５により、アドレスデータを取得した際に実行されていた処理の名称が判断され、アドレス記録テーブル３内のアドレスデータに処理の名称が設定される。その後、任意の解析単位時間を指定した解析要求が入力されると、解析手段６により、アドレス記録テーブル３に格納されたアドレスデータの処理名が、指定された解析単位時間ごとに集計され、解析単位時間ごとの実行した処理の内訳が解析される。そして、表示手段７により、解析手段６の解析結果８が表示される。【選択図】図１
2007213205.tif 000002
【特許請求の範囲】
【請求項１】
計算機システムの処理内容を分析するためのシステム分析プログラムにおいて、
コンピュータを、
所定のサンプリング周期でＣＰＵが実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブルに時系列で格納するアドレスデータ格納手段、
前記ＣＰＵで実行される処理の名称と、前記処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録された処理アドレス対応テーブルを参照し、前記アドレス記録テーブルに格納された前記アドレスデータのアドレスに基づき、前記アドレスデータを取得した際に実行されていた処理の名称を判断し、前記アドレス記録テーブル内のアドレスデータに処理の名称を設定する実行処理判断手段、
任意の解析単位時間を指定した解析要求が入力されると、前記アドレス記録テーブルに格納された前記アドレスデータの処理名を、指定された前記解析単位時間ごとに集計し、前記解析単位時間ごとの実行した処理の内訳を解析する解析手段、
前記解析手段の解析結果を表示する表示手段、
として機能させることを特徴とするシステム分析プログラム。
【請求項２】
前記解析手段は、解析時間帯ごとの処理の実行内訳を比較するグラフを生成することを特徴とする請求項１記載のシステム分析プログラム。
【請求項３】
前記アドレスデータ格納手段は、
複数のノードで構成される並列計算機システムの前記ノードそれぞれに設けられた実行アドレス取得手段と、
前記ノードそれぞれの前記アドレス取得手段が取得したアドレスを収集し、前記ノードごとの前記アドレス記録テーブルに格納するアドレスデータ収集手段と、
で構成されることを特徴とする請求項１記載のシステム分析プログラム。
【請求項４】
前記解析手段は、構成するノード数が異なる複数のグループそれぞれに関して、同様の処理を実行させた場合の実行時間を比較するグラフを生成することを特徴とする請求項３記載のシステム分析プログラム。
【請求項５】
前記解析手段は、前記ノードの統計処理によるグループ化を行い、解析時間帯ごとの処理の実行内訳をグループごとに解析することを特徴とする請求項３記載のシステム分析プログラム。
【請求項６】
計算機システムの処理内容を分析するためのシステム分析装置において、
所定のサンプリング周期でＣＰＵが実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブルに時系列で格納するアドレスデータ格納手段と、
前記ＣＰＵで実行される処理の名称と、前記処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録された処理アドレス対応テーブルを参照し、前記アドレス記録テーブルに格納された前記アドレスデータのアドレスに基づき、前記アドレスデータを取得した際に実行されていた処理の名称を判断し、前記アドレス記録テーブル内のアドレスデータに処理の名称を設定する実行処理判断手段と、
任意の解析単位時間を指定した解析要求が入力されると、前記アドレス記録テーブルに格納された前記アドレスデータの処理名を、指定された前記解析単位時間ごとに集計し、前記解析単位時間ごとの実行した処理の内訳を解析する解析手段と、
前記解析手段の解析結果を表示する表示手段と、
を有することを特徴とするシステム分析装置。
【請求項７】
計算機システムの処理内容をコンピュータにより分析するためのシステム分析方法において、
アドレスデータ格納手段が、所定のサンプリング周期でＣＰＵが実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブルに時系列で格納し、
実行処理判断手段が、前記ＣＰＵで実行される処理の名称と、前記処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録された処理アドレス対応テーブルを参照し、前記アドレス記録テーブルに格納された前記アドレスデータのアドレスに基づき、前記アドレスデータを取得した際に実行されていた処理の名称を判断し、前記アドレス記録テーブル内のアドレスデータに処理の名称を設定し、
解析手段が、任意の解析単位時間を指定した解析要求が入力されると、前記アドレス記録テーブルに格納された前記アドレスデータの処理名を、指定された前記解析単位時間ごとに集計し、前記解析単位時間ごとの実行した処理の内訳を解析し、
表示手段が、前記解析手段の解析結果を表示する、
ことを特徴とするシステム分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は並列計算機システムを管理するためのシステム分析プログラム、システム分析装置、およびシステム分析方法に関し、特に運用中の並列計算機システムで発生した障害等を検出するためのシステム分析プログラム、システム分析装置、およびシステム分析方法に関する。
【背景技術】
【０００２】
Ｒ＆Ｄ（Research and Development）、ＨＰＣ（High Performance Computing）、バイオインフォマティックスなどの多くの分野において、並列計算機システムの利用が進んでいる。ここで、「並列計算機」は、ネットワークにより複数台の計算機を接続したコンピュータシステムである。並列計算機システムには、クラスタシステムやグリッドコンピューティングシステムを含むものとする。なお、並列計算機システムを構成する各コンピュータはノードと呼ばれる。
【０００３】
並列計算機システムの実例として、（１）高速なネットワークと高性能ＰＣ（パーソナルコンピュータ）で構成され、主として単一の並列プログラムを実行する「ＰＣクラスタシステム」（以下、「クラスタ」と略記）や、（２）複数のコンピュータを１台の仮想計算機と見立てて、利用者が必要な計算能力や記憶容量を取り出して使う「グリッドコンピューティングシステム」（以下、「グリッド」と略記）などが挙げられる。
【０００４】
このような多数台の計算ノードで構成される並列計算機システム上では、システムの動作状況を管理するために「プログラムプロファイリング」（タイマー等によるサンプリングを指す。以下、「プロファイリング」と略記）が行われる。
【０００５】
プロファイリングを行うソフトウェアは、例えば、対象プログラムについて、プログラム開始から終了まで、システムの性能データを測定する。また、プログラム実行中の任意の時間区間のみ測定する場合もある。
【０００６】
図１３は、従来のプロファイリングの状況を示す図である。この図では、１ｍｓごとにサンプリングを行い、その時点でのプログラムの実行中のアドレスを記録している。アドレス記録テーブル９１１は、関数ごとに何回サンプリングされたかを示す数値を格納する記憶領域である。
【０００７】
アドレス記録テーブル９１１には、関数名、アドレス範囲、およびサンプリングカウントの欄が設けられている。関数名の欄には、実行される関数の名称が設定される。アドレス範囲の欄には、関数が実行される際に指定されるメモリアドレスの範囲が設定される。サンプリングカウントの欄には、関数ごとに、サンプリングによってアドレスが採取された回数が設定される。
【０００８】
この例では、１０回サンプリングが行われており、サンプリング時のアドレスは、それぞれ「０ｘ０５」、「０ｘ１１」、「０ｘ１３」、「０ｘ２３」、「０ｘ１１」、「０ｘ２３」、「０ｘ２３」、「０ｘ２３」である。プロファイリング機能では、サンプリング時にＣＰＵ（Central Processing Unit）が実行しているアドレスを検出する。さらに、プロファイリング機能では、アドレス記録テーブル９１１を参照し、検出したアドレスがどの関数のアドレス範囲に属するのかを判断する。そして、プロファイリング機能は、検出したアドレスが属する関数のサンプリングカウントをカウントアップする。
【０００９】
その結果、１０秒間のサンプリングによって、関数「Func A」が１回、関数「Func B」が３回、関数「Func C」が４回、関数「Func D」が０回というサンプリングカウントが得られる。このような測定結果により、実行時間の最も長いものが関数「Func C」（全体の５０％）であることが分かる。
【００１０】
並列計算機システムを管理する場合には、図１３に示したような方法で各ノードのプロファイル結果を取得する。そして、ノードごとに集計処理等が行われる。例えば、並列計算機を構成する各プロセッサの実計算時間等の性能情報を取得し、円グラフやレーダーチャートで表示する技術がある（特許文献１参照）。
【００１１】
また、各計算ノードのデータを統計処理して分類することにより、性能評価において重要な特徴を抽出しようとする研究も行われている（非特許文献１参照）。
【特許文献１】特開平１０−６３５５０号公報
【非特許文献１】Dong H. Ahn and Jeffrey S. Vetter,“Scalable analysis techniques for microprocessor performance counter metrics”,Proc.SC 2002,2002
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、特許文献１に示したような既存の記述をクラスタやグリッドなどの多数台で構成される計算機システムに適用した場合、以下に挙げる２点の課題がある。
１．プログラム全体を１つの測定対象としてプロファイリングの結果を出力する。従って、プログラム実行中に発生する微細な（極めて短い時間で生じる）挙動変化が全データに対して相対的に小さく見える。そのため分析者が微細な挙動変化を捕捉できない。並列処理においては、この種の変化が全体性能を低下させる要因となり得る。
【００１３】
２．採取されるプロファイルデータが計算ノードの台数に比例して増大する。プロファイリングにより分析を行う際、当該データを、計算ノード間で相互比較してボトルネックとなる処理を抽出する必要がある。しかし、数千ノードを対象として、微細な挙動変化を検出するための詳細なプロファイリングを行うことは実質的に不可能である。
【００１４】
なお、非特許文献１は、プロファイリングデータの取得技術に関しては言及されていない。そのため、非特許文献１の技術は、上記２点の課題の解決には寄与しない。
本発明はこのような点に鑑みてなされたものであり、極めて短時間に生じる挙動変化を見逃さずに検出することができるシステム分析プログラム、システム分析装置、およびシステム分析方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明では上記課題を解決するために、図１に示すようなシステム分析プログラムが提供される。本発明に係るシステム分析プログラムは、計算機システムの処理内容を分析するために、図１に示す機能をコンピュータに実行させることができる。
【００１６】
アドレスデータ格納手段２は、所定のサンプリング周期でＣＰＵ１が実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブル３に時系列で格納する。実行処理判断手段５は、ＣＰＵ１で実行される処理の名称と、処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録された処理アドレス対応テーブル４を参照し、アドレス記録テーブル３に格納されたアドレスデータのアドレスに基づき、アドレスデータを取得した際に実行されていた処理の名称を判断し、アドレス記録テーブル３内のアドレスデータに処理の名称を設定する。解析手段６は、任意の解析単位時間を指定した解析要求が入力されると、アドレス記録テーブル３に格納されたアドレスデータの処理名を、指定された解析単位時間ごとに集計し、解析単位時間ごとの実行した処理の内訳を解析する。表示手段７は、解析手段６の解析結果８を表示する。
【００１７】
このようなシステム分析プログラムを実行するコンピュータによれば、アドレスデータ格納手段２により、所定のサンプリング周期でＣＰＵ１が実行しているアドレスが取得され、取得したアドレスに取得時刻が関連づけられ、アドレスデータとしてアドレス記録テーブル３に時系列で格納される。次に、実行処理判断手段５により、アドレスデータを取得した際に実行されていた処理の名称が判断され、アドレス記録テーブル３内のアドレスデータに処理の名称が設定される。その後、任意の解析単位時間を指定した解析要求が入力されると、解析手段６により、アドレス記録テーブル３に格納されたアドレスデータの処理名が、指定された解析単位時間ごとに集計され、解析単位時間ごとの実行した処理の内訳が解析される。そして、表示手段７により、解析手段６の解析結果８が表示される。
【００１８】
また、上記課題を解決するために、計算機システムの処理内容を分析するためのシステム分析装置において、所定のサンプリング周期でＣＰＵが実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブルに時系列で格納するアドレスデータ格納手段と、前記ＣＰＵで実行される処理の名称と、前記処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録された処理アドレス対応テーブルを参照し、前記アドレス記録テーブルに格納された前記アドレスデータのアドレスに基づき、前記アドレスデータを取得した際に実行されていた処理の名称を判断し、前記アドレス記録テーブル内のアドレスデータに処理の名称を設定する実行処理判断手段と、任意の解析単位時間を指定した解析要求が入力されると、前記アドレス記録テーブルに格納された前記アドレスデータの処理名を、指定された前記解析単位時間ごとに集計し、前記解析単位時間ごとの実行した処理の内訳を解析する解析手段と、前記解析手段の解析結果を表示する表示手段と、を有することを特徴とするシステム分析装置が提供される。
【００１９】
このようなシステム分析装置によれば、アドレスデータ格納手段により、所定のサンプリング周期でＣＰＵが実行しているアドレスが取得され、取得したアドレスに取得時刻が関連づけられ、アドレスデータとしてアドレス記録テーブルに時系列で格納される。次に、実行処理判断手段により、ＣＰＵで実行される処理の名称と、アドレス記録テーブルに格納されたアドレスデータのアドレスに基づき、アドレスデータを取得した際に実行されていた処理の名称が判断され、アドレス記録テーブル内のアドレスデータに処理の名称が設定される。その後、任意の解析単位時間を指定した解析要求が入力されると、解析手段により、アドレス記録テーブルに格納されたアドレスデータの処理名が、指定された解析単位時間ごとに集計され、解析単位時間ごとの実行した処理の内訳が解析される。そして、表示手段により、解析手段の解析結果が表示される。
【００２０】
また、上位課題を解決するために、計算機システムの処理内容をコンピュータにより分析するためのシステム分析方法において、アドレスデータ格納手段が、所定のサンプリング周期でＣＰＵが実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブルに時系列で格納し、実行処理判断手段が、前記ＣＰＵで実行される処理の名称と、前記処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録された処理アドレス対応テーブルを参照し、前記アドレス記録テーブルに格納された前記アドレスデータのアドレスに基づき、前記アドレスデータを取得した際に実行されていた処理の名称を判断し、前記アドレス記録テーブル内のアドレスデータに処理の名称を設定し、解析手段が、任意の解析単位時間を指定した解析要求が入力されると、前記アドレス記録テーブルに格納された前記アドレスデータの処理名を、指定された前記解析単位時間ごとに集計し、前記解析単位時間ごとの実行した処理の内訳を解析し、表示手段が、前記解析手段の解析結果を表示する、ことを特徴とするシステム分析方法が提供される。
【００２１】
このようなシステム分析方法によれば、アドレスデータ格納手段により、所定のサンプリング周期でＣＰＵが実行しているアドレスが取得され、取得したアドレスに取得時刻が関連づけられ、アドレスデータとしてアドレス記録テーブルに時系列で格納される。次に、実行処理判断手段により、ＣＰＵで実行される処理の名称と、アドレス記録テーブルに格納されたアドレスデータのアドレスに基づき、アドレスデータを取得した際に実行されていた処理の名称が判断され、アドレス記録テーブル内のアドレスデータに処理の名称が設定される。その後、任意の解析単位時間を指定した解析要求が入力されると、解析手段により、アドレス記録テーブルに格納されたアドレスデータの処理名が、指定された解析単位時間ごとに集計され、解析単位時間ごとの実行した処理の内訳が解析される。そして、表示手段により、解析手段の解析結果が表示される。
【発明の効果】
【００２２】
本発明では、ＣＰＵが実行しているアドレスを取得し時系列で格納するようにしたため、任意の解析単位時間ごとに実行した処理の推移を解析することができる。その結果、非常に短時間で発生する問題を検出することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。本実施の形態では、任意の解析単位時間ごとに実行した処理の推移を解析するため、アドレスデータ格納手段２、アドレス記録テーブル３、処理アドレス対応テーブル４、実行処理判断手段５、解析手段６、および表示手段７が設けられる。
【００２４】
アドレスデータ格納手段２は、所定のサンプリング周期（例えば、１ｍｓ）でＣＰＵ１が実行しているアドレスを取得する。そして、アドレスデータ格納手段２は、取得したアドレスに取得時刻を関連づけて、アドレスデータとしてアドレス記録テーブル３に時系列で格納する。
【００２５】
処理アドレス対応テーブル４は、ＣＰＵ１で実行される処理の名称と、処理を実行する際にプログラム上で指定されるメモリアドレスとが関連づけて登録されている。処理アドレス対応テーブル４では、例えば１つの関数を１つの処理として、その関数が実行されるときにＣＰＵ１で指定されるアドレスの領域が、あらかじめ処理アドレス対応テーブル４に設定される。
【００２６】
実行処理判断手段５は、処理アドレス対応テーブル４を参照し、アドレス記録テーブル３に格納されたアドレスデータのアドレスに基づき、アドレスデータを取得した際に実行されていた処理の名称を判断する。さらに、実行処理判断手段５は、アドレス記録テーブル３内のアドレスデータに処理の名称を設定する。
【００２７】
解析手段６は、任意の解析単位時間（例えば、１０ｓ）を指定した解析要求が入力されると、アドレス記録テーブル３に格納されたアドレスデータの処理名を、指定された解析単位時間ごとに集計する。そして、解析手段６は、解析単位時間ごとの実行した処理の内訳を解析する。
【００２８】
表示手段７は、解析手段６の解析結果８を表示する。例えば、表示手段７は、解析単位時間ごとの棒グラフによって、各解析時間内で実行された処理に費やした時間の割合を、色分けして表示する。
【００２９】
このような構成によれば、アドレスデータ格納手段２により、所定のサンプリング周期でＣＰＵ１が実行しているアドレスが取得され、取得したアドレスに取得時刻が関連づけられ、アドレスデータとしてアドレス記録テーブル３に時系列で格納される。次に、実行処理判断手段５により、アドレスデータを取得した際に実行されていた処理の名称が判断され、アドレス記録テーブル３内のアドレスデータに処理の名称が設定される。
【００３０】
その後、任意の解析単位時間を指定した解析要求が入力されると、解析手段６により、アドレス記録テーブル３に格納されたアドレスデータの処理名が、指定された解析単位時間ごとに集計され、解析単位時間ごとの実行した処理の内訳が解析される。そして、表示手段７により、解析手段６の解析結果８が表示される。
【００３１】
このように、ＣＰＵ１が実行しているアドレスを取得し、そのアドレスを時系列で格納するようにしたため、その後、任意の解析単位時間ごとに実行した処理の内訳を解析することができる。その結果、任意の解析単位時間ごとの処理の内容の内訳が判断できるようになる。すなわち、通常のプロファイラが見逃しがちな異常を発見できる。例えば、解析単位時間を非常に短時間に指定すれば、極めて短い時間で発生する問題までも検出することが可能となる。
【００３２】
ところで、解析手段６における解析処理に関しては、非特許文献１で示されたような、各ノードのデータを統計処理して分類することにより、性能評価において重要な特徴を抽出する処理を適用することができる。さらに、図１に示した機能は、多数台のノードで構成されるクラスタシステムの解析に利用できる。すなわち、クラスタシステム上で、プログラムプロファイリングと統計処理を組み合わせることにより、プログラムの並列化に伴う性能ボトルネックの検出や異常動作を行っているノードの迅速な発見が可能となる。
【００３３】
なお、測定対象となるコンピュータ（ノード）と解析を行うコンピュータとは、同じコンピュータであってもよく、個別のコンピュータであってもよい。例えば、クラスタシステムの各ノードの性能分析を行う場合、クラスタを構成するノードとは別に性能分析を行うコンピュータが用意される。以下、クラスタシステムの性能の評価分析を、クラスタシステムにネットワークで接続された管理サーバで行う場合を例に採り、実施の形態を具体的に説明する。
【００３４】
図２は、本実施の形態のシステム構成例を示す図である。クラスタシステム２００は、複数のノード２１０，２２０，２３０，・・・で構成されている。ノード２１０，２２０，２３０，・・・には、ネットワーク１０を介して管理サーバ１００が接続されている。管理サーバ１００は、クラスタシステム２００から性能データを収集して、統計処理を行う。
【００３５】
このように管理サーバ１００は、多数台のノード２１０，２２０，２３０，・・・を対象として時系列プロファイリング測定を行う。すなわち、全てのノード２１０，２２０，２３０，・・・の実行アドレスを管理サーバ１００で収集し、自動解析を行う。
【００３６】
図３は、本実施の形態に用いる管理サーバのハードウェア構成例を示す図である。管理サーバ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００３７】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３８】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３９】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、管理サーバ１００のハードウェア構成のみが示されているが、各ノード２１０，２２０，２３０，・・・も同様のハードウェアで実現できる。
【００４１】
図４は、性能分析を行うための機能を示すブロック図である。図４には、ノード２１０と管理サーバ１００との機能が示されている。
ノード２１０は、実行アドレス取得部２１１、アドレスデータ記憶部２１２、および関数アドレス対応テーブル２１３を有している。
【００４２】
実行アドレス取得部２１１は、管理サーバ１００からサンプリング要求を受け取ると、そのアドレスデータ取得要求で指示された期間（サンプリング期間）だけ、ノード２１０のＣＰＵが実行しているアドレスを所定間隔で取得する。なお、サンプリング要求には、サンプリング期間やサンプリング周期を示す情報が含まれる。ここで、ＣＰＵが実行しているアドレスとは、ＣＰＵ内のプログラムカウンタと呼ばれるレジスタに設定されている値である。
【００４３】
具体的には、実行アドレス取得部２１１は、サンプリングアドレスを時系列で記録するためのアドレスデータ記憶部２１２を、メインメモリ（ＲＡＭ）上に確保する。サンプリング周期は、例えば、１ｍｓである。実行アドレス取得部２１１は、サンプリング周期ごとにノード２１０のＯＳに割り込みをかけ、ＯＳの割り込みハンドラがそのときのプログラムの走行アドレスを記録する。その際、実行アドレス取得部２１１は、取得したアドレスに、取得時刻を示す時刻情報（タイムスタンプ）を付加する。
【００４４】
サンプリング期間終了後、実行アドレス取得部２１１は、メインメモリ上のアドレスデータ記憶部２１２の内容をＨＤＤ上のファイルに書き出し保存するとともに、そのファイルを管理サーバ１００のアドレスデータ収集部１１０に送信する。そして、実行アドレス取得部２１１は、ノード２１０上で管理対象となるプログラムの関数とそのアドレス区間を記録した関数アドレス対応テーブル２１３（一般に「シンボルテーブルファイル」とも呼ばれる）を、ＨＤＤに格納する。
【００４５】
アドレスデータ記憶部２１２は、実行アドレス取得部２１１が取得したアドレスを時系列で記憶する記憶領域である。関数アドレス対応テーブル２１３は、各ノード２１０，２２０，２３０，・・・で実行される関数と、その関数を実行する際のアドレス範囲とが対応付けて登録されたデータテーブルである。
【００４６】
管理サーバ１００は、アドレスデータ収集部１１０、実行関数判断部１３０、時系列アドレス記憶部１４０、統計処理部１５０、および解析結果表示部１６０を有している。
アドレスデータ収集部１１０は、ユーザからの操作入力に応答して、各ノード２１０，２２０，２３０，・・・に対してサンプリング要求を送信する。なお、サンプリング要求で指定するべきサンプリング期間やサンプリング間隔は、ユーザからの操作入力によって指定される。また、アドレスデータ収集部１１０は、各ノード２１０，２２０，２３０，・・・のアドレスデータ記憶部に蓄積されたアドレスデータを収集し、時系列アドレス記憶部１４０内のノードごとのアドレス記録テーブル１４１に記録する。
【００４７】
実行関数判断部１３０は、関数アドレス対応テーブル２１３を参照し、アドレスデータ収集部１１０が収集したアドレスデータに基づいて、そのアドレスデータが採取されたときにノードで実行されていた関数を判断する。そして、実行関数判断部１３０は、アドレス記録テーブル１４１，１４２，１４３，・・・内の各アドレスデータに対して、アドレスに対応する関数の識別情報を格納する。すなわち、実行関数判断部１３０は、アドレス記録テーブル１４１，１４２，１４３，・・・と関数アドレス対応テーブル２１３とを組み合わせることで、時系列でプログラムの走行していた関数履歴を生成する。このようにして生成された時系列データは任意の単位時間に区切って集計処理を行うことができる。
【００４８】
時系列アドレス記憶部１４０は、アドレスデータと関数との対応関係を記憶する記憶装置である。時系列アドレス記憶部１４０には、ノード２１０，２２０，２３０，・・・ごとのアドレス記録テーブル１４１，１４２，１４３，・・・が設けられている。アドレス記録テーブル１４１，１４２，１４３，・・・には、対応するノードから採取されたアドレスデータと、そのアドレスデータに応じた関数の識別情報との組（実行関数情報）が時系列で登録される。
【００４９】
統計処理部１５０は、時系列アドレス記憶部１４０内のアドレス記録テーブル１４１，１４２，１４３，・・・に格納されたノードごとの実行関数情報に基づいて、関数の実行状況に関する統計処理を行う。具体的には、統計処理部１５０は、ユーザから統計処理の際の単位時間の指定を受け付け、指定された単位時間ごとの関数の実行状況を解析する。
【００５０】
例えば、統計処理部１５０は、複数台のノード２１０，２２０，２３０，・・・それぞれで測定した時系列のアドレスデータを、合計、平均、最大、最小、その他の統計処理を行うことによってクラスタシステム２００全体のプロファイル結果を時間変化に対して評価することができる。これにより、クラスタシステム２００上で、プログラムの挙動が時間が経過するのに対してどのように変化したかを確認することができる。
【００５１】
解析結果表示部１６０は、統計処理部１５０の解析結果をモニタ１１の画面に表示する。
このような機能の管理サーバ１００により、クラスタシステム２００の動作状況を任意の時間間隔ごとに集計して、並列化効果を解析することができる。以下、図４に示す構成に基づく、クラスタシステム２００の動作状況解析処理の内容を説明する。
【００５２】
図５は、動作状況解析の手順を示すシーケンス図である。以下、図５に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］ユーザは、管理サーバ１００のアドレスデータ収集部１１０に対して、各ノード２１０，２２０，２３０，・・・のアドレスデータの収集指示を入力する。すると、アドレスデータ収集部１１０は、各ノード２１０，２２０，２３０，・・・に対して、サンプリング要求を出力する。この例では、１ｍｓごとのサンプリングを指示したものとする。
【００５３】
［ステップＳ１２］サンプリング要求を受け取った各ノード２１０では、実行アドレス取得部２１１がＣＰＵで実行されているアドレスの採取を開始する。実行アドレス取得部２１１は、採取したアドレスに対して時刻情報に対応づけてアドレスデータ記憶部２１２に格納する。同様に、他のノード２２０，２３０，・・・においても、アドレスが採取される。アドレスの採取は、サンプリング要求によって指定された期間行われる。
【００５４】
［ステップＳ１３］アドレスデータ収集部１１０は、サンプリング期間だけ待機する。
［ステップＳ１４］アドレスデータ収集部１１０は、サンプリング期間が終了すると、各ノード２１０，２２０，２３０，・・・に対して、アドレスデータを要求する。
【００５５】
［ステップＳ１５］各ノード２１０では、実行アドレス取得部２１１がアドレスデータの要求を受け付ける。同様に、他のノード２２０，２３０，・・・でもアドレスデータの要求が受け付けられる。
【００５６】
［ステップＳ１６］アドレスデータの要求を受け取ったノード２１０では、実行アドレス取得部２１１が、管理サーバ１００に対して採取したアドレスデータを送信する。同様に、他のノード２２０，２３０，・・・からも、管理サーバ１００に対してアドレスデータが送信される。
【００５７】
［ステップＳ１７］管理サーバ１００では、各ノード２１０，２２０，２３０，・・・から送られたアドレスデータをアドレスデータ収集部１１０が受け取る。そして、アドレスデータ収集部１１０は、収集したアドレスデータを時系列アドレス記憶部１４０内のアドレス記録テーブル１４１，１４２，１４３，・・・に格納する。
【００５８】
［ステップＳ１８］その後、実行関数判断部１３０は、アドレス記録テーブル１４１，１４２，１４３，・・・内の各アドレスデータに対して、そのアドレスデータに対応する関数の識別情報を設定する。
【００５９】
［ステップＳ１９］統計処理部１５０は、アドレスデータを解析し、グラフ等による解析結果を作成する。
［ステップＳ２０］解析結果表示部１６０は、統計処理部１５０による解析結果を表示する。
【００６０】
以上のような手順で、クラスタシステム２００の動作が解析される。以下、図５に示した処理の内容を具体的に説明する。
図６は、アドレス記録テーブルへの情報設定状況を示す図である。図６に示すように、ノード２１０では、１ｍｓごとにサンプリングが行われ、その時点でＣＰＵが実行しているアドレスが記録されている。アドレスデータ収集部１１０は、これらのアドレスと時刻情報とを収集し、アドレス記録テーブル１４１に設定する。
【００６１】
アドレス記録テーブル１４１には、時刻とアドレスとの欄が設けられている。時刻の欄には、アドレスが採取された時刻を示す時刻情報が設定される。アドレスの欄には、採取されたアドレスが設定される。この例では、１ｍｓごとに１０回サンプリングが行われており、サンプリング時のアドレスは、それぞれ「０ｘ０５」、「０ｘ１１」、「０ｘ１３」、「０ｘ２３」、「０ｘ１１」、「０ｘ２３」、「０ｘ２３」、「０ｘ２３」である。
【００６２】
このようなアドレス記録テーブル１４１に対して、実行関数判断部１３０が、関数名を付加する。その際、実行関数判断部１３０は、関数アドレス対応テーブル２１３を参照して、アドレスに対応する関数（そのアドレスに対してＣＰＵがアクセスしているときに実行されている関数）を判断する。
【００６３】
関数アドレス対応テーブル２１３には、関数名とアドレス範囲との欄が設けられている。関数名の欄には、各ノードで実行される関数が設定される。アドレス範囲の欄には、関数を実行するためのプログラムで使用されるメモリ空間上でのアドレス範囲が設定される。例えば、関数「Func A」のアドレス範囲は「0x00」−「0x10」である。すなわち、ＣＰＵが「Func A」を実行している間は、「0x00」−「0x10」の範囲内のアドレスから命令が読み出されている。
【００６４】
図５の例では、時刻「1ms」の実行アドレスは「０ｘ０５」であり、関数「Func A」が実行されている。時刻「2ms」の実行アドレスは「０ｘ１１」であり、関数「Func B」が実行されている。時刻「3ms」の実行アドレスは「０ｘ１３」であり、関数「Func B」が実行されている。時刻「4ms」の実行アドレスは「０ｘ２３」であり、関数「Func C」が実行されている。時刻「5ms」の実行アドレスは「０ｘ１１」であり、関数「Func B」が実行されている。以降、時刻「6ms」、「7ms」、「8ms」の実行アドレスは共に「０ｘ２３」であり、関数「Func C」が実行されている。
【００６５】
このように、サンプリングされたアドレスを時系列で記録することで、統計処理部１５０において任意の時間間隔でのデータ解析が可能となる。すなわち、測定後に「任意の時間間隔」での集計処理が可能となる。例えば、プログラム実行全体を以下のような４つの領域に分割して評価することができる（tはサンプリングの時刻）。
１．0ms < t <= 2ms
この領域では、Func A : Func B : Func C : Func D = 50% : 50% : 0% : 0%
２．2ms < t <=5ms
この領域では、Func A : Func B : Func C : Func D = 0% : 50% : 50% : 0%
３．4ms < t <=7ms
この領域では、Func A : Func B : Func C : Func D = 0% : 50% : 50% : 0%
４．6ms < t <=8ms
この領域では、Func A : Func B : Func C : Func D = 0% : 0% : 100% : 0%
このように、任意の時間間隔でのプログラム内部の関数別実行時間内訳を知ることができる。これにより、プログラム実行全体の中で動作内容の変化を詳細に捉えることができる。
【００６６】
なお、図６では、説明を分かりやすくするために関数が４つしか実行されていないが、実際のクラスタシステムでは、多数の関数が実行される。以下、ノード数がｎ（ｎは自然数）、実行される関数の数がＮ（Ｎは自然数）の場合に、１ｍｓのサンプリングを行った例を示す。
【００６７】
図７は、統計処理部におけるデータ解析状況例を示す図である。統計処理部１５０は、各ノードに対応するアドレス記録テーブルを解析し、１０秒ごとの各関数の実行時間を計算する。この際、統計処理部１５０は、関数に対応するアドレスデータが１回採取されるごとに、その関数の処理が１ｍｓ実行されたものと換算する。そして、統計処理部１５０は、ノードごとの各関数の実行時間を１０秒ごとに集計し、集計結果テーブル１５１，・・・，１５ｎに集計結果を設定する。例えば、集計結果テーブル１５１を参照すると、「ノード＃１」のノードでは、０−１０秒の間に、関数名「Func #1」の関数が１００ｍｓ実行されている。
【００６８】
ここで、集計結果テーブル１５１，・・・，１５ｎからは、それぞれＮ×時間分割数に相当するデータが得られる。そのデータがノード数（ｎ）分得られることで、Ｎ×時間分割数×ｎのデータが得られる。得られたデータのデータ・クラスタリング分析を行う。
【００６９】
データ・クラスタリング分析とは、データの構造が似ているものを同じグループ（クラスタ）にまとめるデータ分析を行う手法である。分類するグループ数は、ユーザが任意に指定することができる。データ・クラスタリング分析手法には、例えば、Complete法と呼ばれる手法がある。これは、２つのクラスタそれぞれの中から１個ずつデータを選んでデータ間の距離を求め、それらの中で、最も遠いデータ間の距離をこの２つのクラスタ間の距離とする方法である。データ間の距離は、データ構造が類似するほど小さな値となる。
【００７０】
このような分析を行うことで、異常ノード等を発見することが可能となる。例えば、ほとんどのノードにおいて、関数名「Func #1」の関数が最も長く実行されている状況下で、１つのノードのみが関数名「Func #2」の関数が最も長く実行されている時間帯があった場合、そのノードの動作が異常であると判断できる。
【００７１】
しかも、本実施の形態では、採取したアドレスデータを収集しているため、解析時の時間分割数を任意に指定することができる。すなわち、時間分割数を多くすれば、関数の実行時間を集計する際の時間間隔が短くなる。その結果、非常に短時間で発生する異常までも検出可能となる。
【００７２】
このような異常の検出処理は、統計処理（クラスタ分析）を用いることで自動化することが可能である。統計処理部１５０が異常状況を検出して、解析結果表示部１６０が異常内容を報告することができる。このとき、問題の時間区間に加え、そのときのシステム全体の挙動変化を報告することができる。
【００７３】
以下、統計処理例について説明する。
図８は、クラスタ分析を利用した統計処理の例を示す図である。一般にクラスタシステム２００上で動作するアプリケーションは科学技術系アプリケーションである。その場合、各ノード２１０，２２０，２３０，・・・の動作はほとんど同じと推定することができる。換言すると、各ノード２１０，２２０，２３０，・・・の動作がほとんど同じになるようにプログラムの最適化が行われている。したがって、得られた時系列データはほとんど同様結果を示すと期待される。
【００７４】
ここで、各ノード２１０，２２０，２３０，・・・のアドレス記録テーブル１４１，１４２，１４３，・・・の全てを入力として、統計処理部１５０が統計処理（クラスタ分析）を行う。これにより、各ノード２１０，２２０，２３０，・・・の動作結果を任意の時間単位で分類できる。図８の例では、「グループ＃１」と「グループ＃２」との２つのグループに分類されている。「グループ＃１」には１つのノードのみが含まれ、それ以外のノードは全て「グループ＃２」に含まれている。そこで、統計処理によって「グループ＃１」に含まれるノードの解析結果２１と、「グループ＃２」に含まれるノードの解析結果３１，３２，３３，・・・が生成される。
【００７５】
図９は、「グループ＃１」内のノードの解析結果の例を示す図である。この例は、１０秒単位で集計および分類した場合の「グループ＃１」に含まれるノードの解析結果２１である。各ノードでの関数ごとの実行時間がグラフによって示されている。
【００７６】
図９の例で、解析単位時間ごと関数実行時間の内訳を比較すると、１０秒から２０秒間にだけ、他と異なる関数が実行されていることが分かる。すなわち、該当するノードの処理性能が設計通りで無い場合、１０秒〜２０秒の間にのみ実行されている関数が原因となっている可能性がある。
【００７７】
ここで、図９では関数の区別をグラフ中の網掛の違いで示しているが、色分けによって関数を区別できるようにしてもよい。
また、同一時間帯の関数実行時間の内訳を、異なるグループ間で比較することによっても、特異な処理を検出できる。
【００７８】
図１０は、「グループ＃２」内のノードの解析結果の例を示す図である。この例は、１０秒単位で集計および分類した場合の「グループ＃２」に含まれるノードの解析結果３１である。「グループ＃２」内の他の解析結果３２，３３，・・・は、解析結果３１とほとんど同じ内容となる。
【００７９】
図９と図１０とに示した解析結果２１，３１を比較すると、「グループ＃１」のノードのみ、動作が他と異なることがわかる。すなわち、解析結果２１では、「問題プロセス：関数１」と「問題プロセス：関数３」の処理が、１０秒〜２０秒の間に発生していることがわかる。
【００８０】
また、階層的グループ化を行ったデータに対して、グループごとの実行時間を集計することもできる。この結果から、計算機台数を増加することにより、どのグループ（処理内容）で並列化効果が得られているかを検出することができる。その際、グループごとに色分け等の視覚的に異なる表示とすることで並列化の様子を視認しやすくなる。
【００８１】
たとえば、所定の業務を実行するための並列化の度合いを、１ノードから８ノードまで増加させたときの、それぞれの動作状況を解析することで、並列化の有効度が判断できる。
【００８２】
図１１は、並列度の有効性を比較するグラフを示す図である。図１１の例では、横軸に実行時間が取られており、各ノードにおいて実行された関数が網掛の違いで示されている。なお、この例では、５秒を１ブロックとしている。解析の結果、１ノードのグループ、２ノードのグループ、４ノードのグループ、８ノードのグループが生成されている。
【００８３】
図１１の例では、矢印で示した範囲の関数については、１ノードのグループにおける処理時間と、８ノードのグループにおける処理時間とに差がない。すなわち、並列度がほとんどないことがわかる。
【００８４】
また、クラスタ分析において、動作内容（関数別実行時間の内訳）ごとにグループ化することができる。
図１２は、経過時間ごとの単位時間内での処理内容の変化を示す図である。この図では、横軸に経過時間（秒単位）が示されている。そして、１０ｍｓごとの処理内容が、棒グラフで示されている。１つの棒グラフは、１０ｍｓ内で実行された関数の実行時間を、網掛の違いによって示している。また、グループ化によりプログラムをグループ４１〜４３に分けた結果が、矩形の枠で示されている。この例では、対象プログラムが３つの処理内容に分類できた。
【００８５】
図１２に示されるグループ４１〜４３は、例えば「初期化処理」や「計算コア」、「データ回収処理」などといった、プログラムの意味的な違いによって分かれる。したがって、並列度（ノードの台数）が向上するにつれ、どの処理が効率的な並列化を達成できているかを容易に判断することができる。
【００８６】
以上説明したように、多数台の計算ノードで構成される並列計算機システム上で、プログラムプロファイリングと統計処理を組み合わせる。これにより、プログラムの並列化に伴う性能ボトルネックの検出や異常動作を行っているノードを迅速かつ自動で発見することが可能となる。その結果、性能評価・分析に必要となる人的・時間的コストを大幅に削減することができる。
【００８７】
すなわち、プログラム全体を通して、一旦採取したプロファイリングデータに対し、ある時間単位で関数実行時間内訳を再計算する（時系列プロファイリング）ようにしたため、特定の短時間内に発生した微細な挙動変化を確認できる。しかも、時系列プロファイリングデータにおける関数実行時間を説明変数として入力し、クラスタ分析を行うことにより、各ノード内でのプログラム実行内容の変化を関数レベルよりも意味的に大きな処理単位で確認できる。
【００８８】
また、時系列プロファイリングデータを、ノード単位、あるいは全ノード合計を集計し、それらで得た関数実行時間を説明変数としてクラスタ分析を行うことにより、同様の処理を行っているノードを自動検出し、分析者が扱うべきデータ量を大幅に削減することができる。ここで、説明変数とは、データ分析において予測したい変数（目的変数）を説明する変数である。
【００８９】
クラスタ分析によって、ノードをグループ分けすることで、大量の計算ノードの中から異なるプログラム実行内容を持つノード、およびその発生時間帯を自動検出できる。すなわち、グループ間の関数実行時間の内訳を比較し、例えば、他と異なる関数が実行されたグループがあれば、そのグループ内のノードに何らかの問題があると考えられる。また、解析の時間間隔ごとに関数実行時間の内訳を比較し、例えば、他と異なる関数が実行された時間帯があれば、その時間帯に実行される処理に何らかの問題があると考えられる。
【００９０】
さらに、分類されたグループごとに色分け表示するようにしたことで、クラスタやグリッドを構成する計算ノード数が変化した場合に処理内容ごとに並列効果を視覚的に確認することができる。
【００９１】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００９２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９３】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【００９４】
【図１】本実施の形態の概略を示す図である。
【図２】本実施の形態のシステム構成例を示す図である。
【図３】本実施の形態に用いる管理サーバのハードウェア構成例を示す図である。
【図４】性能分析を行うための機能を示すブロック図である。
【図５】動作状況解析の手順を示すシーケンス図である。
【図６】アドレス記録テーブルへの情報設定状況を示す図である。
【図７】統計処理部におけるデータ解析状況例を示す図である。
【図８】クラスタ分析を利用した統計処理の例を示す図である。
【図９】「グループ＃１」内のノードの解析結果の例を示す図である。
【図１０】「グループ＃２」内のノードの解析結果の例を示す図である。
【図１１】並列度の有効性を比較するグラフを示す図である。
【図１２】経過時間ごとの単位時間内での処理内容の変化を示す図である。
【図１３】従来のプロファイリングの状況を示す図である。
【符号の説明】
【００９５】
１  ＣＰＵ
２  アドレスデータ格納手段
３  アドレス記録テーブル
４  処理アドレス対応テーブル
５  実行処理判断手段
６  解析手段
７  表示手段
８  解析結果
【図１】
2007213205.tif 000003
【図２】
2007213205.tif 000004
【図３】
2007213205.tif 000005
【図４】
2007213205.tif 000006
【図５】
2007213205.tif 000007
【図６】
2007213205.tif 000008
【図７】
2007213205.tif 000009
【図８】
2007213205.tif 000010
【図９】
2007213205.tif 000011
【図１０】
2007213205.tif 000012
【図１１】
2007213205.tif 000013
【図１２】
2007213205.tif 000014
【図１３】
2007213205.tif 000015