(57)【特許請求の範囲】
【請求項１】
コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピューティングシステムによって実行される方法であって、
前記コンピューティングシステムによって１つまたは複数の変数に対する１つまたは複数の演算を含む式を評価する工程であって、該評価する工程は、
前記データフローグラフの表現の分析に基づいて、１つまたは複数のフィールドを含むデータ構造を定義する工程と、
前記データフローグラフのデータ処理コンポーネントの１つまたは複数に関連する追跡情報を前記データフローグラフの実行中に収集する工程と、
前記データ構造の対応するフィールドに前記追跡情報に関連する１つまたは複数の値のそれぞれを格納する工程と、
前記式の評価結果を演算する工程であって、前記式の１つまたは複数の変数のそれぞれを、前記格納した値の１つと置き換えて、前記式の評価結果を演算する工程を含む工程とを含む、方法。
【請求項２】
前記評価は、前記データフローグラフを実行している間に実行される、請求項１に記載の方法。
【請求項３】
前記追跡情報は、前記データフローグラフの１つまたは複数のサブグラフの１つまたは複数のコンポーネントにさらに関連する、請求項１に記載の方法。
【請求項４】
前記１つまたは複数の変数の少なくとも第１の変数は、前記１つまたは複数のサブグラフの第１のサブグラフへの参照を含む項として前記式中で表される、請求項３に記載の方法。
【請求項５】
前記第１の変数は、前記第１のサブグラフ内の第１のコンポーネントへの参照を含む、請求項４に記載の方法。
【請求項６】
前記１つまたは複数の変数の少なくとも１つは、前記データフローグラフの１つまたは複数、前記１つまたは複数のサブグラフ、および、前記１つまたは複数のコンポーネントの特性に相当する、請求項３に記載の方法。
【請求項７】
前記式を評価する工程は、事前に定義された条件に従って前記式を評価する工程を含む、請求項１に記載の方法。
【請求項８】
前記事前に定義された条件は、トリガ事象の検出を含む、請求項７に記載の方法。
【請求項９】
前記トリガ事象は、１つまたは複数の処理リソースが前記１つまたは複数の処理リソースの要求に対して不足しているかについての判断を含む、請求項８に記載の方法。
【請求項１０】
前記データ構造を定義する工程は、前記データフローグラフを横断して、前記１つまたは複数のフィールドのタイプおよび数の１つまたは複数を特定する工程を含む、請求項１に記載の方法。
【請求項１１】
前記データフローグラフを横断する工程は、前記式に関連する前記データフローグラフの部分を横断する工程を含む、請求項１０に記載の方法。
【請求項１２】
前記データフローグラフの前記データ処理コンポーネントの１つまたは複数に関連する追跡情報を収集する工程は、前記式に少なくとも部分的に基づいて前記追跡情報をフィルタ処理する工程を含む、請求項１に記載の方法。
【請求項１３】
前記評価結果を１つまたは複数の閾値と比較する工程をさらに含む、請求項１に記載の方法。
【請求項１４】
前記比較する工程に基づいて通知を生成する工程をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記通知に少なくとも部分的に基づいて１つまたは複数の自動化プロセスを実行する工程をさらに含む、請求項１４に記載の方法。
【請求項１６】
ユーザインターフェースから前記式を受信する工程をさらに含む、請求項１に記載の方法。
【請求項１７】
前記式を含む１つまたは複数の事前に定義された式のセットを提供する工程をさらに含む、請求項１に記載の方法。
【請求項１８】
前記評価する工程は、前記式を定期的に評価する工程をさらに含む、請求項１に記載の方法。
【請求項１９】
２つ以上の結果を使用して前記データフローグラフの１つまたは複数の特性に関連するヒストグラムを生成する工程をさらに含む、請求項１８に記載の方法。
【請求項２０】
前記１つまたは複数の式の定期的な評価結果に少なくとも部分的に基づいて、格納された過去のデータを更新する工程をさらに含む、請求項１８に記載の方法。
【請求項２１】
前記１つまたは複数の変数の少なくとも１つは、前記式を評価するという要求が前記コンピューティングシステムによって受信される前に過去のデータに格納された値に依存する、請求項１８に記載の方法。
【請求項２２】
前記１つまたは複数のフィールドの１つの中に、ベクトル形式で、前記追跡情報に関連する複数の値を格納する工程をさらに含む、請求項１に記載の方法。
【請求項２３】
前記複数の値のそれぞれは、特定のパラメータのそれぞれの異なる値に関連し、前記複数の値のそれぞれは、前記特定のパラメータの前記それぞれの値に関連する追跡情報上で集約された特性の値である、請求項２２に記載の方法。
【請求項２４】
コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピュータプログラムを格納する非一時的コンピュータ可読記憶媒体であって、前記コンピュータプログラムは、コンピュータに、
１つまたは複数の変数に対する１つまたは複数の演算を含む式を評価させるための命令を含み、該評価は、
前記データフローグラフの表現の分析に基づいて、１つまたは複数のフィールドを含むデータ構造を定義することと、
前記データフローグラフのデータ処理コンポーネントの１つまたは複数に関連する追跡情報を前記データフローグラフの実行中に収集することと、
前記データ構造の対応するフィールドに前記追跡情報に関連する１つまたは複数の値のそれぞれを格納することと、
前記式の１つまたは複数の変数のそれぞれを、前記格納した値の１つと置き換えて、前記式の評価結果を演算することとを含む、コンピュータ可読記憶媒体。
【請求項２５】
コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピューティングシステムであって、
１つまたは複数の変数に対する１つまたは複数の演算を含む式を評価するよう構成された少なくとも１つのプロセッサとを含み、該評価は、
前記データフローグラフの表現の分析に基づいて、１つまたは複数のフィールドを含むデータ構造を定義することと、
前記データフローグラフのデータ処理コンポーネントの１つまたは複数に関連する追跡情報を前記データフローグラフの実行中に収集することと、
前記データ構造の対応するフィールドに前記追跡情報に関連する１つまたは複数の値のそれぞれを格納することと、
前記式の１つまたは複数の変数のそれぞれを、前記１つまたは複数のフィールドに格納した値の１つと置き換えて、前記式の評価結果を演算することとを含む、コンピューティングシステム。
【請求項２６】
コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピューティングシステムであって、
１つまたは複数の変数に対する１つまたは複数の演算を含む式を評価する手段とを含み、該評価は、
前記データフローグラフの表現の分析に基づいて、１つまたは複数のフィールドを含むデータ構造を定義することと、
前記データフローグラフのデータ処理コンポーネントの１つまたは複数に関連する追跡情報を前記データフローグラフの実行中に収集することと、
前記データ構造の対応するフィールドに前記追跡情報に関連する１つまたは複数の値のそれぞれを格納することと、
前記式の１つまたは複数の変数のそれぞれを、前記１つまたは複数のフィールドに格納した値の１つと置き換えて、前記式の評価結果を演算することとを含む、コンピューティングシステム。
【請求項２７】
前記評価は、前記データフローグラフを実行している間に実行される、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記追跡情報は、前記データフローグラフの１つまたは複数のサブグラフの１つまたは複数のコンポーネントにさらに関連する、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２９】
前記１つまたは複数の変数の少なくとも第１の変数は、前記１つまたは複数のサブグラフの第１のサブグラフへの参照を含む項として前記式中で表される、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３０】
前記第１の変数は、前記第１のサブグラフ内の第１のコンポーネントへの参照を含む、請求項２９に記載のコンピュータ可読記憶媒体。
【請求項３１】
前記１つまたは複数の変数の少なくとも１つは、前記データフローグラフの１つまたは複数、前記１つまたは複数のサブグラフ、および、前記１つまたは複数のコンポーネントの特性に相当する、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３２】
前記式を評価することは、事前に定義された条件に従って前記式を評価することを含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項３３】
前記事前に定義された条件は、トリガ事象の検出を含む、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３４】
前記トリガ事象は、１つまたは複数の処理リソースが前記１つまたは複数の処理リソースの要求に対して不足しているかについての判断を含む、請求項３３に記載のコンピュータ可読記憶媒体。
【請求項３５】
前記データ構造を定義することは、前記データフローグラフを横断して、前記１つまたは複数のフィールドのタイプおよび数の１つまたは複数を特定することを含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項３６】
前記データフローグラフを横断することは、前記式に関連する前記データフローグラフの部分を横断することを含む、請求項３５に記載のコンピュータ可読記憶媒体。
【請求項３７】
前記データフローグラフの前記データ処理コンポーネントの１つまたは複数に関連する追跡情報を収集することは、前記式に少なくとも部分的に基づいて前記追跡情報をフィルタ処理することを含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項３８】
前記コンピュータプログラムは、前記コンピュータに、前記評価結果を１つまたは複数の閾値と比較させるための命令をさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項３９】
前記コンピュータプログラムは、前記コンピュータに、前記比較することに基づいて通知を生成させるための命令をさらに含む、請求項３８に記載のコンピュータ可読記憶媒体。
【請求項４０】
前記コンピュータプログラムは、前記コンピュータに、前記通知に少なくとも部分的に基づいて１つまたは複数の自動化プロセスを実行させるための命令をさらに含む、請求項３９に記載のコンピュータ可読記憶媒体。
【請求項４１】
前記コンピュータプログラムは、前記コンピュータに、ユーザインターフェースから前記式を受信させるための命令をさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項４２】
前記コンピュータプログラムは、前記コンピュータに、前記式を含む事前に定義された式のセットを提供させるための命令をさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項４３】
前記評価することは、前記式を定期的に評価することをさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項４４】
前記コンピュータプログラムは、前記コンピュータに、２つ以上の結果を使用して前記データフローグラフの１つまたは複数の特性に関連するヒストグラムを生成させるための命令をさらに含む、請求項４３に記載のコンピュータ可読記憶媒体。
【請求項４５】
前記コンピュータプログラムは、前記コンピュータに、前記１つまたは複数の式の定期的な評価結果に少なくとも部分的に基づいて、格納された過去のデータを更新させるための命令をさらに含む、請求項４３に記載のコンピュータ可読記憶媒体。
【請求項４６】
前記１つまたは複数の変数の少なくとも１つは、前記式を評価するという要求が前記コンピュータによって受信される前に過去のデータに格納された値に依存する、請求項４３に記載のコンピュータ可読記憶媒体。
【請求項４７】
前記コンピュータプログラムは、前記コンピュータに、前記１つまたは複数のフィールドの１つの中に、ベクトル形式で、前記追跡情報に関連する複数の値を格納させるための命令をさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項４８】
前記複数の値のそれぞれは、特定のパラメータのそれぞれの異なる値に関連し、前記複数の値のそれぞれは、前記特定のパラメータの前記それぞれの値に関連する追跡情報上で集約された特性の値である、請求項４７に記載のコンピュータ可読記憶媒体。
【請求項４９】
前記評価は、前記データフローグラフを実行している間に実行される、請求項２５に記載のコンピューティングシステム。
【請求項５０】
前記追跡情報は、前記データフローグラフの１つまたは複数のサブグラフの１つまたは複数のコンポーネントにさらに関連する、請求項２５に記載のコンピューティングシステム。
【請求項５１】
前記１つまたは複数の変数の少なくとも第１の変数は、前記１つまたは複数のサブグラフの第１のサブグラフへの参照を含む項として前記式中で表される、請求項５０に記載のコンピューティングシステム。
【請求項５２】
前記第１の変数は、前記第１のサブグラフ内の第１のコンポーネントへの参照を含む、請求項５１に記載のコンピューティングシステム。
【請求項５３】
前記１つまたは複数の変数の少なくとも１つは、前記データフローグラフの１つまたは複数、前記１つまたは複数のサブグラフ、および、前記１つまたは複数のコンポーネントの特性に相当する、請求項５０に記載のコンピューティングシステム。
【請求項５４】
前記式を評価することは、事前に定義された条件に従って前記式を評価することを含む、請求項２５に記載のコンピューティングシステム。
【請求項５５】
前記事前に定義された条件は、トリガ事象の検出を含む、請求項５４に記載のコンピューティングシステム。
【請求項５６】
前記トリガ事象は、１つまたは複数の処理リソースが前記１つまたは複数の処理リソースの要求に対して不足しているかについての判断を含む、請求項５５に記載のコンピューティングシステム。
【請求項５７】
前記データ構造を定義することは、前記データフローグラフを横断して、前記１つまたは複数のフィールドのタイプおよび数の１つまたは複数を特定することを含む、請求項２５に記載のコンピューティングシステム。
【請求項５８】
前記データフローグラフを横断することは、前記複数の式に関連する前記データフローグラフの部分を横断することを含む、請求項５７に記載のコンピューティングシステム。
【請求項５９】
前記データフローグラフの前記データ処理コンポーネントの１つまたは複数に関連する追跡情報を収集することは、前記式に少なくとも部分的に基づいて前記追跡情報をフィルタ処理することを含む、請求項２５に記載のコンピューティングシステム。
【請求項６０】
前記少なくとも１つのプロセッサは、さらに、前記評価結果を１つまたは複数の閾値と比較するよう構成された、請求項２５に記載のコンピューティングシステム。
【請求項６１】
前記少なくとも１つのプロセッサは、さらに、前記比較することに基づいて通知を生成するよう構成された、請求項６０に記載のコンピューティングシステム。
【請求項６２】
前記少なくとも１つのプロセッサは、さらに、前記通知に少なくとも部分的に基づいて１つまたは複数の自動化プロセスを実行するよう構成された、請求項６１に記載のコンピューティングシステム。
【請求項６３】
前記少なくとも１つのプロセッサは、さらに、ユーザインターフェースから前記式を受信するよう構成された、請求項２５に記載のコンピューティングシステム。
【請求項６４】
前記少なくとも１つのプロセッサは、さらに、前記式を含む事前に定義された式のセットを提供するよう構成された、請求項２５に記載のコンピューティングシステム。
【請求項６５】
前記評価することは、前記式を定期的に評価することをさらに含む、請求項２５に記載のコンピューティングシステム。
【請求項６６】
前記少なくとも１つのプロセッサは、さらに、２つ以上の結果を使用して前記データフローグラフの１つまたは複数の特性に関連するヒストグラムを生成するよう構成された、請求項６５に記載のコンピューティングシステム。
【請求項６７】
前記少なくとも１つのプロセッサは、さらに、前記１つまたは複数の式の定期的な評価結果に少なくとも部分的に基づいて、格納された過去のデータを更新するよう構成された、請求項６５に記載のコンピューティングシステム。
【請求項６８】
前記１つまたは複数の変数の少なくとも１つは、前記式を評価するという要求が前記コンピューティングシステムによって受信される前に過去のデータに格納された値に依存する、請求項６５に記載のコンピューティングシステム。
【請求項６９】
前記少なくとも１つのプロセッサは、さらに、前記１つまたは複数のフィールドの１つの中に、ベクトル形式で、前記追跡情報に関連する複数の値を格納するよう構成された、請求項２５に記載のコンピューティングシステム。
【請求項７０】
前記複数の値のそれぞれは、特定のパラメータのそれぞれの異なる値に関連し、前記複数の値のそれぞれは、前記特定のパラメータの前記それぞれの値に関連する追跡情報上で集約された特性の値である、請求項６９に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１０年８月２５日に出願された米国仮特許出願第６１／３７６，８７８号の優先権を主張し、同特許は参照により本明細書に組み込まれる。
【０００２】
背景
この説明は、データフローグラフの特性の評価に関する。
【背景技術】
【０００３】
複雑なコンピューテーションは、有向グラフ（「データフローグラフ」と呼ばれる）を通じてデータフローとして表すことができる場合が多く、コンピューテーションのコンポーネントはグラフの頂点に関連し、コンポーネント間のデータフローはグラフのリンク（弧、辺）に相当する。コンポーネントは、１つまたは複数の入力ポートでデータを受信し、データを処理し、１つまたは複数の出力ポートからデータを提供するデータ処理コンポーネントと、データフローのソースまたはシンクとして機能するデータセットコンポーネントとを含み得る。そのようなグラフに基づくコンピューテーションを実施するシステムについては、米国特許第５，９６６，０７２号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。
【発明の概要】
【課題を解決するための手段】
【０００４】
要約
一態様では、一般に、方法は、コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピューティングシステムによって実行される。本方法は、１つまたは複数の変数に対する１つまたは複数の演算を含む１つまたは複数の式を評価するという要求をコンピューティングシステムによって受信する工程と、コンピューティングシステムによって１つまたは複数の式を評価する工程とを含む。評価する工程は、１つまたは複数のフィールドを含むデータ構造を定義する工程と、データフローグラフの１つまたは複数のコンポーネントに関連する追跡情報をデータフローグラフの実行中に収集する工程と、１つまたは複数のフィールドに追跡情報に関連する値を格納する工程と、１つまたは複数の式の１つまたは複数の変数を、１つまたは複数のフィールドに格納した値と置き換えて、１つまたは複数の式の評価結果を演算する工程とを含む。
【０００５】
態様は、以下の特徴の１つまたは複数を含み得る。
【０００６】
評価は、データフローグラフを実行している間に実行される。
【０００７】
追跡情報は、データフローグラフの１つまたは複数のサブグラフの１つまたは複数のコンポーネントにさらに関連する。
【０００８】
１つまたは複数の変数の少なくとも第１の変数は、１つまたは複数のサブグラフの１つの第１のサブグラフへの参照を含む項として式中で表される。
【０００９】
第１の変数は、第１のサブグラフ内の第１のコンポーネントへの参照を含む。
【００１０】
１つまたは複数の変数の少なくとも１つは、データフローグラフの１つまたは複数、１つまたは複数のサブグラフ、および、１つまたは複数のコンポーネントの特性に相当する。
【００１１】
１つまたは複数の式を評価する工程は、事前に定義された条件に従って１つまたは複数の式を評価する工程を含む。
【００１２】
事前に定義された条件は、トリガ事象の検出を含む。
【００１３】
トリガ事象は、１つまたは複数の処理リソースが１つまたは複数の処理リソースの要求に対して不足しているかについての判断を含む。
【００１４】
データ構造を定義する工程は、データフローグラフを横断して、１つまたは複数のフィールドのタイプおよび数の１つまたは複数を特定する工程を含む。
【００１５】
データフローグラフを横断する工程は、１つまたは複数の式に関連するデータフローグラフの一部分を横断する工程を含む。
【００１６】
データフローグラフの１つまたは複数のコンポーネントに関連する追跡情報を収集する工程は、１つまたは複数の式に少なくとも部分的に基づいて追跡情報をフィルタ処理する工程を含む。
【００１７】
本方法は、結果を１つまたは複数の閾値と比較する工程をさらに含む。
【００１８】
本方法は、比較する工程に応じて通知を生成する工程をさらに含む。
【００１９】
本方法は、通知に少なくとも部分的に基づいて１つまたは複数の自動化プロセスを実行する工程をさらに含む。
【００２０】
本方法は、ユーザインターフェースから１つまたは複数の式を受信する工程をさらに含む。
【００２１】
本方法は、１つまたは複数の式を含む事前に定義された式のセットを提供する工程をさらに含む。
【００２２】
評価する工程は、１つまたは複数の式を定期的に評価する工程をさらに含む。
【００２３】
本方法は、２つ以上の結果を使用して１つまたは複数の特性に関連するヒストグラムを生成する工程をさらに含む。
【００２４】
本方法は、１つまたは複数の式の定期的な評価結果に少なくとも部分的に基づいて、格納された過去のデータを更新する工程をさらに含む。
【００２５】
１つまたは複数の変数の少なくとも１つは、１つまたは複数の式を評価するという要求をコンピューティングシステムによって受信する前に過去のデータに格納された値に依存する。
【００２６】
本方法は、１つまたは複数のフィールドの１つの中に、ベクトル形式で、追跡情報に関連する複数の値を格納する工程をさらに含む。
【００２７】
複数の値のそれぞれは、特定のパラメータのそれぞれの異なる値に関連し、複数の値のそれぞれは、特定のパラメータのそれぞれの値に関連する追跡情報上で集約された特性の値である。
【００２８】
別の態様では、一般に、コンピュータ可読記憶媒体は、コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピュータプログラムを格納する。コンピュータプログラムは、コンピュータに、１つまたは複数の変数に対する１つまたは複数の演算を含む１つまたは複数の式を評価するという要求を受信させ、１つまたは複数の式を評価させるための命令を含む。該評価は、１つまたは複数のフィールドを含むデータ構造を定義することと、データフローグラフの１つまたは複数のコンポーネントに関連する追跡情報をデータフローグラフの実行中に収集することと、１つまたは複数のフィールドに追跡情報に関連する値を格納することと、１つまたは複数の式の１つまたは複数の変数を、１つまたは複数のフィールドに格納した値と置き換えて、１つまたは複数の式の評価結果を演算することとを含む。
【００２９】
別の態様では、一般に、コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピューティングシステム。コンピューティングシステムは、１つまたは複数の変数に対する１つまたは複数の演算を含む１つまたは複数の式を評価するという要求を受信するよう構成された入力デバイスまたはポートと、１つまたは複数の式を評価するよう構成された少なくとも１つのプロセッサとを含む。該評価は、１つまたは複数のフィールドを含むデータ構造を定義することと、データフローグラフの１つまたは複数のコンポーネントに関連する追跡情報をデータフローグラフの実行中に収集することと、１つまたは複数のフィールドに追跡情報に関連する値を格納することと、１つまたは複数の式の１つまたは複数の変数を、１つまたは複数のフィールドに格納した値と置き換えて、１つまたは複数の式の評価結果を演算することとを含む。
【００３０】
別の態様では、一般に、コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表す頂点を含むデータフローグラフの１つまたは複数の特性を表す１つまたは複数の式を評価するためのコンピューティングシステム。コンピューティングシステムは、１つまたは複数の変数に対する１つまたは複数の演算を含む１つまたは複数の式を評価するという要求を受信する手段と、１つまたは複数の式を評価する手段とを含む。該評価は、１つまたは複数のフィールドを含むデータ構造を定義することと、データフローグラフの１つまたは複数のコンポーネントに関連する追跡情報をデータフローグラフの実行中に収集することと、１つまたは複数のフィールドに追跡情報に関連する値を格納することと、１つまたは複数の式の１つまたは複数の変数を、１つまたは複数のフィールドに格納した値と置き換えて、１つまたは複数の式の評価結果を演算することとを含む。
【００３１】
態様は、以下の利点の１つまたは複数を含み得る。
【００３２】
データフローグラフを実行環境で実行する際、データフローグラフの実行をモニタして、例えば、データフローグラフのコンポーネントによって実行されているさまざまなコンピューテーションの進行を追跡するか、または、実行されているデータ処理に関連するさまざまな特性をサンプリングすることが有用である場合が多い。いくつかの事例では、ユーザは、処理されているデータの量（例えば、データの記録数もしくはバイト数）、および／または、データ処理中に消費されているリソースの量（例えば、コンポーネントによって使用されているＣＰＵ時間もしくはコンポーネントに関連する待ち時間）の追跡を希望する場合がある。いくつかの実行環境は、ユーザインターフェースの一部であるウィンドウに表示されるさまざまな特性を示すための追跡データストリームを受信するユーザインターフェースを提供するよう構成される。
【００３３】
本明細書に記載される技法のいくつかにより、ユーザは、ユーザがモニタリングに関心を示し得るある特定の特性を定義する式を動的かつ柔軟に提供することができる。いくつかの事例では、ユーザは、データフローグラフの実行中にそのデータフローグラフをモニタするための式を提供することができる。特性は、データフローグラフのサブグラフ内にあるデータフローグラフの一部分（例えば、コンポーネントまたはデータフローリンク）と関連し得る。ユーザは、システムがデータフローグラフの表現（例えば、ノードがコンポーネントを表し、リンクがデータフローを表す有向グラフとしてのデータフローグラフの表現）の適切な部分を横断する（または「少しずつ移動する」）ことを可能にする、十分に適格な経路の指定を可能にする表記を使用することができる。データ構造を生成して、ユーザが提供する式の評価に必要な追跡情報の一部分を保持することによって、追跡情報のライブストリームから集約され封入された適切な情報を使用して、効果的な様式で、オンザフライで式を評価することができる。ユーザは、追跡情報を理解することも読み取ることもできなければならないというわけではなく、単に、理解可能な式を生成するだけでよく、それに基づいて、システムは、適切な追跡情報を取得し、最新の情報を使用して式を評価することができる。
【００３４】
本発明の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００３５】
図面の説明
【図１】グラフに基づくコンピューテーションを実行するためのシステムのブロック図である。
【図２】データフローグラフの特性を評価するための例示的な手順のフローチャートである。
【図３】データフローグラフをモニタするためのシステムのブロック図である。
【図４】データフローグラフの特性を評価するための例示的な手順のフローチャートである。
【発明を実施するための形態】
【００３６】
説明
図１は、データフローグラフの特性を評価するための技法を使用することができる例示的なデータ処理システム１００を示す。システム１００は、記憶装置またはオンラインデータストリームとの接続部などの１つまたは複数のデータソースを含み得るデータソース１０２を含み、データソースのそれぞれは、さまざまな格納形式のいずれかの形式（例えば、メインフレームによって使用されるデータベース表、スプレッドシートファイル、フラットテキストファイルまたはネイティブ形式）でデータを格納することができる。実行環境１０４は、モニタモジュール１０６と、実行モジュール１１２とを含む。モニタモジュール１０６は、実行モジュール１１２上で実行する１つまたは複数のプロセスの特性をモニタするための１つまたは複数のプロセスを含む。例えば、実行モジュール１１２は、頂点間の有向リンク（作業要素のフローを表す）によって接続された頂点（データ処理コンポーネントまたはデータセットを表す）を含むデータフローグラフとしてアプリケーションを実行するよう構成することができる。データ処理コンポーネントは、入力データフロー上で作業要素を受信するための任意の数の入力ポートと、出力データフロー上で作業要素を提供するための任意の数の出力ポートとを有し得る。モニタモジュール１０６は、１つまたは複数のデータフローグラフを実行しているときに、１つまたは複数のデータフローグラフの特性をモニタするよう構成することができる。実行環境１０４は、ＵＮＩＸ（登録商標）オペレーティングシステムなどの適切なオペレーティングシステムの制御下で、１つまたは複数の汎用コンピュータをホストとすることができる。例えば、実行環境１０４は、ローカルで接続された（例えば、ＳＭＰコンピュータなどのマルチプロセッサシステム）もしくはローカルで分散された（例えば、クラスタもしくはＭＰＰとして結合された複数のプロセッサ）、または、リモートで接続されたもしくはリモートで分散された（例えば、ローカルエリアネットワーク（ＬＡＮ）および／もしくは広域ネットワーク（ＷＡＮ）を介して結合された複数のプロセッサ）、あるいは、それらの任意の組合せの、複数の中央演算処理装置（ＣＰＵ）を使用したコンピュータシステムの構成を含む複数ノード並列演算環境を含み得る。
【００３７】
いくつかの例では、モニタモジュール１０６は、データ格納システム１１６からデータを読み取る。例えば、モニタモジュール１０６は、データ格納システム１１６に格納された１つまたは複数の式１１４にアクセスすることができる。モニタモジュール１０６は、式１１４を使用して、実行モジュール１１２によって実行されているデータフローグラフの特性を評価することができる。以下でさらに詳細に論じられるように、モニタモジュール１０６は、データフローグラフに関連する追跡情報を使用して、式１１４を評価することができる。実行モジュール１１２は、入力データを処理するために実行しているデータフローグラフへの入力として、データソース１０２からデータを読み取る。データソース１０２を提供する記憶装置は、実行環境１０４とローカルで接続する、例えば、実行環境１０４を実行しているコンピュータに接続された記憶媒体（例えば、ハードドライブ１０８）に格納することも、実行環境１０４とリモートで接続する、例えば、リモート接続上で、実行環境１０４を実行しているコンピュータと連通するリモートシステム（例えば、メインフレーム１１０）をホストとすることもできる。
【００３８】
実行モジュール１１２は、１つまたは複数のコンピュータプロセス（例えば、データフローグラフのコンポーネントに関連するプロセス）を実行することができ、モニタモジュール１０６は、実行モジュール１１２がデータフローグラフを実行しているときに、（例えば、実行モジュール１１２が実行するグラフプロセスとともに、実行環境で実行している１つまたは複数のモニタリングプロセスも使用して）データフローグラフのアクティビティをモニタすることができる。また、データ格納システム１１６は、開発環境１１８にアクセスすることができ、開発環境１１８では、開発者１２０は、以下で説明されるように、データフローグラフの１つまたは複数の特性を表す式１１４を定義することも入力することもでき、評価した式の結果を使用して措置を講じることもできる。式１１４は、データフローグラフの異なる特性を表す１つまたは複数の変数に対する１つまたは複数の演算の観点から定義することができる。演算の結果は、ユーザがモニタを所望する特性を表す式の値をもたらす。開発環境１１８は、いくつかの実装形態では、データフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境については、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」と称する米国特許出願公開第２００７／００１１６６８号に詳細に説明されている。そのようなグラフに基づくコンピューテーションを実行するシステムについては、参照により本明細書に組み込まれる米国特許第５，５６６，０７２号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表される個別のプロセスに情報を持ち込むおよび個別のプロセスから情報を引き出すための方法、プロセス間で情報を移動するための方法、ならびに、プロセスに対する実行順番を定義するための方法を提供する。このシステムは、プロセス間通信方法（例えば、グラフのリンクに従った通信経路は、ＴＣＰ／ＩＰもしくはＵＮＩＸ（登録商標）ドメインソケットを使用することも、共有メモリを使用して、プロセス間でデータを渡すこともできる）を選択するアルゴリズムを含む。
【００３９】
システム１００は、異なる形式のデータベースシステムを含むさまざまなタイプのシステムからデータを受信することができる。データは、恐らくヌル値を含む、それぞれのフィールド（「属性」または「列」とも呼ばれる）に対する値を有する記録として組織化することができる。データソース１０２から最初にデータを読み取る際、実行モジュール１１２は、通常、そのデータソース内の記録についてのいくつかの初期のフォーマット情報から始める。状況次第では、データソースの記録構造は、初めは知られていない場合があり、代わりに、データソースの分析後に決定される場合がある。記録についての初期情報は、異なる値を表すビット数と、記録内のフィールドの順番と、ビットによって表される値のタイプ（例えば、ストリング、符号付き／符号なし整数）とを含み得る。
【００４０】
図２は、データフローグラフの特性を評価するための例示的な手順２００のフローチャートを示す。本手順は、システム（例えば、システム１００（図１））がデータフローグラフの１つまたは複数の特性を表す式を評価するという要求を受信する（２０２）と開始する。式を評価するという要求を受信した後、システムは、１つまたは複数のフィールドを含むデータ構造を定義する（２０４）。いくつかの例では、データ構造は、実行がモニタされているデータフローグラフの表現を横断することによってフィールドが定義されるメモリ内データ構造である。一般に、データ構造内のフィールドは、式の評価に必要なデータを保持するよう構成される。
【００４１】
システム１００は、以下でさらに詳細に説明されるように、データフローグラフの異なる部分に関連する追跡情報を集約することによって、データフローグラフの実行中に追跡情報を収集する（２０６）。一般に、追跡情報は、データフローグラフを実行している間に生成され、データフローグラフならびにそのコンポーネントおよびサブコンポーネントのオペレーションについての情報の他に、さまざまなオペレーションが消費するリソースの量についての情報も提供することができる。一旦追跡情報が収集および／もしくは集約されれば（または、追跡情報が収集および／もしくは集約されてくると）、システムは、メモリ内データ構造のフィールドに、追跡情報に関連する値を格納する（２０８）。データ構造に値を格納した後、評価している式中の変数を、データ構造のフィールドに格納した値を使用して置き換える（２１０）。変数を既知の量と置き換えることで、システムは、次いで、式を評価して、結果を提供する（２１２）ことができる。図４の例に示されるように、結果は、さらなる処理タスクに使用することができる。また、結果は、以下の図３の例でさらに詳細に説明されるように、他の式を評価するために使用できる過去のデータの収集体に格納することもできる。
【００４２】
データフローグラフは、さまざまなレベルの抽象化によって指定することができる。それ自体がコンポーネントおよびリンクを含むデータフローグラフである「サブグラフ」は、単一のコンポーネントとして別の包含データフローグラフ内で表すことができ、サブグラフ内でコンポーネントへの入力を提供する入力ポートと、サブグラフ内でコンポーネントからの出力を提供する出力ポートとを示す。サブグラフは、開発者が所定のサブグラフを低レベルまで掘り下げてそのサブグラフ内のコンポーネントおよびリンクを見ることを可能にする一方で、データフローグラフの開発におけるモジュール方式および再利用可能性、ならびに、データフローグラフの所定のレベルで開発者からコンポーネントおよびコンポーネント間のリンクのサブセットの複雑性を隠す能力を可能にする。
【００４３】
図３は、実行モジュール１１２によって実行されるデータフローグラフ３０２の特性をモニタする例示的なシステム３００を示し、データストア３１６と、式評価エンジン３２２と、グラフ縦断エンジン３３０とを含み、式評価エンジン３２２とグラフ縦断エンジン３３０の両方ともモニタモジュール１０６によって使用され、式３２４を受信して評価し、データフローグラフ３０２のモニタされた特性を表す結果を提供する。式３２４は、例えば、式評価エンジン３２２およびグラフ縦断エンジン３３０がデータ格納システム１１６からアクセスすることができる。データフローグラフ３０２は、データフロー（例えば、データソース１０２から提供され、サブグラフによって処理された記録などのデータ要素のフロー）を表すリンク３２８によって接続された第１のサブグラフ３０４と第２のサブグラフ３０６とを含む。サブグラフ３０４は、データフロー（例えば、データソース１０２から提供され、コンポーネントによって処理された記録などのデータ要素のフロー）を表すリンク３２６によって接続された第１のコンポーネント「Ｃ１」３０８と第２のコンポーネント「Ｃ２」３１０とを含む。また、システム３００は、グラフ３０２のコンポーネントおよびサブグラフの実行に関連する追跡情報を集約する集約エンジン３１２も含み、集約エンジン３１２は、データストア３１６と通信可能に接続される。集約エンジン３１２は、以下でさらに詳細に説明されるように、データフローグラフ３０２ならびにそのサブグラフおよびコンポーネントに関連する追跡情報を式評価エンジン３２２に渡すよう構成され、式評価エンジン３２２もまた、データストア３１６と通信可能に接続される。集約エンジン３１２は、実行モジュール１１２の一部として、またはその代替として、モニタモジュール１０６の一部として実装することができる。
【００４４】
１つのデータフローグラフと少数のサブグラフおよびコンポーネントのみ示されているが、データフローグラフは、モジュールの実体であり、他のデータフローグラフと接続しても、組み合わせてもよい。その上、図３の例は比較的少数のサブグラフおよびコンポーネントを示す簡単な例であるが、データフローグラフ３０２は任意の数のサブグラフを含み得、各サブグラフは任意の数のコンポーネントを含み得る。
【００４５】
いくつかの例では、データストア３１６は、データ格納システム１１６のメモリ（例えば、揮発性および／または不揮発性メモリ）に格納される。データストア３１６は、集約された追跡情報を格納するための少なくとも１つのデータ構造３１８を格納する。いくつかの例では、データ構造３１８は、フィールドによって定義される構造を有する記録内に１つまたは複数の追跡情報値を格納するための１つまたは複数のフィールド３２０Ａ、３２０Ｂ、３２０Ｃおよび３２０Ｄを含む。
【００４６】
図３の例では、グラフ縦断エンジン３３０は、以下でさらに詳細に説明されるように、式３２４を分析し、データフローグラフ３０２の表現を横断する際にどの情報が必要かを判断し、データ構造３１８の定義を決定する。この横断は、新しい式３２４の受信に応じて、データフローグラフ３０２の実行前またはデータフローグラフ３０２の実行中に起こり得る。データフローグラフ３０２の実行中は、集約エンジン３１２は、定義されたデータ構造３１８に、集約した追跡情報を入力する。式評価エンジン３２２は、情報が入力されたデータ構造３１８を使用して式３２４を評価する。式３２４を評価した後、評価結果は、データフローグラフ３０２の１つまたは複数の特性の表現を提供する。結果は、場合により、データストア３１６内の過去のデータ３３２の収集体に格納することができる。
【００４７】
いくつかの例では、開発者１２０（図１）などのユーザは、式３２４を入力して、ユーザインターフェースを通じて評価する。ユーザは、評価のための新しい式を入力することができる（例えば、ユーザは、何らかの形式のプログラミング言語もしくは式作成ツールを使用して、評価する新しい式を定義することができる）か、または、ユーザは、事前に設定された式もしくはデフォルト式などの保存された式のリストから選択された式などの既存の式を入力することができる。一般に、ユーザは、１つまたは複数のデータフローグラフの特定の特性についての情報を得るために式を入力することができる。例えば、ユーザが、コンポーネントＣ１およびＣ２が消費するリソースの量（例えば、１つまたは複数のＣＰＵがコンポーネント用のプロセスの実行に費やす時間などのＣＰＵリソース）を評価することを希望すれば、ユーザは、以下の式を選択することも作成することもできる。
消費されたＣＰＵリソース＝（ＳＧ１．Ｃ１．ｃｐｕ＋ＳＧ１．Ｃ２．ｃｐｕ）
上記の式は、「ドット表記」式の一例である。式中の項は、データフローグラフの異なる部分に相当する名前（例えば、サブグラフ、コンポーネント、ポート、リンク）と、データフローグラフのそれらの部分に関連する特性とを含む。サブグラフまたはコンポーネントの名前の間に存在する式中の「ドット」は、「ドット」の右側のサブグラフまたはコンポーネントが「ドット」の左側のサブグラフまたはコンポーネント内に存在することを示す。式中の最後の「ドット」の後にくる最後の名前は、モニタされている「ドット」の左側の要素の特性に相当する。項「ＳＧ１．Ｃ１．ｃｐｕ」は、コンポーネントＣ１  ３０８によって消費されているＣＰＵリソースを提供し、同様に、項「ＳＧ１．Ｃ２．ｃｐｕ」は、コンポーネントＣ２  ３１０によって消費されているＣＰＵリソースを提供する。上記の式では、２つの項を足して、２つのコンポーネントＣ１  ３０８およびＣ２  ３１０によって消費されている全ＣＰＵリソースを得る。項ＳＧ１．Ｃ１．ｃｐｕおよびＳＧ１．Ｃ２．ｃｐｕは、式の評価前または評価中にデータ構造３１８のフィールドから値を提供することができる変数である。
【００４８】
ＣＰＵリソースを含むいくつかの特性は特定のパラメータによって分解することができ、そのパラメータの異なる値に対してその特性を別々にモニタすることができる。例えば、ＣＰＵリソース変数に対する複数の異なる値は、「ホスト」パラメータのそれぞれの値に対するデータ構造３１８のフィールドに（例えば、ベクトルとして）格納することができる。特定のサブグラフの特定のコンポーネントは、異なるホストコンピュータ上で並行して実行する異なるスレッドを有し得る。各ホストコンピュータは、複数のＣＰＵを有し得る。この例では、集約エンジン３１２は、各ホスト上ですべてのＣＰＵ上のＣＰＵ時間を集約して、各ホストに対してＣＰＵ時間の単一値をもたらす。これらの値は、データ構造３１８のフィールドにベクトル形式で格納される。フィールドを使用して式の変数に値を提供すると、場合により、全体的結果としてまたはホストによって分解された結果として、式の結果をユーザに表示することができる。式の結果を追加の処理（例えば、警告を定義するため）に使用する場合、ユーザは、チェックして（例えば、チェックボックスを使用して）、全体的結果を使用すべきかまたはホストによって分解された個々の結果を使用すべきかを示すことができる。例えば、警告をいつトリガするかを決定するために式に関連する閾値を定義する際、「全体」のチェックボックスがチェックされていれば、式の全体的結果に関連付ける閾値を受信するための単一の入力インターフェースが提供される。「全体」のチェックボックスがチェックされていなければ、各ホストに対するそれぞれの結果に関連付ける複数の閾値を受信するための複数の入力インターフェースが提供される。
【００４９】
上記の例では、式３２４が、データフローグラフ３０２の２つのコンポーネントによって消費されているＣＰＵリソースに関連する特性を定義するが、式評価エンジン３２２を使用して、他の特性を表す式を評価することもできる。例えば、式を評価して、コンポーネントを通過する記録（またはバイト）数、入力データセットから読み取られるかまたは出力データセットに書き込まれる記録（またはバイト）数、経過時間などを提供することができる。いくつかの特性は、他の特性の観点から表すことができ、例えば、num_records/elapsed_timeは平均処理速度（例えば、１秒当たりの記録数の単位で）を表す。また、式評価エンジン３２２は、複数の式を同時に評価することもでき、事前に定義されたスケジュールに従って式を評価するようさらに構成することができる。例えば、式評価エンジン３２２は、１時間に１回、または、処理リソースがそれらのリソースの要求に対して不足しつつあるかについての判断などの１つもしくは複数のトリガ事象もしくは条件の検出時に、式３２４を評価するよう構成することができる。
【００５０】
式３２４を評価すべきであるという指示を受信した後、グラフ縦断エンジン３３０は、式３２４の字句解析およびデータフローグラフの表現を横断することによって決定されたデータフローグラフ３０２の分析に基づいて、データストア３１６内のデータ構造３１８を定義する。例えば、コンポーネントへの参照に使用される項は、データフローグラフのどれほど深いレベルにコンポーネントが位置するかに応じた構造を有する。ドット表記は、データフローグラフの表現を横断して、＜サブグラフ＞．＜コンポーネント＞として表される目的とするコンポーネントに到達するための十分に適格な経路を提供する。コンポーネント間のリンクへの参照に使用される項は、＜コンポーネント＞＿から＿＜コンポーネント＞として表される。データ構造３１８は、式３２４中の１つまたは複数の変数の代わりとなるように最終的に式評価エンジン３２２に提供される値を保持するよう構成されたフィールドを含む。
【００５１】
データ構造３１８を生成する前、グラフ縦断エンジン３３０は、データフローグラフ３０２の表現を横断（または「少しずつ移動」）し、式３２４の評価に必要なフィールド３２０Ａ〜Ｄの数およびタイプを決定する。データフローグラフ３０２を横断するためのいくつかの手順では、グラフ縦断エンジン３３０は、データフローグラフ３０２の最高レベル（コンポーネントおよびサブグラフは、最高レベルでのノードとして表される）でデータフローグラフ３０２を検査することによって、および、式３２４の評価に関連するデータフローグラフの部分を特定するため、データフローグラフ３０２のノードを接続するデータフローリンクをたどって、式中の変数名をデータフローグラフの部分の名前（例えば、コンポーネント、ポート、リンク）と比較することによって開始する。すなわち、グラフ縦断エンジン３３０は、式３２４およびデータフローグラフ３０２を分析して、特定のタイプ（例えば、データタイプ）の１つまたは複数のフィールドを定義する。例えば、上記の式では、データ構造３１８は２つのフィールドを有し、それぞれのタイプはＣＰＵリソースに関連することになる。データフローグラフ３０２のトポロジー（グラフ縦断エンジン３３０によって決定される）は、データ構造３１８内に含まれるフィールドの数およびタイプを定義する。例えば、データフローグラフが３つのトポロジーを有するノードの有向グラフとして表される場合、式に基づいて、グラフ縦断エンジン３３０は、ルートから式で参照されるコンポーネント／データフローを表すノード／リンクまでどの経路を横断すべきか判断することができる。式で参照されるコンポーネントまたはデータフローを表すノードまたはリンクが経路に含まれていない場合は、グラフ縦断エンジン３３０は、その経路を横断する必要はない。あるいは、いくつかの実装形態では、グラフ縦断エンジン３３０は、グラフ全体を横断することができる。
【００５２】
データ構造３１８を定義すると、データフローグラフ３０２は実行モジュール１１２によって実行され、実行中は、モニタモジュール１０６が１つまたは複数の式の評価を管理する。評価する各式に対し、定義されたフィールドの仕様に基づいて、データ構造の対応するインスタンスを生成し、追跡情報を受信する。集約エンジン３１２は、実行モジュール１１２によって提供される追跡情報のフローからどの追跡情報を抽出すべきか示す入力を受信する。集約エンジン３１２は、定義されたデータ構造３１８のインスタンスの定義されたフィールド３２０Ａ〜Ｄを、式３２４の評価に関連する値で満たすよう試みる。これらの値は、データフローグラフ３０２の実行中に実行モジュール１１２によって生成される追跡情報によって提供される。実行モジュール１１２は、さまざまなサブグラフおよびコンポーネントを実行すると、追跡情報を生成することができ、追跡情報は、集約エンジン３１２によって集約される。いくつかの例では、集約エンジン３１２は、データフローグラフ３０２のプロセスとともに実行されるプロセスを使用して実装し、個々のコンポーネント、サブグラフおよびデータフローの特性を説明する追跡情報を収集することができる。
【００５３】
適切な追跡情報をフィールドに提供するため、集約エンジン３１２は、データフローグラフのどの態様が式３２４の評価に関連するかを特定するためにデータ構造３１８の生成されたインスタンスを分析する。データ構造３１８のインスタンスを生成するプロセスは、いくつかの実装形態では、再度実行中にグラフ縦断エンジン３３０を使用して、データフローグラフの表現を横断し、追加情報を得る（定義されたフィールドに加えて）か、または、データフローグラフの構造を実証する（例えば、実行前の初期の横断からかなりの時間の量が経過している場合）工程を含む。
【００５４】
データフローグラフの異なる態様には異なるタイプの集約が必要とされる場合がある。集約の１つのタイプは、低レベルからデータフローグラフのあるレベルに対する追跡情報を提供するために起こる。例えば、集約エンジン３１２は、ある特定の数値を、サブグラフ内の個々のコンポーネントの特性（例えば、各コンポーネントに対する個々のＣＰＵ時間）を表す追跡情報内に追加し、サブグラフの特性（例えば、総ＣＰＵ時間）を表す総和を提供する。他のタイプの集約は、データフローグラフの他の態様を伴う。並行なデータフローグラフの場合、入力データフロー上で受信したデータを並行して処理する所定のコンポーネントの複数のインスタンスが存在する（例えば、入力データフロー上のデータは、例えば、異なるＣＰＵで実行することができる異なる並行インスタンス間をパーティションで区切ることができる）。集約エンジン３１２は、並行コンポーネントの各インスタンスに対する異なる追跡情報を集約し、集約値（例えば、各インスタンスに対する総ＣＰＵ時間）を提供する。データ構造３１８内の、式３２４の評価に関連するデータフローグラフの部分（例えば、関連するデータフロー、コンポーネントまたはサブグラフ）に相当するフィールドに追跡情報を格納した後、式評価エンジン３２２は、データ構造３１８を受信し、格納した情報（例えば、コンポーネントＣ１  ３０８およびＣ２  ３１０についての情報）を使用して式３２４を評価する。いくつかの事例では、集約エンジン３１２は、式３２４の評価のために必要以上のそれらのコンポーネントに対する追跡情報を提供する（例えば、集約エンジン３１２は、コンポーネントを通過する記録数など他の式で参照された変数および現在評価している式３２４で参照されたコンポーネントのＣＰＵ使用状況に関連する追跡情報を提供することができる）が、式評価エンジン３２２は、不要な追跡情報をフィルタ除去し、式３２４の評価に必要な追跡情報のみを抽出するよう構成することができる。
【００５５】
集約エンジン３１２によって関連追跡情報を収集した後、追跡情報は、データ構造３１８内の適切なフィールドに格納される。フィールド３２０Ａ〜Ｄは定義された「タイプ」のものであり、追跡情報は同じタイプのものになるようフィルタ処理されたため、フィールド３２０Ａ〜Ｄには、互換性の適切なタイプの追跡情報を提供することができる。フィールド３２０Ａ〜Ｄを関連追跡情報（または、その追跡情報に関連する値）で満たした後、データ構造３１８は、式評価エンジン３２２によって評価できる記録の形を取った。この時点で、式評価エンジン３２２は、フィールド３２０Ａ〜Ｄから値を引き出し、式３２４で定義された変数と置き換えることができる。
【００５６】
式３２４中の変数をフィールド３２０Ａ〜Ｄからの値と置き換えた後、式評価エンジン３２２は、式３２４を評価して所望の結果を生成することができる。上記の例示的な式を使用すると、その式の評価結果は、コンポーネントＣ１  ３０８およびコンポーネントＣ２  ３１０の総ＣＰＵ使用状況を示すことになる。式３２４の評価は、データフローグラフを実行している間に実行することができる。
【００５７】
図４は、式の評価から結果を得た後で実行することができる２つの任意選択のオペレーション４１４、４１６を除いて、例示的な手順２００（図２）と同様の例示的な手順４００である。手順４００は、システム（例えば、システム１００（図１））がデータフローグラフの１つまたは複数の特性を表す式を評価するという要求を受信する（４０２）と開始する。式を評価するという要求を受信した後、システムは、１つまたは複数のフィールドを含むデータ構造を定義する（４０４）。いくつかの例では、データ構造は、評価されているデータフローグラフの表現を横断することによってフィールドが定義されるメモリ内データ構造である。一般に、データ構造内のフィールドは、式の評価に必要なデータを保持するよう構成される。
【００５８】
システム１００は、データフローグラフの異なる部分から生成された追跡情報を集約することによって、データフローグラフから追跡情報を収集する（４０６）。一般に、追跡情報は、データフローグラフを実行している間に生成され、データフローグラフならびにそのコンポーネントおよびサブコンポーネントのオペレーションについての情報の他に、さまざまなオペレーションが消費するリソースの量についての情報も提供することができる。一旦追跡情報が収集および／もしくは集約されれば（または、追跡情報が収集および／もしくは集約されてくると）、システムは、メモリ内データ構造のフィールドに、追跡情報に関連する値を格納する（４０８）。データ構造に値を格納した後、評価している式中の変数を、データ構造のフィールドに格納した値を使用して置き換える（４１０）。変数を既知の量と置き換えることで、システムは、次いで、式を評価して、結果を提供する（４１２）ことができる。
【００５９】
結果を判断した後、システムは、結果を１つまたは複数の閾値と比較する（４１４）ことができる。例えば、システムが以前に説明された式を評価して、コンポーネントＣ１  ３０８およびＣ２  ３１０のＣＰＵ使用量（例えば、８０％使用）を表す結果を得たと仮定する。システムは、８０％の結果をそれらの２つのコンポーネントに関連する最大ＣＰＵ使用に関連する閾値（例えば、５０％）と比較することができる。結果が閾値を超える場合、システム内で通知を生成して、その条件の管理者に警告する（４１６）ことができる。通知は、警告または警報の形であってもよく、自動化プロセスを実行させてもよい（例えば、追加のＣＰＵリソースを解放してコンポーネントＣ１  ３０８およびＣ２  ３１０に追加のリソースを提供する）。
【００６０】
いくつかの例では、結果を使用して、時間に対するまたは他の値に対する１つまたは複数の特性を示すことができる。例えば、式の評価結果を使用して、収集した過去のデータ３３２に基づく１つまたは複数の評価特性を表すヒストグラムまたは他の統計値を生成することができる。ヒストグラムは、レポートの形で定期的に自動的に生成してもよく、システム３００の管理者が要求に応じて生成してもよい。
【００６１】
以前に評価された式の結果は過去のデータ３３２に格納されるため、いくつかの式は、その変数の既定数の以前の評価上で演算された変数の平均値などの過去のデータ３３２の関数である項を含み得る。ユーザは、１つまたは複数のグラフを実行するジョブの性能をそのジョブの過去の性能と比較する式を書き込むことができる。そのような式を使用して、履歴ベースの警告（例えば、式によって測定されたグラフ測定基準がその過去値から逸脱することをユーザに通知する警告）を生成することができる。デフォルトでは、システム３００は、評価された各式の指定数の過去の結果を過去のデータ３３２に格納するよう構成することができる（例えば、最近の５０回のジョブ実行から）。指定数は、ユーザが構成することができる。
【００６２】
特定の式によって定義された測定基準の値は、測定基準の過去値を含む他の式で参照することができる。以下は、過去のデータ３３２に依存する測定基準の過去値または統計値を参照するためにユーザが使用できる変数の構文の一例である。
value：モニタされているジョブの測定基準の現在値
max_value：格納された過去値上の測定基準の最大値
min_value：格納された過去値上の測定基準の最小値
avg_value：格納された過去値上の測定基準の平均（average）（平均（mean））値
stdev_value：格納された過去値上の測定基準の標準偏差
【００６３】
これらの変数を使用すると、ユーザは、以下のようなブール式を構築することができる。
value > avg_value + stdev_value
この式を使用して、値がその過去平均を標準偏差以上上回る場合にトリガされる警戒通知を定義することができる。
【００６４】
履歴ベースの式を構築する際、過去のデータ内の基本的な個々の過去値へのアクセスをユーザに与えることができる。例えば、測定基準の個々の過去値は、ベクトルhistory[i]としての参照であり得、iは、どれほど前に値が捕捉されたかを示す。例えば、測定基準が、ジョブによって消費されるＣＰＵ時間を表す式によって定義される場合、最近完了したジョブ実行によって使用された総ＣＰＵ時間の値は、history[0]として表される。次の最近完了したジョブ実行に対する値は、history[1]として表される。このhistoryベクトルの大きさは、history_lengthとして表される。max_valueおよびavg_valueなどの統計値は、過去値のこの数値上で計算される。history_length時間より少ない数値でジョブが実行される場合、したがって、history[i]ベクトルが格納された過去値history_lengthより少ない数値を有する場合、システム３００は、すべての格納された過去値を使用して統計値を演算する。場合により、システム３００は、提供する統計値がより意味深いものであるように、統計値を提供する前に最小数の過去値（例えば、少なくとも３）を格納する必要がある場合がある。history[i]で利用可能な個々の値を使用すると、ユーザは、履歴ベースの警告を定義することができる。例えば、以下の式は、その現在値と、最近の２回のジョブ実行上のその値の平均との差として最近の「ドリフト」を測定基準の値で、すなわち、value - (history[0] + history[1])/2で表す。このブール式を使用して、例えば、グラフジョブがその最近の性能を特徴付ける測定基準から何らかの方法で逸脱し始めた場合にユーザに通知することができる。
【００６５】
いくつかの例では、データフローグラフは、特定のユーザの関心に合わせて調整された追跡情報を生成することができる。例えば、多くのデータフローグラフがＣＰＵ使用状況に関連するデータを生成する一方で、データフローグラフは、特定のコンポーネントを通過するドルの枚数に関連する追跡情報を生成するよう構成することもできる（例えば、ユーザが金融サービス業界にいる場合）。したがって、式は、ユーザのビジネスエリアに重要な特性の評価のための強力なツールであり得る。
【００６６】
上記で説明されるデータフローグラフの特性を評価する手法は、コンピュータ上で実行するためのソフトウェアを使用して実施することができる。例えば、ソフトウェアは、１つまたは複数のプログラムされたまたはプログラム可能なコンピュータシステム（それは、分散型、クライアント／サーバまたはグリッドなどのさまざまなアーキテクチャのものである）上で実行する１つまたは複数のコンピュータプログラムの手順を形成し、コンピュータシステムはそれぞれ、少なくとも１つのプロセッサと、少なくとも１つのデータ格納システム（揮発性および不揮発性メモリならびに／または格納要素を含む）と、少なくとも１つの入力デバイスまたはポートと、少なくとも１つの出力デバイスまたはポートとを含む。ソフトウェアは、例えば、データフローグラフの設計および構成に関連する他のサービスを提供する大規模なプログラムの１つまたは複数のモジュールを形成することができる。グラフのノードおよび要素は、コンピュータ可読媒体に格納されたデータ構造、または、データリポジトリに格納されたデータモデルに適合する他の組織化されたデータとして実装することができる。
【００６７】
ソフトウェアは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能なＣＤ−ＲＯＭなどの記憶媒体上で提供されても、ネットワークの通信媒体上で、ソフトウェアが実行されるコンピュータの記憶媒体に送達されてもよい（伝播信号で符号化される）。機能のすべては、特殊用途のコンピュータ上か、または、コプロセッサなどの特殊用途のハードウェアを使用して実行することができる。ソフトウェアは、ソフトウェアによって指定されるコンピューテーションの異なる部分は異なるコンピュータによって実行される分散様式で実施することができる。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能な記憶媒体もしくはデバイス（例えば、ソリッドステートメモリもしくは媒体、または、磁気もしくは光媒体）上に格納されるか、または、同記憶媒体もしくはデバイスにダウンロードされるが、それは、コンピュータシステムで記憶媒体もしくはデバイスを読み取り、本明細書に記載される手順を実行する際にコンピュータを構成および動作するためである。また、本発明のシステムは、コンピュータ可読記憶媒体として実装され、コンピュータプログラムを用いて構成されるものと考慮され得、そのように構成された記憶媒体は、特定の事前に定義された様式でコンピュータシステムを動作させ、本明細書に記載される機能を実行する。
【００６８】
本発明の多くの実施形態について説明してきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更を行うことができることが理解されよう。例えば、上記で説明された工程のいくつかは、順番に依存しないものであり得、したがって、説明されている順番とは異なる順番で実行することができる。
【００６９】
前述の説明は、例示を意図するものであり、本発明の範囲を限定するものではなく、本発明の範囲は、添付の特許請求の範囲によって定義されることを理解されたい。例えば、上記で説明された多くの機能工程は、処理全体に実質的に影響を与えることなく、異なる順番で実行することができる。他の実施形態は、以下の特許請求の範囲内にある。
【図１】
0005878537.tif 000002
【図２】
0005878537.tif 000003
【図３】
0005878537.tif 000004
【図４】
0005878537.tif 000005