(57)【特許請求の範囲】
【請求項１】
プロセッサ、データ記憶システム、入力装置及び出力装置を備えるコンピュータを用いて、並列処理システム上で実行され、頂点のグラフとして表されるアプリケーションの処理能力を解析する方法であって、
（ａ）上記プロセッサが、並列処理システム上で指定されたデータ・レコードを処理するための、頂点間のデータの流れを表すリンクと該リンクに接続された頂点からなるグラフとして表わされるアプリケーションにアクセスするステップと、
（ｂ）上記入力装置を介して供給された入力データのセットに基づいて、上記プロセッサが、グラフの対応する頂点に割り当てられたデータ・レコードのサイズ及び数の記述を生成するステップと、
（ｃ）上記プロセッサが、グラフの各頂点の性能記述を生成し、該頂点の性能記述を用いて、グラフを実行するシステムの性能特性を算出するための、頂点を接続するリンクによって決まるグラフのトポロジに特有の性能式を生成するステップと、
（ｄ）上記プロセッサが、該性能式と、グラフの対応する頂点に割り当てられたデータ・レコードのサイズ及び数の記述とを用いて、グラフの頂点ごとに実行時間を求めるステップと、
（ｅ）上記プロセッサが、グラフの各頂点に対する該求められた実行時間に基づいて総実行時間および並列処理システムの性能の記述を出力するステップとを含むことを特徴とするアプリケーションの性能を解析する方法。
【請求項２】
（ａ）上記入力装置を介して供給された複数の入力データ・セットに基づいて上記プロセッサが、総実行時間と並列処理システムの性能との複数の記述を生成するステップと、（ｂ）上記プロセッサが、複数の記述の比較を行うステップと、（ｃ）上記プロセッサが、該比較を出力するステップとをさらに含むことを特徴とする請求項１記載の方法。
【請求項３】
プロセッサ、データ記憶システム、入力装置及び出力装置を備えるコンピュータを用いて、並列処理システム上で実行され、入力された１組の値が与えられた場合に頂点およびリンクのグラフとして表されるアプリケーションの性能を解析する方法であって、
（ａ）上記プロセッサが、リンクによって表される頂点間のデータの流れに対応した頂点間の接続、データ処理速度、およびデータの量を含む、グラフの頂点およびリンクの記述を生成するステップと、
（ｂ）上記プロセッサが、総実行時間、リソース要件、およびアプリケーションの性能を含むアプリケーションの性能特性を算出するための、頂点を接続するリンクによって決まるグラフのトポロジに特有の性能式を、記述および入力された１組の値に基づいて生成するステップと、
（ｃ）上記プロセッサが、上記入力装置を介して入力された値を変更することのできる手段を設け、変更された値を生成するステップと、
（ｄ）上記プロセッサが、変更された値に基づいて性能式を用いてアプリケーションの性能特性を再生成するステップと、
（ｅ）上記プロセッサが、該性能特性を出力するステップとを含むことを特徴とするアプリケーションの性能を解析する方法。
【請求項４】
（ａ）上記入力装置を介して、数組の値を入力するステップと、
（ｂ）上記プロセッサが、該入力された各組の値ごとにアプリケーションの性能特性を生成するステップと、
（ｃ）上記プロセッサが、該入力された数組の値にトレンド式を適用することによって数組の推定値を算出するステップと、
（ｄ）上記プロセッサが、上記性能式を推定値に適用することによってアプリケーションの性能特性を生成するステップと、
（ｅ）上記プロセッサが、該入力された各組の値および推定値に基づいて性能特性を出力するステップとをさらに含むことを特徴とする請求項３記載のアプリケーションの性能を解析する方法。
【請求項５】
プロセッサ、データ記憶システム、入力装置及び出力装置を備えるコンピュータを用いて、並列処理システム上で実行され、入力された１組の値が与えられた場合に頂点およびリンクのグラフとして表されるアプリケーションの性能を解析する方法であって、
（ａ）上記プロセッサが、リンクによって表される頂点間のデータの流れに対応した頂点間の接続、データ処理速度、およびデータ量を含む、グラフの頂点およびリンクの記述を生成するステップと、
（ｂ）上記プロセッサが、総実行時間、リソース要件、およびアプリケーションの性能を含むシステムの性能特性を算出するための、頂点を接続するリンクによって決まるグラフのトポロジに特有の性能式を、記述に基づいて生成するステップと、
（ｃ）上記プロセッサが、上記入力装置を介して入力された値に性能式を適用するステップと、
（ｄ）上記プロセッサが、該入力された値を変更できる手段を設け、変更された値を生成するステップと、
（ｅ）上記プロセッサが、該変更された値に性能式を適用するステップと、
（ｆ）上記プロセッサが、該性能式の適用の結果を出力するステップとを含むことを特徴とするアプリケーションの性能を解析する方法。
【請求項６】
（ａ）上記入力装置を介して、数組の値を入力するステップと、
（ｂ）上記プロセッサが、該入力された各組の値ごとに性能式を適用するステップと、
（ｃ）上記プロセッサが、該入力された数組の値に基づいてトレンド式を生成するステップと、
（ｄ）上記プロセッサが、該入力された数組の値にトレンド式を適用することによって数組の推定値を算出するステップと、
（ｅ）上記プロセッサが、該推定値に性能式を適用するステップと、
（ｆ）上記プロセッサが、該入力された値、推定値、および記憶されている値を出力する手段を設けるステップとをさらに含むことを特徴とする請求項５記載のアプリケーションの性能を解析する方法。
【請求項７】
プロセッサ、データ記憶システム、入力装置及び出力装置を備えるコンピュータを用いて、並列処理システム上で実行され、入力された１組の値が与えられた場合に頂点およびリンクのグラフとして表されるアプリケーションの性能を解析するコンピュータ・プログラムが格納されたコンピュータ読み取り可能な記憶媒体であって、該コンピュータ・プログラムは、
（ａ）リンクによって表される頂点間のデータの流れに対応した頂点間の接続、データ処理速度、およびデータ量を含む、グラフの頂点およびリンクの記述を生成する機能と、
（ｂ）総実行時間、リソース要件、およびアプリケーションの性能を含むアプリケーションの性能特性を算出するための、頂点を接続するリンクによって決まるグラフのトポロジに特有の性能式を、記述および入力された１組の値に基づいて生成する機能と、
（ｃ）入力された値を変更できるような手段を設け、変更された値を生成する機能と、
（ｄ）変更された値に基づいて性能式を用いてアプリケーションの性能特性を再生成する機能と、
（ｅ）該性能特性を出力する機能とを、上記プロセッサに、実行させるように特定のあらかじめ定められたように動作することを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項８】
上記コンピュータ・プログラムは、
（ａ）複数組の値を入力する機能と、
（ｂ）入力された各組の値ごとにアプリケーションの性能特性を生成する機能と、
（ｃ）入力された数組の値にトレンド式を適用することによって複数組の推定値を算出する機能と、
（ｄ）推定値に性能式を適用することによってアプリケーションの性能特性を生成する機能と、
（ｅ）入力された各組の値および推定値に基づいて性能特性を出力する機能とをさらに、上記プロセッサに、実行させることを特徴とする請求項９記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、コンピュータ・システムの解析に関し、特に、並列処理システムによるアプリケーション・プログラムの実行の解析に関する。
【０００２】
（発明の背景）
近年、コンピュータ・プロセッサおよびデータ記憶装置の能力の向上につれ、処理されるデータ・セットのサイズも大幅に大きくなっている。このような急速な進歩にもかかわらず、システムの性能および能力がプロセッサの処理速度によって制限されることが少なくない。
【０００３】
このような制限に対する１つのソリューションとして、処理タスクをいくつかに分割し、分割したタスクを複数のプロセッサで同時に実行することである。この手法は、各プロセッサの負担を軽減し、互いに独立したタスクを同時に、すなわち並列に実行することを可能にする。このように構成されたシステムは、複数のプロセッサが並列に動作するシステムであり、並列処理システムと呼ばれる。この場合、並列処理システムには、複数の中央演算処理装置（CPU）を使用するローカル・コンピュータ・システム（たとえば、SMPコンピュータやMPPコンピュータなどのマルチプロセッサ・システム）、または局所的に分散されたコンピュータ・システム（たとえば、LANネットワークまたはWANネットワークを介して結合された複数のプロセッサ）、あるいはそれらの組合せの任意の構成が含まれる。
【０００４】
並列処理によって、アプリケーションは同一のタスク全体をより高速に実行することができる。あるいは、並列処理システム上で実行されるアプリケーションは、単一プロセッサ・システム上で実行されるアプリケーションよりも、同じ時間でより多くのデータを処理することができる。並列処理によって性能および能力がこのように向上するので、使用中の並列処理システムまたは提案された並列処理システム上でアプリケーションを実行する際このような特性、または特定の並列処理システム上で実行されるアプリケーションの性能に対するデータ量の変動の影響を評価する必要がある。
【０００５】
システム上で実行されるアプリケーションの性能の解析を支援するために、アプリケーションおよびシステムの構成要素、ならびにこれらの構成要素の、入力されたデータ・セットとの相互作用を表すモデルが使用される。一般的に、コンピュータ・システム内のデータ・フローの性質はほぼ線形であるので、このようなシステムを記述するためにグラフが使用されている。グラフ内の頂点はデータ・ファイルまたはプロセスを表し、グラフ内のリンクすなわち「エッジ」は、１つの処理段で生成されたデータが別の処理段で使用されることを示す。
【０００６】
同じ種類のグラフ表現を使用して並列処理システム上で実行されるアプリケーションを記述することができる。この場合も、グラフはデータ、プロセス、およびエッジすなわちリンクで構成される。この場合、グラフ表現は、各処理ステップ間のデータフローだけでなく、１つの処理ノードから別の処理ノードへのデータフローも表す。さらに、グラフの要素（たとえば、ファイル、プロセス、エッジ）を複製することによって、システムの並列度を表すことが可能である。
【０００７】
図１は、３つのプロセッサを有する並列処理システム上のアプリケーションを記述したグラフである。このアプリケーションは、主として２つのタスク、すなわち変換およびソートを実行する。最初、データは頂点INPUT PARTITIONで表される３つの部分に分割される。各部分は、３つのリンク１０、１１、および１２で表わされる３つの異なるプロセッサのうちの１つに送られる。３つのプロセッサはそれぞれ、対応するデータ部分に対する１つ以上のタスクを実行する。タスクのこの割当ては、３組の頂点、TRANSFORM1およびSORT1、TRANSFORM2およびSORT2、ならびにTRANSFORM3およびSORT3で表される。すなわち、第１のプロセッサは変換を実行し、次に、このプロセッサのデータ部分をソートする（TRANSFORM1およびSORT1）。他のプロセッサについても同様である。最後に、データは集計され、頂点OUTPUT AGGREGATIONで表される集合体として出力される。
【０００８】
しかし、並列処理システム上で実行されるアプリケーションの性能を予測しモデル化することは非常に困難である。単一プロセッサ・システムの場合と同様に、このような予測は、処理しなければならないデータの量と、その処理に必要なリソースとに依存する。しかし、CPU処理速度および要件、データ・セット・サイズ、メモリ利用度、およびディスク使用状況に関する情報だけでなく、プロセッサとネットワーク性能との間の有効通信速度に関する情報も必要である。複数のプロセッサが、場合によっては異なる速度で様々な量のデータに対して並列に動作し、様々な速度のチャネルまたはリンクによって相互接続されているので、計算がかなり複雑になる可能性がある。
【０００９】
たとえば、処理すべきデータベースのサイズに基づいて多数の並列システムが購入される。この後で任意の経験則が適用され、プロセッサとギガバイト単位のディスク記憶容量との比に基づいて必要なプロセッサの数が算出されるのが普通である。このように過度の単純化を行うと、実際の計算に基づいて必要となる処理量またはネットワークの帯域幅のバランスがかなり狂ったシステムになることが少なくない。
【００１０】
したがって、本発明者は、並列処理システム上で実行されるアプリケーションの性能を解析できることが望ましいと判断した。並列処理システムのアーキテクチャの仮定されるデータ・セット・サイズおよび変動に基づいてこのような性能を推定できることも望ましい。本発明はこのような機能を提供する。
【００１１】
（発明の概要）
本発明は、並列処理システム上でアプリケーションまたは１組のアプリケーションを実行するのに必要なリソースを効果的に評価し、判断し、検証することのできる方法を提供する。好ましい実施例は、並列処理システム上で実行されるアプリケーションを記述するグラフからデータ・ファイルを生成する。このデータ・ファイルと、システム構成要素の処理速度、データフロー、システム全体のデータ・レコードのサイズおよび総数を使用して、各構成要素に必要な時間を算出する数式が決定される。
【００１２】
次に、供給されたデータ・セットの処理時間を算出するためこられの数式が使用される。この情報は、スプレッドシート形式で表示することが好ましい。複数のデータ・セットに要する時間を算出することでチャートを作成することができる。履歴データを解析することによって将来の傾向を予測することができ、このような解析結果もスプレッドシートまたはチャートに表示することができる。
【００１３】
実際のシステムを評価する場合、アプリケーションの実行が監視されたときに処理速度など構成要素に関する情報が更新される。これによって、現在のシステムを測定すると共に性能を検証することができる。
【００１４】
本発明の好ましい実施形態の詳細は、添付図面および以下の説明に記載されている。本発明の詳細が分かれば、当業者には他の多数の変形および変更が明らかになろう。
【００１５】
（発明の詳細な説明）
この発明の詳細な説明全体にわたり、示される好適な実施例および例は、本発明に対する制限ではなく代表的な例とみなすべきである。
【００１６】
（概要）
本発明は、1996年７月２日に出願され、本発明の譲渡人に譲渡された、「Executing Computations Expressed as Graphs」の同時係属米国特許出願第08/678411号に記載されている発明に基づく発明である。本発明は、好適な２つの実施例を包含する。第１の実施例は、グラフ・コンパイル・モジュールによって生成されるフラット・ファイルに基づいて「スナップショット解析」を行う。この実施例により、ユーザは、入力値を変更することによって各種並列処理システム上で実行されるアプリケーションの性能および能力を評価することができる。異なる入力値およびその結果として得られる計算値は、Microsoft ExcelTMなどのスプレッドシート・フォーマットで表示することが好ましい。第２の実施例は、第１の実施例を数組の値に適用した場合に生成されるのと同じ数式に基づいて「経時的な解析」を行う。数組の値は、現在の情報、過去の記録情報、現在の測定情報、または過去の値を解析し、次に外挿して将来を予測する推定値が得られる。この実施例によって、ユーザは、過去の傾向または将来の傾向を調べることができる。この情報は、ユーザが定義できる軸を有するチャート・フォーマットで表示することが好ましい。
【００１７】
現在使用されているアプリケーションおよびシステムの利点および欠点を解析し、ボトルネックを発見するためにこのような実施例を使用ことができる。このような実施例によって構築されたモデルは、処理する必要のあるデータ量の変化の、性能に対する影響も示す。あるいは、モデル内の処理構成要素およびリンケージ構成要素を変更することによって、各種並列処理システム構成を比較することができる。したがって、将来におけるリソース要件および性能特性に関する予測を行うことができる。
【００１８】
本発明の使用例では、データベース・プロジェクト用のシステムが購入される。ユーザが、使用すべきアプリケーションと、解析されるデータベース（たとえば、社員データベース）のサイズとを知っている場合、各種ハードウェア構成の性能特性が重要であることは明らかである。ユーザは、おそらく性能に関する目標を持ち、かつどんな構成要素または構成がユーザのニーズを満たすかを知る必要がある。本発明の実施例によって、ユーザは複数のシステム構成の性能評価を行うことができる。ユーザはその後で、これらの評価結果を比較し、ユーザの特定のニーズに一致する、ハードウェアおよびソフトウェアの最適なソリューションを得ることができる。
【００１９】
（スナップショット解析）
図２の上部（点線の矢印まで）には、スナップショット解析を行う基本ステップが示されている。図１に示しかつ上記で説明したように、アプリケーション200はグラフ204で記述することができる。グラフ204は、アプリケーション200が実行されるシステム202の並列性を組み込むこともできる（図１参照）。したがって、特定の並列処理システム202上の特定のアプリケーション200の実行をグラフ204で表すことができる。アプリケーション200とシステム202のいずれか（または両方）は、実際のものでも、あるいは提案されたものでもよい。
【００２０】
同様に、特定のアプリケーション200に関する情報を、ユーザによって入力された数値206で表すことができる。たとえば、アプリケーション200によって各種構成要素で使用されるデータ・レコードのサイズまたは数を整数で表すことができる。並列処理システム202に関して経験的に求められた詳細なデータ、たとえば、プロセッサ速度、帯域幅なども数値206によって容易に表される。入力されたこれらの値は、（たとえば、製造業者の仕様書から）推定または仮定される情報に基づいて得るか、あるいは（たとえば、ソフトウェアまたはハードウェアを監視することによって）システム202上のアプリケーション200の性能を実際に測定することによって得ることができる。
【００２１】
アプリケーション200および並列処理システム202を記述するこのようなグラフ204および供給された値206に基づいて、アプリケーション200を実行するシステムの性能および能力が解析される。
【００２２】
最初、ユーザは、グラフ204および値206をグラフ・コンパイラ208に入力する。グラフ・コンパイラ208は、グラフ204および入力された値206を解析する。グラフ・コンパイラ208は次に、グラフ204および入力された値206を記述したフラット・ファイル210を生成する。フラット・ファイル210は、グラフ内の各構成要素のリストを含む。列挙されている各構成要素と共に、データ・レコードの数またはサイズや性能特性など、その構成要素に関する入力された値206が記憶されている。アプリケーション内のデータフローを表すために、各構成要素間の接続を示す情報も記憶されている。
【００２３】
図３は、図２のフラット・ファイル210の可能なフォーマットの一例である。このフォーマットでは、データはASCIIテキストとして記憶される。各行の開始位置に、その行に記憶されている情報の性質を示すコードがある。ファイルは、「Ｔ」、「Ｃ」、「Ｇ」などの部分に分割することができる。各部分の先頭はそれぞれ、たとえば「TH」、「CH」、または「GH」で示すことができる。「TI」は、パス名、使用される時間単位、使用されるタイトルなどのタイトルまたはグローバル情報を示す。「CT」は、構成要素情報、すなわち、名前および処理速度（MB/秒単位）を示す。したがって、図３は、このシステムの場合、ディスクの入出力速度が3.0MB/秒であり、それに対してソート構成要素の処理速度が0.5MB/秒であることを示している。「GT」はグラフ情報を示す。各行は、構成要素の名前、処理されるレコードの数（百万単位）、処理される各レコードのサイズ（バイト単位）、この構成要素によって実行される演算およびその演算がデータに対して実行される回数などの情報を示している。最後に、「FH」はこのファイルの終了
位置を示す。
【００２４】
図２を再度参照すると、フラット・ファイル210は次に、キャパシティ・プランナ212に渡される。キャパシティ・プランナ212は、性能式214を生成し、アプリケーション200およびシステム202の性能特性を算出する。このような性能式214は、グラフ204および入力された値206のトポロジに特有の式である。すべての性能式214は、入力されたグラフ204および入力された値206に依存し、特定の時点での特定のアプリケーション200およびシステム202を記述し、したがってラベル「スナップショット解析」を記述する。
【００２５】
図４は、図２の性能式214の一例である。これは、総アプリケーション実行時間に占める、特定の構成要素を処理に要する時間の割合420を算出する数式の例である。
データ・レコードの数400に１つのデータ・レコードのサイズ402が掛けられ、この構成要素によって処理されるデータの量404が算出される。この特定の構成要素の処理速度406が一群のこれらの構成要素の平均最高速度412と比較される。平均最高速度412は、一群のこれらの構成要素の最高速度408をこの群内の構成要素の数410で割ることによって算出される。この構成要素の処理速度406と平均最高速度412のうちで遅い方が最低処理速度414になる。この構成要素に必要な時間416は、データ量404を最低処理速度414で割った値である。アプリケーション（図示せず）内の各構成要素の実行時間同士が加算され、すべての構成要素の総時間418が求められる。次に、この構成要素に必要な時間416がすべての構成要素の総時間418で割られ、総アプリケーション実行時間に占める、この
特定の構成要素を処理する間に経過する時間の割合420が算出される。
【００２６】
好適な実施例では、キャパシティ・プランナ212は、図４の数式を以下のような形式で記憶する。
PERCENTAGE=((NUMBER_OF_RECORDS*RECORD_SIZE)/
MIN(SPEICIFIC_COMPONENT_PROCESSING_RATE,
(MAX_GROUP_PROCESSING_RATE/
NUMBER_OF_COMPONENTS_IN_GROUP)))/
(TOTAL_TIME_ALL_COMPONENTS_IN_GRAPH)
【００２７】
性能式214は、フラット・ファイル210によって渡される入力された値206と共にスプレッドシート216に記憶することが好ましい。キャパシティ・プランナ212は、このような入力された値206に基づいて、計算値を算出して、スプレッドシート216に書き込まれる。好適な実施例では、数式214はユーザには不可視であり、計算値のみが示される。キャパシティ・プランナ212は、アプリケーション200の総実行時間、または特定の構成要素の実行に要する実行時間を算出する。所定の時間内に処理されるデータの量を得ることもできる。
【００２８】
図５は、図３のフラット・ファイル210に示されているのと同じグラフ204および入力された値206に基づく図２のスプレッドシート216の一例を示している。この例において、上部は、全CPU処理要件に関する性能情報を示し、下部は、システムの並列度を考慮した性能情報を示しており、システムの経過リアルタイムを評価するものである。このスプレッドシートは、それぞれ左側と上部にラベルが付いた行および列として示されている。以下に精度に関して説明するように、図示されている数は、小数点以下１位までのみ示されており、したがって、真の計算値の近似値に過ぎない（すなわち、0.0は必ずしも0ではなく、0.04を表す可能性がある）。
【００２９】
左側の上部は構成要素名の列500である。これらの構成要素名の右側に、左側の構成要素500の、MB/秒単位の処理速度502が示されている。たとえば、構成要素「個別データのソート」は、速度または処理速度が0.5MB/秒で、「ディスク入出力」速度が4.0MB/秒であり、他の構成要素についても同様である。処理速度は、ユーザの設定に応じて、MB/秒、MB/時、GB/時など様々な単位で表すことができる。右側に、構成要素が分割されたパーティションの数504を示す列がある。この列504はシステム全体にわたる並列度を反映している。構成要素「個別データのソート」は、２つのパーティションを使用し、したがって、２つのCPU上で実行される。
【００３０】
右隣の列は、構成要素によって処理されるデータ・レコードの数506を示している。この右の列は、各レコードのサイズ508を示している。この２つの列506、508を掛け合わせることによって、各構成要素によって処理されるデータの量の全サイズを算出することができ、このサイズは次の列510に示されている。たとえば、「個別データのソート」は、それぞれが94バイトである6800万個のレコードを処理し、結果として、6.4GBのデータを処理する。
【００３１】
次の２列は、システム構成要素によって処理されるデータの量512、514を示している。これらのシステム構成要素も遠く左側の構成要素の列500に示されている。図５に示す例には、「ディスク入出力」および「ネットワーク入出力」のエントリがある。これらの構成要素によって処理される全データ量は、構成要素の列が左側の列500内のこの構成要素を含む行と交わる、列512、514の１番下に示されている。したがって、３つの構成要素（「個別データのソート」、「顧客データのソート」、および「スコア」）は、「ディスク入出力」列512内の３つのエントリ（6.4GB、0.0GB、および0.0GB）によって示される、「ディスク入出力」構成要素によって処理しなければならないデータを有している。「ディスク入出力」列の１番下に、「ディスク入出力」構成要素が6.4GBを処理することを示す、上記のエントリの和が示されている。
【００３２】
さらに右隣の２列は、各構成要素がその処理を完了するのに必要な総時間518と、すべての構成要素が処理を完了するための総時間に占める、各構成要素によって使用される時間の割合520とを示す。各構成要素の総時間518同士がすべて加算され、すべての構成要素の総時間522が求められる。これは左側に「総CPU時間」として示されている。したがって、総CPU時間は、入力されたデータおよびシステム・パラメータが与えられた場合に必要な総処理時間数を示す。総時間522に占めるある構成要素の割合は、ある構成要素の総時間518をすべての構成要素の総時間（「総CPU時間」）522で割ることによって得られる。
【００３３】
図５に示されているスプレッドシートの例の下部に、システムの並列性能が示されている。この列内のいくつかの情報は、上部の情報と同じである（構成要素名524、処理速度526、パーティション数528、レコード数530、レコード・サイズ532、構成要素によって処理されるデータ量の全サイズ534、システム構成要素によって処理されるデータ量536および538）。下部の各構成要素によって処理される全データ540が、各構成要素が使用するパーティションの数528を反映することは明らかである。したがって、「個別データのソート」は２つのパーティションを使用し、全部で6.4GBを処理し、結果として、各パーティションは3.2GBを処理する。各パーティションが並列に動作するので、システムは、複数のパーティションをより高速に使用して各構成要素の処理を完了することができる。
【００３４】
各構成要素の処理に要する総時間542が右隣の列に示されており、すべての構成要素の総時間に占める、各構成要素の処置に時間の割合544が最も右側の列に示されている。各構成要素の総時間542同士がすべて加算され、すべての構成要素の総時間546が求められる。これは左側に「推定経過時間」として示されている。総時間に占める各構成要素の割合544は、ある構成要素の総時間542をすべての構成要素の総時間（「推定経過時間」）546で割ることによって求められる。リアルタイムの実際の総経過時間548は左側に「柱時計時間（時間）」として示されている。すべての構成要素の総時間を実際の総経過時間548で割ることによって、CPUがビジー状態であった時間の割合550が算出される。これは左側に「CPUビジー率」として示されている。
【００３５】
図２のスプレッドシート216に示されている計算値（図５の全データ・サイズ510、構成要素の総時間518、総時間に占める割合520など）が数値ではなく数式として記憶されることに留意されたい。これらの数式は、図４に示されている数式のような図２の性能式214である。図２の入力された値206（処理速度502、パーティション数504、データ・レコード数506、データ・レコードのサイズ508など）は数値として記憶される。このフォーマットによって、ユーザは、たとえば、様々なデータ・サイズおよび各種並列処理システム構成について試験するか、あるいはスプレッドシート216に現在の実際の性能を反映させるように最も最近に測定された値を入力するように、これらの値を変更することができる。その場合、図示されている計算値を算出する数式214により再計算を行い、更新された計算値を得る。
【００３６】
たとえば、図５で、ユーザは「個別データのソート」構成要素のレコード・サイズ508を94バイトから200バイトに変更することができる。その結果、「個別データのソート」の全データ・サイズ510は13.6GBに変更される。全データ・サイズ510を算出する数式は変更されず、計算値のみが変更される。次に、この変化が他の計算値を通じて伝播する。「ディスク入出力」のデータ・サイズ512は6.4GBから13.6GBに変更される。処理速度502は、入力された値に依存するので変更されない。構成要素「ディスク入出力」の総時間518は0.4時間から0.9時間に変更される。これによって、すべての構成要素の総時間522は24.3時間に変更される。その結果、総時間に占める各構成要素の割合520が変更される。「ディスク入出力」は1.9%から3.7%に変更され、「個別データのソート」は14.9%から14.8%に変更され、他の構成要素についても同様である。これらの数字は、選択された精度に応じて異なる（下記参照）。
【００３７】
上述したように、精度を変更することもできる。たとえば、図５には、少数点以下第１位の精度が示されている。したがって、構成要素「ディスク入出力」の総時間518は0.4時間として示されている。実際には、6.4GBおよび4.0MB/秒を入力として使用すると（4.0MB/秒＝14.4GB/時とする）、数式による計算値は6.4/14.4=0.44444となる（小数点以下第５位まで示されている）。精度を小数点以下第２位に変更した場合、総時間518は0.44時間として示される。これは、数式ではなく数値が記憶される場合には不可能である。総時間518に0.4時間が記憶されている場合、精度を高くしても値は変更されない（このデータは失われるであろうから、おそらく0.44時間ではなく0.40時間が表示される）。同様に、時間またはサイズの単位を変更することができる。時間の単位を時間から分に変更することによって、総時間「ディスク入出力」518は0.4時間か
ら26.7分に変更される（60分の0.44444倍は約26.7分であり、24分ではないことに留意されたい）。サイズの単位をギガバイトからメガバイトに変更することによって、全データ・サイズ「ディスク入出力」512は6.4GBから6400MBに変更される。
【００３８】
したがって、入力された値206を変更するこの機能により、ユーザは、アプリケーション200およびシステム202の特性を変更することで「what if（こうしたら）」解析を行うことができる。特に、ユーザは、処理すべきデータの量または種類を変更する効果、または様々な特性を有する代替ハードウェアの構成要素を使用する効果をモデル化することができる。ユーザは、アプリケーションをまったく異なるハードウェア構成に移植させる効果をモデル化することもできる。
【００３９】
この実施例の変形例において、グラフ・コンパイラ208は、システム202上のアプリケーション200の実行を監視する機能を有することもできる。この場合、グラフ・コンパイラによって使用される数値はユーザによる推定値ではなく、実際の測定性能情報を表す。この場合、このような測定値は、前述のようにフラット・ファイルを通じてスプレッドシートに入力することができる。これによって、ユーザはシステム上のアプリケーションの性能を解析し、（おそらく、上述のように、入力された値206を用いて生成された）予測される性能に対して現在の性能を評価することができる。数式214に基づいて算出された測定可能な値に関して、予測される性能と実際の性能との比較も行われる。
【００４０】
ユーザは、入力された値206のみの変更に制限されない。グラフ204を変更することもできる。ユーザは、最初にスプレッドシート216を記憶しておくことによって、次に新しいグラフ204を入力し異なるシステム206またはアプリケーション200をモデル化することができる。この機能により、ユーザは、プロセッサを追加したり削除したりすることによってシステム202のハードウェア構成を大幅に変更する効果をモデル化することができる。この機能によって、まったく異なるハードウェア・プラットフォーム同士または異なるアプリケーション同士を比較することもできる。したがって、本発明のこの実施例は、リソース管理の共通の問題である、同じ基本タスクを実行する別のアプリケーション同士の比較において非常に有用である。
【００４１】
ユーザは、システム構成を操作することによって、所与のタスクを所定の時間で実行するのにどんな種類のハードウェアがどれくらい必要であるかを評価することができ、それによってリソース要件を解析することができる。同様に、ユーザは、アプリケーションおよびデータの特性を実行時間を示すように変更するか、あるいはデータ・フロースルー速度を示すように時間を変更することによって、特定のハードウェア・セットの性能を解析することができる。この機能は、並列処理の実際の効果および潜在的な効果を評価するうえで有用であり、たとえば、単一プロセッサ・システムにプロセッサを追加した場合の性能結果を示すことができる。ユーザが現在のシステムを評価し、そのシステムが適切であると判定するか、あるいはどの構成要素がボトルネックであるかを判定する際、このシステムと別のハードウェア構成と比較できることは重要である。別のソフトウェア構成についても同様な用途が可能である。この実施例ではこの両方の種類の違いを（場合によっては共に）解析することができる。
【００４２】
性能評価式が生成され、かつユーザが入力値を処理できるので、ユーザは現在のアプリケーションおよび並列処理システムと、このシステムを変更する可能性とを評価することができる。
【００４３】
（経時的な解析）
図２の（点線の矢印から）下部は、経時的に性能解析を行う基本ステップを示している。最初の数ステップは、上記のスナップ解析を行う際に説明したステップと類似している。ユーザは、アプリケーション200および並列処理システム202を記述するグラフ204および値206を入力する。グラフ204および入力された値206は、フラット・ファイル210を生成するグラフ・コンパイラ208に渡される。キャパシティ・プランナ212がフラット・ファイル210を解析し、それに含まれている情報に基づいて性能式214を生成する。数式214はスプレッドシート216に書き込まれる。この時点までの処理は前述の処理と同じである。
【００４４】
ユーザは次に、上記と同様な、アプリケーション200およびシステム202を記述する数組の値218を入力する（ユーザは、最初にすべての組の値218を入力することができ、第１の組に基づいて第１のスプレッドシート216を生成することができる）。たとえば、これらの組の値218は、アプリケーション200およびシステム202によるデータの日々の実行の測定結果を表すことができる。次に、能力プランナ212は各組の値218に性能式214を適用し、結果として得られる数組の計算値をすべて記憶する。各組の計算値はスプレッドシート216の別々のシートに書き込まれ、１組の値218当たりシート220１つの、１組のシート220が生成される。ユーザは次に、複数のシート220を参照して、経時的に計算値を検討することができる。各シート220の値206は、この時点で「what-if（こうしたら）」解析も可能になるようにユーザが変更することができる。キャパシティ・プランナ212は、数組の値218およびシート220の計算値に基づいてチャートを生成することもできる。これによって、ユーザは、システムおよびデータに関する一連の履歴値を入力することによって経時的に計算値を比較することができる。このような履歴値を毎日自動的に測定し、次に、毎日の更新済みチャート224が生成されるようにキャパシティ・プランナ212に供給することができる。
【００４５】
図６は、入力された値206に基づく経時的なチャート224の例である。縦軸は、ある構成要素のバイト単位のデータ・レコードのサイズを示す（図５の508）。横軸は日を示す。図示されている各行は異なる構成要素を示す。図６に示されているデータは、図３および図５に使用されているのと同じ組のデータに基づくものである。したがって、1997年５月１日（図５に使用されている値の日付）の構成要素「個別データのソート」の場合、データ・レコード・サイズは94バイトである。このチャートは、データ・レコードのサイズが経時的に変化せず、一定であったことを示している。
【００４６】
図７は、このようなチャート224の別の例を示している。このチャート224は、入力された値206に数式214を経時的に適用することによって生成された計算値に基づくチャートである。縦軸は、ある構成要素のメガバイト単位の全データ・サイズを示す（図５の510）。横軸は日を示す。図示されている各行は異なる構成要素を示す。図７に示されているデータは、図３、図５、および図６に使用されているのと同じ組のデータに基づくものである。したがって、1997年５月１日（図５に使用されている値の日付）の構成要素「個別データのソート」の場合、全データ・サイズは6400メガバイト（図５には6.4GBと示されている）である。このチャートは、「個別データのソート」構成要素の全データ・サイズが増大しており、将来において多くの処理能力が必要になることを示している。
【００４７】
図２を再度参照すると、次にキャパシティ・プランナ212は数組の値218を解析し傾向を判定する。能力プランナ212は、数組の値218を時間に関して解析することによってトレンド式222を生成する。トレンド式222は、入力された各値206ごとに生成される。これらのトレンド式222は、推定値226、すなわち将来の入力値206または１組の値218を算出するために使用される。次に、これらの推定値226と、推定値226に性能式214を適用することによって生成された計算値とに基づいてシート230およびチャート228が生成される。これによって、ユーザは、将来のリソース要件および性能を知ると共に、経時的なリソース使用傾向を検討することができる。
【００４８】
たとえば、ある構成要素のデータ・レコードの数が過去90日間にわたって一定であった場合、一定の推定値226を生成するトレンド式222が生成される。データ・レコードの数が毎月10%増加している場合、トレンド式はその増加を反映する。トレンド式226は簡単な線形モデルでも、あるいはより高度な曲線当てはめモデルでもよい。
【００４９】
「経時的な解析」実施例の一変形例として時間以外の変数が使用されることが明らかであろう。したがって、たとえば、実行時間およびあるデータ・タイプの量を示すチャートが作成される。
【００５０】
（プログラム・インプリメンテーション）
本発明は、ソフトウェアのハードウェア、またはそれらの組合せで実現することができる。しかし、本発明は、プロセッサ、（揮発性メモリおよび不揮発性メモリおよび／または記憶要素を含む）データ記憶システム、少なくとも１つの入力装置、および少なくとも１つの出力装置を備えるプログラマブル・コンピュータ上で実行されるコンピュータ・プログラムで実現することが好ましい。入力データをプログラムに入力し、ここで説明した機能が実行され、出力情報が生成される。周知の方法で１つ以上の出力装置に出力情報が出力される。
【００５１】
各プログラムは、コンピュータ・システムとやりとりするために高水準の手続き型プログラミング言語またはオブジェクト指向プログラミング言語で作成することが好ましい。しかし、プログラムは、必要に応じてアセンブリ言語または機械語で作成することができる。いずれの場合も、作成したプログラムは、コンパイルあるいはインタープリトされた言語になる。
【００５２】
このような各コンピュータ・プログラムは、汎用プログラマブル・コンピュータまたは専用プログラマブル・コンピュータによって読み取ることのできる記憶媒体または記憶装置（たとえば、ＲＯＭや、ＣＤ−ＲＯＭや、磁気ディスク上に記憶され、コンピュータによって記憶媒体または記憶装置が読み取られたときにここで説明した手続きを実行するようにコンピュータを構成し動作させることが好ましい。本発明のシステムは、コンピュータ・プログラムと共に構成されたコンピュータ読み取り可能な記憶媒体として実現されるシステムとみなすこともでき、このように構成された記憶媒体によって、コンピュータは、ここで説明した機能を実行するように特定のあらかじめ定められたように動作する。
【００５３】
本発明の２つの実施例について説明した。それにもかかわらず、本発明の精神と範囲から逸脱することなく様々な変更ができることが理解されよう。したがって、本発明は、例示された特定の実施例に限定されず、添付した請求の範囲によってのみ限定されることを理解されたい。
【図面の簡単な説明】
【図１】  従来技術による、並列処理システム上で実行されるアプリケーションを説明するグラフである。
【図２】  並列処理システム上で実行されるアプリケーションを記述する性能式を含むスプレッドシートを生成するステップと、現在の値、前の値、および予測値の比較を行うステップを示す、本発明の一実施例のフローチャートである。
【図３】  グラフを記述する本発明の一実施例によるフラット・データ・ファイル例である。
【図４】  総処理時間に占める、特定の構成要素に要する処理時間の割合の計算を示すフローチャートである。
【図５】  並列処理システム上のアプリケーションの実行に関する情報を示す本発明の一実施例によるスレッドシート例を示す図である。
【図６】  並列処理システム上のアプリケーションの経時的な実行に関する情報を示す本発明に一実施例によるチャート例を示す図である。
【図７】  並列処理システム上のアプリケーションの経時的な実行に関する情報を示す本発明一実施例によるチャート例を示す図である。
【図１】
0004269066.tif 000002
【図２】
0004269066.tif 000003
【図３】
0004269066.tif 000004
【図４】
0004269066.tif 000005
【図５】
0004269066.tif 000006
【図６】
0004269066.tif 000007
【図７】
0004269066.tif 000008