JP5030592B2 - 監視ルールのスケーラブル(scalable)な同期処理および非同期処理 - Google Patents

監視ルールのスケーラブル(scalable)な同期処理および非同期処理 Download PDF

Info

Publication number
JP5030592B2
JP5030592B2 JP2006536574A JP2006536574A JP5030592B2 JP 5030592 B2 JP5030592 B2 JP 5030592B2 JP 2006536574 A JP2006536574 A JP 2006536574A JP 2006536574 A JP2006536574 A JP 2006536574A JP 5030592 B2 JP5030592 B2 JP 5030592B2
Authority
JP
Japan
Prior art keywords
rules
instructions
rule
instruction
runtime engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006536574A
Other languages
English (en)
Other versions
JP2007519075A (ja
Inventor
アール.ベック ダグラス
ジェイ.メンジーズ スティーブン
ダブリュ.マッカラム レイモンド
アール.パランカ ラドュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007519075A publication Critical patent/JP2007519075A/ja
Application granted granted Critical
Publication of JP5030592B2 publication Critical patent/JP5030592B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ソフトウェア・アプリケーションのシステム管理に関し、より詳細には、ルールを非同期処理するルールエンジンに関する。
本出願は、2003年10月24日出願のSCALABLE SYNCHRONOUS AND ASYNCHRONOUS PROCESSING OF MONITORING RULESという名称の米国特許出願第10/693,072号明細書の優先権を主張する。この出願全体を本明細書に組み込む。本出願は、同時係属の、2003年10月23日出願のMODEL−BASED MANAGEMENT OF COMPUTER SYSTEMS AND DISTRIBUTED APPLICATIONSという名称の米国特許出願第10/692,216号明細書、2003年10月24日出願のRULES DEFINITION LANGUAGEという名称の米国特許出願第10/692,660号明細書、2003年10月24日出願のUSING URI’S TO IDENTIFY MULTIPLE INSTANCES WITH A COMMON SCHEMAという名称の米国特許出願第10/693,588号明細書、および2003年10月23日出願のUSE OF ATTRIBUTION TO DESCRIBE MANAGEMENT INFORMATIONという名称の米国特許出願第10/692,432号明細書に関連するものである。
従来方式のシステム管理は、概ね場当たり的である。アプリケーション開発者は、自身のアプリケーションを管理し、高い信頼性を実現するための体系化されたフレームワークをもっていない。このような管理アーキテクチャをうまく進めるために採用される多くの言語は、本来シングルスレッドであり、マルチタスク処理を行うにはそのサポートを付加する。そのため、これらの言語では、スレッドなどのオペレーティングシステムによりサポートされたコンストラクト(construct)を介してマルチタスク処理を実現するのはユーザの責任である。
ルールに基づくメカニズムを利用することにより、ソフトウェアにおける柔軟性が得られ、その結果、1つまたは複数のルールを交換することによってタスクおよびデータを容易に変更し得る。最も基本的なプリミティブ(primitive)は、状態を評価し、動作を開始するロジックを実装するルールである。例えば、あるルールは、システムディスクの状態を監視し、ディスクの使用率がある閾値未満になったときにエラーを報告し得る。別のルールは、プロセッサの利用率を監視し、この利用率がある閾値よりも大きくなったときにエラーを報告し得る。典型的な監視システムでは、両方のルールが同時に実行されることになる。ユーザが、Visual Basic .Netなどの典型的なプログラミング言語を使用したい場合、このユーザは、ルールの意図を表すロジックに加えて、複数のルールが同時に実行されるようにこれらのルールをスケジュールするコードを記述しなければならないことになる。
多数のルールの同時処理をうまく進める改善されたルールに基づくエンジンが求められている。
本発明のいくつかの態様を基本的に理解するために、本発明の概要を簡略化して以下に示す。この概要は、本発明を広範に概説したものではない。本発明の主要不可欠な要素を明らかにし、また、本発明の範囲を限定するためのものではない。この概要の唯一の目的は、本発明のいくつかの概念を簡略化した形態で、後で示すより詳細な説明の前置きとして示すことである。
本明細書で開示し特許請求する発明は、その一態様において、ルールを命令に翻訳する翻訳コンポーネントを含む。こうすると、ルールランタイムエンジンでのこれらの命令の同時処理が容易になる。この翻訳コンポーネントは、ランタイムエンジンによってすべての状態が維持されるように、命令のインスタンス化をうまく進める。これらの命令は、ユーティリティ関数をコールし、ランタイムエンジンのコード実行切替えに優先権を渡すことをうまく進めるyield文を含む。
本発明の別の態様では、モデルに基づく革新的な管理フレームワークのルールエンジンが提供される。このルールエンジンにより、開発者は、システムを健全な状態にするために満たさなければならない基準を表す多数のルールを容易に記述し得る。このフレームワークは、多数のルールのスケジュールおよび同時処理をうまく進めるランタイムアーキテクチャを提供する。
監視ルールエンジンは、ルールが自動的にスケジュールされるように処理し、それによって、ユーザからこの負担が取り除かれ、ユーザは監視ロジックを表現することだけに集中することができる。例えば、「ディスクの使用率が80%を超えた場合、システム管理者に警告する」という意図を表すルールを記述することができる。監視ルールは、非コンピュータ世界におけるルールの集まりと同様に、(明示的に記述されない限り)すべてのルールが概念上同時に実施されるように暗黙的に同時に処理される。このようなルールエンジンは、ルールのスケジューリングを表現する負担がユーザから取り除かれるように、多数のルールの暗黙的な同時処理をうまく進めるランタイムアーキテクチャを提供する。その結果、ユーザに求められることは、スケジューリングを意識せずにこれらのルールを記述することだけであり、システムがスケジューリングおよび同時処理を引き受けることになる。
このルールエンジンは、RDL(Rules Definition Language)(ルール定義言語)として知られているルール言語をサポートする。このルール監視システムは、本質的に並列であること、すなわち同時に複数の事柄を監視すること、相関、使い易さ、スケーラビリティ、メモリ占有スペースが小さく、ルールの数に比例して増えること、CPUの利用率が低いこと、および拡張性という高水準の要件を実現し、それによって、既存のルールおよびランタイムソフトウェアの活用および拡張が容易になる。
上記の要件、特に使い易さおよび本質的な並列性は、ルールエンジンの設計に有利に働く。他の大部分の言語は本来シングルスレッドであり、マルチタスク処理を行うにはそのサポートを付加する。しかし、RDL言語は、これと正反対のものである。というのは、RDL言語は、ルールの論理的な並列実行が本質的に可能になるように設計されており、そのため、ルールの開発者は、同時ルール評価を実現するために多くの労力をかける必要がないからである。この本質的な並列性のために、このアーキテクチャでは、いくつかのスレッド間でルールのスケジューリングがサポートされる。
上記および関連する目的を達成するために、本明細書では、以下の説明および添付の図面に関連して本発明のある種の態様の例を説明する。ただし、これらの態様は、本発明の原理を利用し得る様々な方法を示すほんの数例であり、本発明は、このような態様およびそれらの均等物をすべて包含することを意図している。本発明の他の利点および新規な特徴は、本発明の以下の詳細な説明をこれらの図面と併せ読めば明らかになるであろう。
次に、図面を参照して本発明を説明する。これらの図面を通じて、同じ参照数字を用いて同じ要素を指す。以下の記載では、説明のために、本発明が十分に理解されるように多くの特定の細部を述べる。ただし、これらの特定の細部を用いずに本発明を実施し得ることが当業者には明らかであろう。他の例では、本発明の説明をうまく進めるために、周知の構造および装置はブロック図の形式で示す。
本出願では、「コンポーネント」および「システム」という用語は、コンピュータに関係するエンティティを指すためのものである。これらは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行ファイル、実行の流れ、プログラム、および/またはコンピュータとし得るが、これらに限定されるものではない。例として、サーバ上で実行されているアプリケーション、およびこのサーバはともにコンポーネントとし得る。1つまたは複数のコンポーネントが、実行の過程および/または流れの中に存在することもあるし、あるコンポーネントが、1つのコンピュータ上に局在し、かつ/または2つ以上のコンピュータに分散されることもある。
次に図1を参照すると、本発明のコンポーネントのブロック図が示されている。ルールの同時実行をうまく進めるルール監視システム100が提供される。監視システム100は、システム100に入力される1つまたは複数のルール104を表現する(RDL(ルール定義言語)と呼ぶ)入力命令コンポーネント102、命令102を読み込み、それらを並列実行形式に変換する翻訳コンポーネント106、およびこれら翻訳された命令を読み込み、これら翻訳された命令の効率的なスケジューリングおよび並列処理をうまく進めるルールランタイムエンジン108の3つの論理的エンティティを含む。
RDL命令102により、ソフトウェアおよびハードウェアのコンポーネントの可用性を監視するためのルールを定義することができる。例えば、あるルールは、システムディスクの状態を監視し、ディスクの使用率がある閾値未満になったときにエラーを報告し得る。別のルールは、CPUの利用率を監視し、この利用率がある閾値を超えたときにエラーを報告し得る。典型的な監視システムでは、両方のルールが同時に実行されることになる。
ランタイムエンジン108は、その入力として、RDLで表されたルールコードならびにこのルールコードをインスタンス化するのに使用する構成データ110を取り込む。このルールコードは、一連のルールタイプに編成される。各タイプは、監視中のシステムについて、ハードウェアおよび/またはソフトウェアのターゲットが所望の状態にあるかどうかを判定するのに必要とされるロジックを表現するものである。このタイプにより、ターゲットが所望の状態にないと判定される場合、このタイプは典型的には、なんらかの動作を行う。例えば、下記のコードは、システムが望ましくない状態に陥ったときに、エラーイベントが大量に送信されないように抑制するルールタイプを使用する。このルールロジックは、RuleType...EndRuleTypeキーワードによって囲まれ、他と区別されることに留意されたい。このコードは、翻訳コンポーネント106によって翻訳され、ルールエンジン108にロードされ、それによってこのコードは、インスタンス化され得る状態になる。ルールコードは、構成データ110をランタイムエンジン108にロードすることによってインスタンス化される。この構成データは、どのルールを実行するか、ならびにこのルールを実行するのに必要とされるパラメータを指定する。
一般に、ユーザが典型的なプログラミング言語を使用したい場合、ルールの意図を表現するロジックに加えて、同時に実行するルールをスケジュールするコードを記述する必要がある。本発明の新規なルールエンジン108は、ルールのスケジューリングを処理し、それによって、ユーザからこの負担を取り除き、ユーザは監視ロジックを表現することに集中することができる。
スケジューリングをうまく進めるために、RDLでルールを記述し、次いで、これらのルールを、C#などの任意の適切な言語に翻訳することができる。これら翻訳されるコードは、「優先権を渡す」というセマンティック(semantics)をコードに導入することによって、多数のルール間でスケジューリングがサポートされるように設計される。この場合、「優先権を渡す」ことは、ルールコードからエンジンコード、そして他のルールコードへのコンテキストスイッチになる。こうすると、ルールエンジン108が、スレッドの数が制限された状態でルールをマルチタスク処理することができる。
下記のルールでは、構成データは、実行すべきルールとしてDnsRuleを指定し、TimeLimit、CountLimit、およびRestartIntervalのパラメータ値を供給する。
Figure 0005030592
インスタンス化されたルールを並列に実行するために、翻訳コンポーネント106は、ルールコードを、ランタイムエンジン108との対話をうまく進める中間形式に翻訳する。この中間形式は、このルールについてのあらゆる状態(引数および局所変数)が、エンジン108によって維持されるように設計される。このルールは、コード実行切替えについてランタイムエンジン108に優先権を渡し、エンジン108によって提供されるユーティリティ関数をコールする。これら翻訳されたコードは、このコードにyield命令を周期的に挿入する。上記の例では、この翻訳により少なくとも、各ループの終了時、かつGetEventコールの後で優先権が渡されることになる。
上記のコードサンプルでは、状態情報が、引数および局所変数の両方の形式で維持される。TimeLimitおよびCountがそれぞれ、その例である。エンジン108がこのコードの実行を休止するとき、これらの変数の状態は、次にこのコードがエンジン108によって実行されるときにこの状態が利用可能になるように維持される。
Withinブロックでは、エンジン108のユーティリティ関数が使用される例が提供される。上記のコードには、Within...EndWithin文ブロックが存在し、この中に含まれるコードに対して、エンジン108に時間制限を実施させる。この中に含まれるコードを実行するのに指定された時間よりも長くかかる場合、エンジン108は、自動的にこのブロックのElse部分を実行させ、同時に、Within...Else文間のコードの実行を終了させる。このブロックの翻訳されたバージョンは、エンジン108に、Withinブロックに入ったという命令を送る。次いで、エンジン108は、このルールコードの実行を監視し、前に説明したセマンティックがはっきり示されるように適切な動作を行う。
ルールを監視する際に、特定のイベントが生じるまで待ち、次いで、動作を行うことは極めて一般的である。エンジン108は、多数のイベントを効率的に待つことをサポートし、この待ちをコード内に容易に表現させる。GetEvent命令コールは、何かが起こるまで待ち(Within文により表される時間制限によって範囲が制限される)、次いで、この情報に対して動作を行うことが望まれることを表現するのに好都合である。GetEvent命令は、エンジン108が、このコードを休止状態に置き、イベントをその代理で待つように翻訳される。このイベントが発生すると、このコードが再開され、このイベントに対して動作を行うことができる。
要約すると、エンジン108は、多数のルールを並列に効率的に実行する。これは、ルールをRDLで記述し、これらのルールを翻訳器106を介してランタイムエンジン108に送ることによって実施される。エンジン108は、これらの命令をインスタンス化する構成データを受け取って、1組の現実のルールに具体化する。
ルールエンジンおよびそのすべてのコンポーネントは、コンピュータ可読媒体の形で実施し得ることを理解されたい。
次に図2を参照すると、ルール監視プロセスの流れ図が示されている。説明を簡単にするために、本明細書で、例えば流れ図の形式で示す1つまたは複数の方法を一連の動作として示し説明するが、本発明は、動作の順序によって限定されず、いくつかの動作は、本発明に従って、本発明で示し説明するものと異なる順序で、かつ/または他の動作と同時に実施し得ることを理解かつ認識されたい。例えば、一連の相互に関連する状態またはイベントとして、状態図などの形で方法を代わりに表現し得るはずであることが当業者には理解かつ認識されよう。さらに、本発明による方法を実施するのに、例示した動作が必ずしもすべて必要とされないことがある。
200で、システムがルールを受け取り、それをRDLで記述する。202で、これらのルールを、ルールエンジンとの対話がうまく進む中間形式に翻訳する。204で、これら翻訳されたルールをランタイムエンジンにロードする。206で、このエンジンは構成データを受け取って、このコード化され翻訳されたルールをインスタンス化する。208で、ランタイムエンジンは、この翻訳されたルールをスケジュールし処理して並列処理を行う。次いで、このプロセスはStopブロックに達する。
次に図3を参照すると、本発明によるルールのインスタンス化の流れ図が示されている。300で、エンジンと対話するための中間形式にルールを翻訳する。302で、エンジンは、このルールについてのあらゆる状態を維持する。304で、この翻訳された形式は、このコードにyield命令を挿入する。306で、この翻訳された形式は、ルールコードの実行について、ランタイムエンジンに優先権を渡す。308で、この翻訳された形式は、エンジンによって提供されるユーティリティ関数をコールする。次いで、このプロセスはStopブロックに達する。
翻訳アルゴリズム
翻訳中、深さ優先トラバースラベル(depth−first traversal labels)および一時変数が、適切なノードごとに、順序が左から右かつ下から上になるように生成される。ラベル化されたノード(すべてのノードがラベルを取得することにはならない)はそれぞれ、一時変数の割当て、後続のラベルへの命令ブロックの割当て、およびリターン文を生成する。この翻訳アルゴリズムの利益は、コード化するのが容易であるということである。このアルゴリズムは、いくつかの命令ブロックを生成し、エンジンに戻る。以下に、簡単なassignment文の翻訳を示す(読みやすくするために、省略表記を用いる)。
rLn−命令ブロックをLnに設定し、戻る。
RDL:
Figure 0005030592
このassignment文の翻訳を以下に示す。
Figure 0005030592
RDLで記述したルールは、モジュールにグループ分けし得る。モジュールは、以下に示すように、例えば、Visual Basic StandardModuleAttributeなどのコンパイラによって、クラスに翻訳し得る。
Figure 0005030592
この翻訳されたコードを、一連の命令ブロックに分割する。これらの命令ブロックは、switch−caseブロックに分けられ、ルールフレームは、現在のブロックを維持するフィールドを有する。この命令ブロックは、MSIL(マイクロソフト中間言語)アドレスの均等物であるが、この翻訳ブロックの粒度レベルは、MSILの場合と同じではない。MSILは、いくつかのコンパイラ(例えば、C#、VB、および.NET)の出力として使用する言語である。各命令ブロックは、このブロック内のすべてのコードがユニットとして実行され、それによって、ブロック間でエンジンに優先権が渡されるという意味での作業アイテムを表す。
以下のコードは、命令ブロックがどのように使用されるかの簡単な例を示す。以下に示すルールは、3つの別個のブロックに分割される。各ブロックは、リターン文で終了する。このルールがエンジンに戻る前に、ルールフレームは、このルールへの再エントリ後に、次に実行すべき命令ブロックによって更新される。第2ブロックに示すように、switch文中でbreakが発生した場合には、このルールを終了する。
終了する前に、ルールがIExecutionStack.SetCallerFrame()を呼び出し、それによってエンジンは、次にcallerルールに入ることになる。
Figure 0005030592
Figure 0005030592
すべてのルールは、それらが例えば下記のシグネチャを有するように翻訳される。
Figure 0005030592
戻り値およびパラメータはすべて、スタック上に置かれる。ここで示すように、すべてのルールは、スタティック関数(static)として実装される。これらのスタティック関数は、モジュールのメンバであり、このモジュール内でこれらのメンバが定義される。本明細書の他のところで論じたように、モジュールはクラスに翻訳される。
ルール名は、RDLファイル内で表された名前と厳密に一致する。以下に、完全修飾されたルール名の例を示す。
Figure 0005030592
起動ルールは、起動属性<Startup>によってマーキングされる。すべての起動ルールは、ロードが成功した後でルールエンジンによって呼び出される。
Figure 0005030592
翻訳された起動ルールは次のようになる。
Figure 0005030592
ValueTypeが、参照により(ByRef)、Startを介して関数に渡される場合、その関数は、下記のメカニズムによってコピーを受け取るだけである。すなわち、callerの元コピーは変化しない。
次に図4を参照すると、ルール間の呼出しについてのプロセスの流れ図が示されている。RDLは、1つのルールを収容し、このルールが他のルールを呼び出す。ルール間の呼出しは、翻訳されたコードの形で以下のステップを必要とする。400で、callerについての戻りアドレスを設定する(caseブロック値)。402で、calleeに関連するルールフレーム(「RuleFrame」)が生成される。404で、このルールフレームについてのコンストラクタ(constructor)が、翻訳された関数へのデリゲート(delegate)を取得し、エンジンがこれを用いて実際のコールを行う。406で、フレーム内でcallee関数についてのパラメータを設定する。408で、calleeフレームをスタック上にプッシュし、フローはエンジンに戻る。ステップ400〜408は前段階を表す。410で、callerのスタックを設定する。412で、スタックからcalleeフレームがポップする。414で、任意のByRefパラメータについての局所変数を設定する。次いで、416に示すように、フローはエンジンに戻る。ステップ412および414は後段階を表す。
RDLの式は、式がルールの呼出しを含むときと、式が非同期関数の呼出しを含むときを除き、翻訳されたコードとほぼ1対1にマッピングされる。式がこれらのタイプの項を含むとき、この式は、3アドレスコードに要因として組み込まれる。コンパイラは、上から下かつ左から右にツリーを移動し、各ノードにおいて、プリミティブ翻訳をエミット(emit)する。AST(抽象構文ツリー)をトラバースすると、ラベルおよび一時変数の指定が得られる。
RDLは、変数、すなわち引数および局所変数について2つのスコープ(scope)を含む。式の評価が完全に縮小される場合、割当ては、引数または局所変数のいずれかに対して行うことができ、翻訳されることになる。
翻訳された関数はどれも、関連するカスタムのRuleFrameの派生クラスを有する。この派生クラスは、RDL関数に渡されるパラメータに直接相関するメンバを含む。これが翻訳されて関数になる。
関数が呼び出されると、派生RuleFrame内のメンバが、前に説明したように前段階において適切に設定され、RuleFrameがスタック上にプッシュされる。リターン後、前に説明したように後段階において、ByRefメンバが読み込まれ、callerフレームに適切に転送される。
RDLではポーリングがサポートされる。ポーリングをサポートするために、RuleFrameクラスは、ポーリング構造のスタックを維持する。このスタックにより、単一の関数内でポーリングのネストが可能になる。エンジンは、現在のフレームについてのポーリング構造およびスタックの最上部のポーリング構造にのみ従ってスケジュールする。ポーリングについての構成を行うために、スタックの最上部のところでポーリング構造を設定する。ポーリング命令は、それがポーリング構造を生成し、このポーリング構造をスタック上にプッシュするときに、1つのポーリングブロック当たり1回コールされるだけである。ブロックのエントリ後、時間枠が設定される。次いで、Return命令がセットされ、フローはエンジンに戻る。
その後、エンジンは、ポーリングが確立されたかどうかを調べ、実行スタックをスケジュールして実行を行う。ポーリング間隔が設定されるたびに、ポーリングが確立したことを示すフラグがフレーム内でセットされる。ポーリング間隔が変化しなかった場合、このポーリングフラグを手動でセットすることができる。エンジンは、スケジューリング後に、このフラグをリセットする。したがって、エミットされたコードが、ポーリングフラグをリセットすることはない。次いで、終了(exit)後、このポーリング構造はポーリングスタックからポップする。
RDLは、参照タイプおよび値タイプという2つのデータタイプを用いる。RDLの参照データタイプは、1対1でプログラミング言語の相手(例えばC#)に翻訳され、この相手のスコープに応じて、ローカルフレームまたはルールフレーム内に常駐する。このスコープについては、変数に関連して以下で論じる。値タイプは、ボックス化に関する計算可能なイシュー(issue)を提示する。というのは、値タイプは、参照によって渡すことができないからである。値タイプは、参照タイプ内でボックス化されることになる。
RDLでは、変数は、2つの別個のローカリティ(locality)を有する。変数は、関数についてのパラメータリスト内でスコープが設定されるか、あるいはその関数自体の中でスコープが設定される。変数が、パラメータリストの一部である場合、これらの変数は、派生RuleFrame命令内で生成される。変数が関数内で宣言される場合、これらの変数は、この関数のローカルフレーム内に常駐する。ローカルフレームは、コンテナ関数(container function)に極めて固有なものである。ベースRuleFrameクラスは、ローカルフレームへの参照を維持する。
アナリスト(analyst)呼出しは、従来方式の任意のオブジェクト呼出しと同じものである。これらの呼出しには、同期および非同期という2つの特色がある。同期呼出しは、関数についてのパラメータおよび戻り値がローカルフレーム上の変数(またはリテラル(literal))である直裁的なコールである。同期呼出しは、以下のようなものである。
Figure 0005030592
場合によっては、メソッドの呼出しは非同期である。これらのコールは、標準の非同期設計パターンに従う。戻りアドレスが設定され、フレームは、延期されたとマーキングされる。次いで、このオブジェクトに対して非同期BEGIN操作を呼び出す。
Figure 0005030592
最後の2つのパラメータは、非同期コールバックを提供する。これらは、ルールエンジン用のディスパッチャ(dispatcher)メソッドおよびルール用の実行スタックである。これら最後の2つのパラメータは、同じものであり、すべての非同期コールに必要とされる。第1の組のパラメータは、非同期コンポーネントの性質に応じて変化する。非同期コールが完了すると、エンジンディスパッチハンドラ(engine dispath handler)にスレッドがディスパッチされ、最終的にこのハンドラは、ルールにコールバックを渡す。
ループ
前に説明したように、ルールは、一連の命令ブロックに分割される。その結果、ループ処理は、条件付き確認、命令ブロック設定、およびエンジンに戻ることに分解される。これは、分岐命令により、1つの重要な差異を有する異なるアドレスに実行が移されるMSILに類似している。飛越し処理が行われる前に、ルールは常に、ノンプリエンプティブ(non−preemptive)スケジューリングを行うことができるようにエンジンに戻る。エンジンに戻ることは、タスクが消されることになることを必ずしも意味しないことに留意されたい。というのは、エンジンは、条件が許す場合には、直ちにこのタスクに戻ることができるからである。
ループ処理のコンストラクトは、MSILの場合と類似のやり方で策定され、それによって、すべてのループ処理コンストラクションが、それらがすべて同じ翻訳を共有するようにコンストラクションブロックの終了時の状態を調べる。すなわち、WHILEループに対して、このループの前の命令により、初期エントリ後に状態が調べられるようにブロックの終わりに至る初期分岐が生じる。
RDL言語は、多くのルール間でマルチタスク処理を本質的にサポートするように設計されている。その結果、翻訳されるコードは、ルールエンジンが、スレッドの数が制限された状態で、多数のルールの中で切り替わり、それによって、得られたアーキテクチャが本質的に、ノンプリエンプティブスケジューリングシステムに帰着され得るように構築される。
スケジューリング
スケジューリングの解決策の基礎を説明する前に、問題を明確に説明したほうがよい。多数のルールを含むルールドキュメントを考える。このドキュメント内には、CheckCDiskSpace、CheckCounter、およびCreateEventと呼ぶ3つのルールがある。また、簡単にするために、ルールエンジンは、1組のタスク間でマルチタスク処理を行うのにスレッドを1つしか使用しないように構成されると考える(CheckCDiskSpaceは、それを起動ルールとしてマーキングする属性を含み、かつ、同様にマーキングされた他のルールと並列に実行すべきであることに留意されたい)。概念上、このルールエンジンは、コンパイルされたアセンブリを処理し、例えば以下に示すCheckCDiskSpaceなど、並列に実行しなければならないすべてのルールの一覧を構築する。
次いで、各ルールを、タスク実行キュー内に配置して、ルールエンジンのスレッドがこれらを消費する。以下に示すルールの場合、CheckCDiskSpaceを初期実行キュー内に配置する。ある時点で、スレッドは、このルールをデキュー(dequeue)し、CheckCDiskSpaceの実行を開始する。いくらか後の時点で、このスレッドは、CheckCounterに出くわす。このスレッドは、この内部関数の呼出しを、この関数をそれが現れるとおりに同期して呼び出すことによって行う。これは、翻訳されたプログラム言語コード(例えばC#)が、ほぼ下記のRDLサンプルで示すとおりに現れることを示唆している。
しかし、この解決策では、ルールエンジンについての問題が生じる。ルールが、「While−Sleep(time)−End While」の形式の連続ループを含み、スレッドがこのループに入ると考える。このタイプのコンストラクトに出くわすと、このスレッドは、戻ることができず、したがって、他のタスクに対してスケジューリングされ得ない状況に陥る。これほど深刻ではないが、calleeが計算を行うのに尋常でない長さの時間を費やすときに逸脱が生じる。原因が何であれ、最終結果は、タスクの枯渇である。翻訳されたコードは、タスク間でスレッドをスケジュールして公平な処理を行うことができるようにタスクの切替えをうまく進めなければならない。したがって、翻訳されたコードは、関数の実行状態(引数、局所変数、および現在の命令)が保存され、後で再構成され得るように、協調し易いマルチタスク処理をうまく進める。
Figure 0005030592
タスク切替え
協調的なマルチタスク処理システムでは、スケジュールされたタスクがスレッドの制御を放棄して他のタスクの実行を可能にすることが求められる。RDLコードの翻訳が制御されるので、各タスクが制御を放棄することになる場所についての決定がなされる。タスクは、単に通常のやり方で現在実行中の関数から戻ることによって制御を放棄する。しかし、戻る前に、各タスクは、パラメータ、局所変数、および再エントリ後に関数中のどこに飛び越すかについての情報を含むスタックフレームを更新することになる(スタックフレームに関する詳細は、後で示す)。タスク切替えは、関数が戻ることを必要とするので、システムスタックは解除されて失われる。そのため、callee関数のエントリの前に、ルール間の関数コールがランタイムに戻ることを必要とするように、このシステムスタックを深さ1に制限し得る。関数がランタイムに戻るとき、2つの実行経路の1つを行うことができる。ランタイムが直ちにcallee関数に入り、同じスレッド上で実行を開始するか、あるいは、タスクスタックフレームを作業アイテムキュー上にプッシュしてタスク切替えを行わせる。
スタックフレーム
ルール間のタスク切替えをうまく進めるために、RDLコードを翻訳して、得られたコードにコールフレームを構築するための命令を含める。これらのフレームは、関数パラメータ、現在の命令ブロック、現在の関数、および局所変数を含む。関数がコールされるたびに、これらのフレームが構築されリンクされ、それによってコールスタックが構成される。このようなコールスタックを維持すると、計算状態から命令が分離され、それによって関数がステートレス(stateless)になり、タスク切替えが容易になる。
RuleFrame構造は、関数固有のフレーム構造を生成する基礎構造として働く。RuleFrame構造は、caller関数がcallee関数を呼び出すたびに生成されポピュレート(populate)される。RuleFrame構造は以下の特徴を有する。すなわち、m_RuleDelegateはこのフレームについての関数へのデリゲートであり、m_InstructionBlockは現在実行中の(または次に実行する)命令ブロックであり、m_Modeはこの関数を(同期的または非同期的に)呼び出すべき方法であり、m_RetValはこの関数の戻り値であり、m_LocalFrameはこの関数に対する局所変数を含み、m_ParentFrameはこのフレームのcaller関数である。
関数はどれも、RuleFrame構造から派生するカスタマイズされたフレームを有する。上記で示したCheckCounter関数について、フレームがどのようなものになるかを以下に示す。
Figure 0005030592
各callerは、各calleeの派生コールフレーム構造がわかっている。ローカルフレーム構造も、それを適用する関数に固有のものである。CheckCDiskSpace関数についてのローカルフレームを以下に示す。
Figure 0005030592
上記で示したように、RDLは、ポーリングによって周期的にルールを呼び出す機能をサポートする。ポーリングされたルールは、広範に使用されることが予想され、その結果、何千ものこのようなルールが存在し得る可能性がある。下記のRDLコードのフラグメントに、典型的なポーリングされたルールを示す。
Figure 0005030592
上記のルールは、ルールエンジンからのスレッドによってコールされ、このルール内で計算が実施され、次いで、次の呼出しまで、30分間の論理休止状態になる。このルールエンジンは、中央処理装置の利用率を最小限に抑えながら、潜在的には何千というこのようなタイプのルールをサポートするように求められる。そのため、このエンジンは、ポーリングされたルールの呼出しをスケジュールし分散させるアルゴリズムを実施する。ポーリングされた脱同期ルール(de−synchronizing polled rules)の問題は、多数のルールが活動状態になることが予想される起動時に最も深刻である。ポーリングが時間内に分散されない場合、プロセッサの利用率は、一群のタスクが実行予定時間になるたびに周期的に急上昇することになる。ポーリング間隔が短いほど、この問題は深刻になる。
現在、エンジンは、秒の粒度でポーリング間隔をサポートすることが期待されている。プロセッサの利用率を低く保つために、タスクを人為的に分散して目標利用率が約5%になるようにタスクの時間間隔を決める。この間隔のサイズは、プロセッサによる集中的なタスク計算にかかる時間が、この間隔の5%よりも絶対に長くならないように設定する。例えば、1GHzプロセッサを伴うシングルプロセッサマシンにおいて、タスクが、平均で3ミリ秒のプロセッサの時間を必要とすると仮定する。タスクの分散間隔は、利用率を5%に保つためには約60ミリ秒でなければならないことになる。すなわち、1秒のポーリングの間にルールエンジンがサポートし得るルールの総数は16個であり、それ以降は、利用率が5%よりも大きく上昇し始める。
上記の例に戻ると、ポーリングされたルールは、(上記で示したように起動時だけではなく)いつでも開始し得ることが明らかである。その結果、コードをなんら解析するまでもなく、このエンジンは、ポーリング要求がいつなされることになるのか全くわからないことになる。例えば、1000個の30秒ポーリングルールは、これらのルールの記述方法に応じて、すべて同じ時点でポーリング要求を出すこともできるし、20分間にわたって要求を分散させることもできるはずである。20分間にわたってポーリング要求が均一に到着する場合でも、多数のルールが周期的に同時に呼び出され、それによって30秒ごとに利用率がぎこちなく急上昇する状態にエンジンが陥らないという保証はない。
この可能性を最小限に抑えるために、このエンジンは、以下の発見的方法を利用して、同期したルールの呼出しを最小限に抑える。このエンジンは、何らかの任意の絶対時間から一定の増分間隔ですべてのタスクをスケジュールする。ルールが明示的にスケジュール関数をコールすると、スケジュールの分散が行われる。
Figure 0005030592
firstInvocationが真である場合、分散アルゴリズムを適用する。そうでない場合には、このルールは、指定した間隔で直ちにスケジュールされる。第1の呼出しは、次のようにスケジュールされる。
Figure 0005030592
Figure 0005030592
ただし、m_MinSpreadは、タスク間の最小スケジューリング間隔であり、実行時には一定(数10ミリ秒程度)である。m_ReferenceTimeは、すべてのポーリングの基礎となる固定された時間である(ルールエンジンは、起動時にこの値を設定する)。m_DefaultIntervalは時間間隔であり、この上でポーリングされた呼出しを分散させる(これは数分程度であり、初期呼出し中に過度の遅延を生じることなく、数千のポーリングを分散させるのに十分に長くすべきである)。
この計算では、所与のポーリング期間についての1組の離散したタイムスロットにわたって、ポーリング呼出しを均一に分散させる。ポーリング間隔が極めて長い場合、呼出しを分散させる間隔は、比較的短いが、起動間隔における過度の遅延を防ぐのに十分に長い。短いポーリング間隔がそれらのそれぞれの期間にわたって均一に分散しない場合、同じポーリング間隔のルールが位相の合った状態で行われるので、これらのルール間でクラスタ化の影響が生じ得る。
初期ルールの起動
起動時に、ルールエンジンはリフレクション(reflection)を利用し、Startup属性でマーキングされたルールに基づいて、実行するタスクの一覧を形成する。このタスクの一覧が形成されると、エンジンは、そのスケジューリング機能を使用して、すべてのルールの開始を分散させる。ルールは、一連のバッチの形で起動され、そのため、各バッチは、時間により構成された時間間隔(すなわち、上記で定義したm_DefaultInterval)内でスケジュールされる。この既定の間隔は構成可能であり、コンピュータ内で使用するプロセッサの数に依存し得る。プロセッサの数が多いほど、この間隔は短くなる。
非同期関数の呼出し
多くのアナリストが、ルールエンジンによって完全に駆動される。これらのアナリストは、ルールによって生成され、このルールによってデータが供給され、次いで、計算結果についてのクエリを受ける。典型的に行われるサイクルを以下に示す。立ち上がりなどのアナリストが生成され、初期化される。ポーリングごとに、オペレーティングシステムは、パフォーマンスカウンタについてのクエリを受け、このデータをアナリストに渡す。次いで、アナリストは、それが、計算を完了するのに十分なデータをもっているかどうかの問合せを受ける。もっている場合には、結果が得られ処理される。もっていない場合には、次のポーリングを待ち、このサイクルが新たに開始される。下記のRDLのフラグメントにこのサイクルを示す。
Figure 0005030592
このサイクルは、アナリストの部分に完全に同期しており、エンジンまたはアナリストに対するキューを全く必要としない。
別の代替形態は、アナリストを非同期にし、このアナリストにデータが利用可能な時点をエンジンに通知させることである。次いで、このエンジンは、通知を受けた後でこのデータを取り出し、それを処理することになる。以下のコードに、この考え方を示す。
Figure 0005030592
このパターンは、スレッドが妨害されないように、エンジンがGetSlopeを非同期で呼び出すことを必要とする。このパターンでは、GetSlopeコールを、結果オブジェクトを伴う2つのステップに分解して、これらのコールを相関させる。最初のステップは、Begin操作メソッドコールを伴う。このコールでは、エンジンは、コールバック関数ならびにコールフレームを渡し、それと引替えに非同期コンテキストオブジェクトを受け取る。ある時点で、アナリストは、このコールバックを呼び出し、この非同期オブジェクトを供給する。このエンジンは、そのコンテキストをこの非同期オブジェクトから取得し、ルールをスケジュールして、スレッドプールによって実行する。このルールが実行されると、このルールは、アナリスト端操作を呼び出し、非同期オブジェクトを渡し、コール結果を受け取り、これらの結果を処理する。
このアナリストはこのシナリオを連続して実行するので、このアナリストは、より多くの結果を、その1つが処理されている間に生成することが可能である。このイベントでは、アナリストはキューを維持し、ルールからのBegin Get要求を待つことができる。多くの場合、エンジンが一般にアナリストに供給を行うので、このタイプのモデルは必要とされない。このことに対する1つの例外では、アナリストは、そのデータをエンジンとは無関係に受け取る。
モデルに基づく管理アーキテクチャ
次に図5を参照すると、本発明によるルールエンジンを使用する、モデルに基づく管理アーキテクチャ500が示されている。このモデルに基づく管理手法により、開発者は、アプリケーションまたはサービス502を、その構成要素、ならびに機能、構成、セキュリティ、およびパフォーマンスの点での所望の状態に関して記述することができる。そのため、アプリケーションまたはサービスの記述504により、少なくとも、モデルコンポーネント506、マニフェスト(manifest)コンポーネント508、システムコンポーネント510、およびタスクコンポーネント512を含めて、1つまたは複数の管理可能なコンポーネントに関してアプリケーションまたはサービス502を記述することが容易になる。モデルに基づく管理システム500は、アトリビューション(attribution)コンポーネント514を使用して、モデルコンポーネント506からマニフェストコンポーネント508へのソースコードのアトリビューションをうまく進める。
コンピュータシステム516は、アプリケーション502のインストール時にアプリケーションまたはサービスの記述504を使用して、このコンピュータのオペレーティングシステムに関連する管理サービス518を構成する。次いで、管理サービス518は、構成管理、問題検出、診断、および復旧などの自動管理動作によってアプリケーションまたはサービス502の可用性を確保する助けとなる。モデル506は、管理者が実施し得る共通のタスクも記述する。モデルに基づく管理アーキテクチャ500は、総所有コストを下げることを容易にし、開発から、デプロイメント(deployment)、運用、およびビジネス分析までのアプリケーションのライフサイクル全体にわたって用いられる。一般に、開発者は、アプリケーションまたはサービスの1つまたは複数のモデルを生成することから開始する。このモデルは、このアプリケーションがどのように機能するか、その構成要素、開発者が定義し監視することを選択する所望の健全性の状態、少なくともこのアプリケーションまたはサービスをどのようにインストールし、このアプリケーションまたはサービスがどんな設定を必要とするかに関する構成上の態様、ならびに管理タスクおよびそのスケジューリングという点で生成されるものである。次いで、このモデルのソースコードの、明示する特定の領域に属性を与える(あるいは、タグを付ける)。
これらのモデルを機器編成マニフェストにロールアップ(roll up)する。これらのモデルは、テキストドキュメント、スプレッドシートドキュメントなどの形式をとる傾向がある。これらは、コード、スクリプト、ツールによって、あるいは手作業で、より多くのXMLスキーマになる傾向があるマニフェストに変換され、さらに機械によって処理され機械によって読み込まれる構造化ドキュメントである。すなわち、モデルドキュメントは、より人間可読であり、マニフェストはより機械可読である。次いで、これらのマニフェストを使用して、システム管理をうまく進める。
アトリビューションサブコンポーネント514は、ソースコードアトリビューションに関連するものである。アトリビューションを用いて、管理情報およびこの管理情報が関係するコードを表す。アトリビューションがないと、2つの別々のコードを記述することが必要になる。1つは、通常のアプリケーション処理用のものであり、1つは、アプリケーションを管理にエクスポーズ(expose)するためのものである。ソースコード中のアトリビューションを用いて、(プローブと呼ぶ)コードのどの部分を用いて健全性を判定かつ/または是正し、かつ管理ルールを実行する時点を指定すべきなのかを記述する。プローブは、既存のオペレーティングシステムAPI(アプリケーションプログラムインターフェース)にアクセスするコンポーネントから、あるいは、実行中のアプリケーションまたはサービスの内部にロードしたコンポーネントからエクスポーズし得る。いずれの場合でも、開発者は、アトリビューションを付加して、これらのコンポーネント内のタイプのどのサブセットをエクスポーズすべきかと、それらをどのように識別すべきかを示す。プローブは、管理者名前空間内のURI(ユニフォームリソース識別子)を用いて識別する。実行時に、プローブは、コンピュータ上のすべてのプローブのカタログ内から識別し、このプローブについての関連情報をたどることによって取り出す。
ソースコードアトリビューションは、監視サービス、例えば属性関数に命令も提供し得る。この属性関数は、監視ルールとして使用され、起動時にロードされ、周期的にポーリングされ、イベントに対して実行されるべきものである。このアトリビューションを自動的に処理し、機器編成と同じやり方でマニフェスト中に置くことができる。そのため、アトリビューションは、単に機器編成ではなく、他の管理目的にも用いられる。アトリビューションを用いて、管理タスクおよび/または是正措置(corrective action)をサポートすることもできる。
次に図6を参照すると、モデルに基づく管理アーキテクチャ500の主要コンポーネントを記述することに関係する図面マップ600が示されている。このアーキテクチャは、図7Aに関連して説明するモデルコンポーネント506、図7Bに関連して説明するマニフェストコンポーネント508、図7Cおよび図7Dに関連して説明するシステムコンポーネント510、ならびに図7Eに関連して説明するタスクコンポーネント512を含む。アトリビューションはすでに説明してあり、本明細書を通じて参照する。
次に図7Aを参照すると、モデルに基づく管理アーキテクチャのモデルコンポーネント506に関係するブロックが示されている。アプリケーションを構成するコンポーネント、健全性の状態および復旧、構成設定、ならびに管理タスクについてモデルが形成される。
これらに加えて、システムの任意のかつすべてのコンポーネント(ならびにこれらに関連する関係、依存性、およびサービスロール)をモデル化するためのコンポーネントモデルサブコンポーネント700がある。コンポーネントモデル700は、ファイル、構成、アプリケーションをインストールし得る様々な方法などを記述する。
健全性モデルサブコンポーネント701は、様々な障害状態、およびアプリケーションまたはサービスの障害の発生のしかたが記述されるように形成し得る。健全性モデル701は、健全性についての機能を自動化するためにとる必要があるステップを記述する。健全性モデル701は、少なくとも、障害の状態、これらの状態の検出、システム状態の検証、診断、および解決を表す。健全性の状態は、完全に健全である、完全に障害がある、および任意の中間状態とみなすにはどんな基準を満たさなければならないかという点で記述し得る。この中間状態は、例えば、パフォーマンスの劣化、部分的に機能している、顧客機能の一部が機能している、顧客機能の一部が、想定したレベルのサービスを提供するアプリケーションまたはサービスである、などである。健全性は、機能は満足のいく状態だが、パフォーマンスが基準以下であり、アプリケーションまたはサービスが健全でないことを示すことも考慮する。
構成モデルサブコンポーネント702は、システム構成のモデル化に関係するものである。構成モデル702を用いて、アプリケーション設定、ユーザコントロール、既定値、様々な制約などを記述する。管理タスクモデルサブコンポーネント703は、管理タスクのモデル化に関係するものであり、開始、停止、ユーザの追加、データベースの追加、および健全性モデル701からコールし得る是正処置など、ユーザがシステムに対して取り得る動作を含む。モデル702は、アプリケーションまたはサービスによって行い得るすべてのことを列挙する。アーキテクチャモデル704を用いて、分散環境および関連するデプロイメントを記述する。これらは通常、例えば、同じまたは類似のハードウェアおよびソフトウェアの設定および構成を有するクライアント、ならびに分散データベースからなる大規模ネットワークに関係するものである。そのため、ローカルアプリケーションは、リモートディスクアレイに依存し得る。デプロイメントの際に、このディスクアレイを、マニフェストによって、かつURIを用いてデプロイメントレベルでインスタンス化する必要がある。URIは機械に依存しないので、分散システムも、モデルに基づく管理システムの利益を得ることができる。パフォーマンスモデル705は、開発者が、メトリクス(metrics)を用いてアプリケーションまたはサービスのパフォーマンスを監視したい場合のやり方が記述されるように形成し得る。これは、システムの健全性と密接に関係する。アプリケーションまたはサービスに関係するセキュリティのタイプを記述するセキュリティモデル706を生成し得る。
本明細書で提供するモデルの数は網羅的ではないことに留意されたい。というのは、開発者は、アプリケーションまたはサービスの様々な態様を管理するための多くの異なるモデルを提供し得るからである。
この主題のモデルに基づくシステムは、その様々な態様を実施するために様々な人工知能に基づく方式を採用し得る。例えば、モデルに関して、所与のインスタンスまたはインプリメンテーションにはどのモデルを使用し得るかを決定するプロセスを、自動分類システムおよびプロセスによってうまく進めることができる。さらに、このような分類子を用いて、システムのパターンを検出し、何が良好な状態で、何が不良状態であり、何が成功したトランザクションで、何が成功しなかったトランザクションかを学習することを開始するシステムの動作プロファイルを形成し得る。次いで、この情報を、対応するモデルにフィードバックし、後続のシステムに対する更新されたモデルとして使用することができる。このような分類では、(例えば、解析ユーティリティおよびコストを計算に入れる)確率および/または統計に基づく解析を用いて、ユーザが自動的に実施されるように望む動作を予測または推測することができる。例えば、SVM(サポートベクトルマシン)の分類子を用いることができる。他の分類手法には、ベイズネットワーク(Bayesian networks)、デシジョンツリー(decision tree)が含まれ、異なる独立パターンを提供する確率分類モデルを用いることができる。本明細書で用いる分類には、優先モデルを形成するのに用いられる統計回帰も含まれる。
本明細書から容易に理解されるように、モデルに基づくシステムは、(例えば、一般的な訓練データによって)明示的に訓練された分類子、ならびに(例えば、ユーザの挙動を観察し、外からの情報を受け取ることによって)暗示的に訓練された分類子を採用し、それによって、これら1つ(または複数)の分類子を用いて、所定の基準に従って、例えば、所与のインプリメンテーションに対してどの初期設定を用いるかを自動的に決定し、次いで、システムが成熟し、データ、インストールされたいくつかのアプリケーション、および対話するノードの数に関する様々なロード条件を経験するにつれ、時間をかけて設定を調整することができる。例えば、十分に理解されているSVMに関して、SVMは、分類子コンストラクタおよび特徴選択モジュール内での学習または訓練の段階を介して構成される。分類子は、入力属性ベクトルx=(x1、x2、x3、x4、xn)を、コンフィデンス(confidence)にマッピングする関数である。コンフィデンスの入力はクラスに属し、すなわち、f(x)=confidence(class)である。管理システムの場合、例えば、属性は、所望の状態のシステムパラメータであり、クラスは、対象とするカテゴリまたは領域(例えば、すべてのドライブ、すべてのネイティブプロセス)である。分類子を用いて、トランザクションログをキャプチャ(capture)し解析し、パターンを探し、成功したパターンおよび成功しなかったパターンを探すことによってシステムを診断することもできる。
構成の健全性は、例えば、キューのサイズを5から10に変更し、この変更がアプリケーション、サービス、またはシステムにどんな影響を及ぼし得るかを判定することを含む。同じことが、セキュリティおよびパフォーマンスに当てはまる。この場合、分類子を用いて、パフォーマンスカウンタを監視し、それに従ってシステムの変更を行ってパフォーマンスを最適化することができる。セキュリティをパターンについて監視し分析することもでき、この影響を用いてセキュリティポリシーを提案または変更し得る。このように、健全性は、システムの多くの領域に適用し得る広い概念であることを理解されたい。システム規模の範囲では、パフォーマンスは良好だが、セキュリティが貧弱なことがある。そのため、システムの多くの規範にまたがる包括的な観点が有利である。
管理者が所望する状態をコード中に表現することができ、これを、マニフェストで表面化させ、それを渡して監視サービスによって監視する。システムは、マニフェスト中の命令に基づいてアプリケーションまたはサービスを監視し、アプリケーションまたはサービスがパフォーマンスを満たさないときには管理者に警告し、命令に基づいて是正措置を講ずることができる。例えば、電子メール用のテスト設定が維持されず、ある期間閾値未満に落ちる場合、負荷が正常な状態に戻るまで別の機械を追加することができ、ネットワークトラフィックを、リソースの数を増やすトリガとして用いて、所与の負荷に対処することもできる。目標は、手作業の動作が必要とされるときにのみ管理者が関与するように、できるだけ多くを自動化することである。
モデルに基づく管理システムは構成可能である。この管理システムは、コンポーネントに基づくものであり、コンポーネントはほぼ何でも含む。そのため、このシステムを、その最も小さい管理可能な部品まで小さくし、元通りに構成し得る。データベースでは、例えば、インスタンス、このデータベース、テーブル、およびストアドプロシージャを有するアプリケーションがあり、1つのファイルにまで小さくし得る。401kの応用例を考える。401kの応用例は、データベース、ウエブサーバ、および顧客自身のビジネス論理、さらに、オペレーティングシステムおよび関連のものに依存するデータベースにまで依存し得る。様々なレベルで管理および報告を行うことが望ましい。アプリケーションは、コンポーネント間の関係によって記述される。これらの関係は、個々のアプリケーションをどのように組み立てるか(例えば、SQLサーバは、サービス、インスタンス、およびデータベースを含む)、プラットフォームの要件(例えば、オペレーティングシステムその他のアプリケーション)、および他のコンポーネント(SQLサーバに接続するウエブサーバ)への通信を表現し得る。1人の管理者は、データベースおよび1台の機械を管理し、金融管理者は401kの応用例を管理し、CIOはこれらのアプリケーションおよび機械のすべてを管理する。これらのモデル、報告、および所望の状態により、個々のメトリクスを参照してシステムが想定どおりのことを行っているかどうかを判定し得るように、すべてのことが処理されるべきである。
すべてのモデルはURI名前空間に結びつけられ、それによって、システムを運用し、インストールされているすべてのコンポーネントを列挙し、コンポーネントに問合せを行う標準的な方法が提供される。この問合せには、コンポーネントが何を提供するか、何が健全とみなされるか、コンポーネントがどんなイベントを有するか、この1日またはここ数時間でどんなエラーイベントが生じたか、どんな構成設定が含まれているか、この1時間でどんな変化が生じたか、などが含まれる。
次に図7Bを参照すると、モデルに基づく管理アーキテクチャのマニフェストコンポーネント508に関係するブロックが示されている。アプリケーションとともに出荷されるマニフェストは、モデルおよびソースコードアトリビューションからの情報を、管理システムのサービスが使用するために機械可読形式で含む。アプリケーション用の管理タスクは、このマニフェスト中で定義される。コンポーネント依存性、コンポーネント間の関係、およびサービスロールに関係する第1マニフェストサブコンポーネント707、イベント、プローブ、ルール、および動作に関係する第2マニフェストサブコンポーネント708、設定およびアサーション(assertion)に関係する第3マニフェストサブコンポーネント709、コマンド(すなわち、コマンドレット)および管理ロールに関係する第4マニフェストサブコンポーネント710、分散環境に関係する第5マニフェストサブコンポーネント711、ならびにデプロイメントに関係する第6マニフェストサブコンポーネント712を含めて、モデルに対応して生成されたいくつかのマニフェストが存在し得る。
マニフェストは、開発者、運用チーム、および管理者の間の「橋渡し」であり、属性を与えられたコードについてモデルを走査するツールによって自動的に生成される。設定エンジンは、コンポーネントマニフェスト707を使用して、アプリケーションまたはサービスのインストール方法を決める。コンポーネントマニフェスト707は、論理コンポーネント、ファイル、これらのファイルをどこにインストールすべきか、および構成設定(または任意の設定)を記述する。依存性は、インストール前に定義する必要があるものであり、アプリケーションを異なるモードで、様々なセキュリティの度合いおよび異なる動作プロファイルでインストールすることができるように様々なロールを含む。コンポーネントマニフェスト707は、手動および自動で何を行うかをユーザおよび/またはシステムにより簡単に知らせる。マニフェストの粒度は、1コンポーネント当たり1つのマニフェストにまで小さくし得る。
従来方式では、実際に必要とされるよりもはるかに多くのファイルをインストールする。マニフェストにより、必要とされるファイルだけをインストールすることができる。こうすると、少なくともパフォーマンスおよびセキュリティが改善される。ソフトウェアの依存性は、マニフェスト707内で定義される。アプリケーションレベルでは、こられの依存性は、単一の機械に固有のものであり、コンポーネントの関係およびハードウェアリソースを定義し得る。コンピュータは、マニフェストによって記述し得る。例えば、アプリケーションは、特定の製造業者のデュアルプロセッサマシン上にデプロイ(deploy)すべきである、あるいは、4プロセッサマシンに接続すべきである、などである。マニフェスト707は、プロセッサ、メモリ、ドライブなどを、実装に必要とされるハードウェアの粒度のレベルまで記述する。そのため、管理は、従来方式のシステムの場合の事後対応型ではなく、事前対応型になり得る。ハードディスクの障害は、システム温度を長時間にわたって監視し、電源レール電圧を監視し、それらが十分であると判明した場合には、例えば、熱による障害によって生じると判定し得る。
健全性モデル701を用いて、健全性マニフェスト708を生成する。健全性マニフェスト708は、アトリビューションその他のツールを用いて健全性モデル701からポピュレートする。イベントはモデル701内でコールされず、リソースファイル内でコールされる。ツールがリソースファイルおよび属性を与えられたソースコードを走査し、健全性マニフェスト708をポピュレートする。所定のシーケンスのイベントに注意するか、あるいはパフォーマンスカウンタの閾値を監視することによって障害状態を検出し得る。このような障害状態の対処方法に関して、システムに命令を提供し得る。健全性モデルは、ルールに変換される。健全性マニフェスト708は、event1、event2、time3などのパラメータを伴うルールタイプのイベントシーケンスを含む。
構成モデル702は、どんな設定が含まれるかを記述し、設定/アサーションマニフェスト709に変換される。マニフェスト709は、コンポーネントがインストールされるときにシステムが設定を生成するための命令スキーマを提供する。
管理タスクモデル703は、コマンドレット/管理ロールマニフェスト710を介して動作に変換される。例えば、データのバックアップが必要とされる場合、コマンドレットは、このバックアップタスクをうまく進めるのに用いられる実際のコードまたはURIになる。多くの管理タスクを実施する必要がある場合、マニフェスト710は、これらのコマンドへの、おそらくはコードへのURI経路を提供する。コマンドレットは、このコードに対するアサーションによって処理するか、あるいは外部コードを要求し得る。管理ロールは、例えば、アプリケーションまたはサービスを管理するユーザの複数のクラスおよびそれらがそれぞれ実行し得る制御レベルをサポートする別のアブストラクション(abstraction)である。これは、ロールに基づくアクセスに関係する。様々なユーザのロールおよびそれらの許可機能を記述するメタデータが必要とされる。ロールは、誰にインストール権限があるのか、誰が監視を変更し得るのか、誰が健全性を監視し得るのか、誰が警告を解決し得るのか、誰がこれらの様々な動作を取り得るのかなど、このシステムのすべての態様にまたがるものである。
タスクモデル703は、管理者がすべきことと開発者が考えることを定義する。これらは、マニフェスト710に表され、運用チームによってその環境に対してカスタマイズされる。これらのカスタマイズ化は、クラスレベルおよびインスタンスレベルで行い得る。クラスレベル、インスタンスレベルでマニフェストに変更を加えることができ、実行時に直接変更を加えることができる。ここで開示するモデルに基づく管理アーキテクチャの極めて強力な特徴は、機能をまずクラスレベルで記述することができ、実行時にアクセスがインスタンス空間に対して行われることである。
アーキテクチャモデル704は、分散コンポーネントマニフェスト711およびデプロイメントマニフェスト712を表面化(surface)させる。例えば、機械間のネットワーク接続、ハードウェア要件はここで扱う。デプロイメントマニフェスト712は少なくとも、ウエブサーバ、中間階層サーバ、およびデータベースサーバを備えるアプリケーションをサポートし、フロントエンド/バックエンドアプリケーション、2つのアプリケーション間のネットワーク接続性を含み、個々のノード間の関係を記述する。デプロイメント期間には、全体的アーキテクチャモデル704で記述したもののインスタンスが生成される。
パフォーマンスモデルおよびセキュリティモデル(705および706)はそれぞれ、対応する関連機能および操作を記述する(図示しない)マニフェストをサポートする。
機械ベースの学習を採用することに戻ると、分類子を用いて、例えば第1のデプロイメント中に、要件に基づいてモデルコードの選択部分のマニフェストを選択し、動的に生成し得る。使用するアトリビューションの数を増減させて、既定モデルを自動的に生成し得る。時間の経過とともにシステムの動作情報が利用可能になるので、この情報を分析して、例えば、最新のデータの傾向およびログに基づいて、特定の領域におけるシステムをより厳密に監視することができるようにマニフェストの粒度レベルを調整し得る。次いで、更新されたマニフェストを生成し直し、必要に応じて、アプリケーションまたはサービスをより厳密に監視するために使用する。
マニフェストに、製造業者からの既定のインストールまたは推奨された最適な実務慣行が記述されている場合、管理者は、それらの事柄を変更したいことがある。例えば、健全性ルールに関して、管理者は、閾値を30から40に変更し、コンポーネントをインストールし、またセキュリティポリシーを上書きしたいことがある。これは、マニフェストのカスタマイズされたバージョンを生成して、製造業者がバンドルしたマニフェストを上書きすることによって行い得る。異なるバージョンはインストール中に検出することができ、それによって、既定のマニフェストまたはカスタマイズされたマニフェストの選択権がユーザに与えられる。あるいは、上書き値が列挙された、システムが読み込む別のファイルが存在し得る。この一覧を表示し、それによってユーザが選択して既定のマニフェストに適用するか、あるいは、インストール中に既定の設定が上書きされるようにする。
分散アプリケーションに関して、管理者は、より一般には、これらのうち3つを、そのうちの4つを、それらのうち6つをすべてこの構成内で結線(wired)したいことを規定し得る。この管理者は、それに従って所与の環境についてのデプロイメントマニフェスト712をカスタマイズし得る。
次に図7Cを参照すると、モデルに基づく管理アーキテクチャに従ってアプリケーションまたはサービス714を管理するのに使用するシステムコンポーネント510のコアシステムAPIのブロック図が示されている。システムコンポーネント510は、管理すべきアプリケーションまたはサービス714を含む。システム510は、モデルに基づく管理をうまく進めるために協調して通信を行ういくつかのAPIを含む。システム510は、(図7Bに関して説明した)アプリケーションマニフェスト内の情報によって構成された複数のサービスからなる。
システム510は、アプリケーションの可用性を確保するのに必要なサービスからなり、マニフェストコンポーネント508内で表現され、かつ管理者によって改変された所望の状態を用いて、依存性を検証し、必要なファイル、設定、およびセキュリティだけをインストールするインストール作業と、イベントをサブスクライブ(subscribe)し、指定どおりに転送するイベントサブスクリプションと、機器編成をポーリングして、機器編成およびカウンタを周期的に収集することと、および統合的トランザクションまたはユーザシミュレーショントランザクションとを実施する。アプリケーションが利用可能であり、かつ想定どおりに(所望の状態で)実施されているかどうかを判定する最適な方法の1つは、監視システムが、ユーザであるかのようにこのアプリケーションを使用することである。これは能動的監視である。潜在的に可能な第2の方法は、ユーザによる現実のトランザクションを能動的に監視し、集計したデータをシステムに報告して分析することである。これらのステップではループが閉じており、内部アプリケーションデータが十分ではないことが示される。モデルに基づく管理は、アプリケーション外でも機能する。
また、システム510は、マニフェストコンポーネント508内で表現された所望の状態を用いて、自動タスク管理を行うためのタスクスケジューリングと、プログラムの機能へのアクセスを制限するためのロールに基づくアクセスと、問題を検出し、根本的原因を診断し、是正処置を講じ、介入が必要な場合にはシステム管理者に通知するために監視を行うことと、上記を行うためにポリシーをカスタマイズし、それを多くの機械に適用するための中央構成(central configuration)とを実施する。
アプリケーション714と通信するインストールAPI 716が提供され、それによって、このアプリケーションのインストール、アプリケーションのアップデート、およびパッチがうまく進む。インストールAPI 716は、コードを介してマニフェストアセンブリを取得し、これらのアセンブリをインスタンス化する。これは、この機械上に、このコンポーネント、このマニフェスト、およびこのバージョンをインストールするようにシステムに命令することによって行われる。インストールAPI 716は、それに関連するプロトコル718およびビューア720を有する。プロトコル718は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア720は、インストールAPI 716に関係するデータを表示する。インストールAPI 716は、単一の機械上へのインストールだけでなく、ローカルシステムおよびリモートシステムがともに関与する分散アプリケーションまたはサービス、ならびにハードウェアのプロビジョニング(provisioning)およびアブストラクションもうまく進める。分散データセンタ環境では、ハードウェアシステムを全体的により細かい粒度に、個々の機械のアブストラクションに抽象化し得ることが重要である。プロトコルは、APIに関して本明細書で企図されているように、API関連データの送受信を司るルールである。ビューア720は、この記述の中で理解されるように、API、ここではインストールAPI 716に関連するデータを表示するプログラムである。APIデータは、例えば、サウンドファイル、ビデオファイル、その他のタイプのデータファイルを含むが、これらに限定されるものではない。
システム510は、アプリケーション714と通信する構成API 722を含み、それによって、アプリケーション714の構成がうまく進む。構成API 722は、それに関連するスキーマ723、プロトコル724、およびビューア726を有する。スキーマ723は、API 722とアプリケーション714の間で渡されるデータの構造および内容を定義する。プロトコル724は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア726は、構成API 722に関係するデータを表示する。
分散環境で多数対1の管理をうめく進める管理API 728も含まれる。API 728は、管理されるアプリケーション714と通信し、(図示しない)リモートシステムとも通信する。API 728は、それに関連するプロトコル730およびビューア732を有する。
システム510は、アプリケーション714と通信するパフォーマンスカウンタAPI 734を含み、それによって、アプリケーション714を管理するのに使用するカウンタ変数の追跡がうまく進む。カウンタAPI 734は、それに関連するプロトコル736およびビューア738を有する。プロトコル736は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア738は、カウンタAPI 734に関係するデータを表示する。パフォーマンスカウンタは、アプリケーション714によってエクスポーズされ、ビューア738を介してカウンタをパブリッシュ(publish)する。
アプリケーション714と通信する機器編成API 740が提供され、それによって、機器編成を構成し、機器編成データをアプリケーション714に渡すことがうまく進む。機器編成API 740は、それに関連するプロトコル742およびビューア744を有し、ビューア744を介して機器編成がエクスポーズされる。プロトコル742は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア744は、機器編成API 740に関係するデータを表示する。機器編成API 740は、IPC(プロセス間通信)746を介して、管理されるアプリケーション714と通信する。IPCは、同じコンピュータ内の、あるいはネットワークを介して、1つのプログラムと別のプログラムの間でデータを自動的に交換する。IPC機能の一例は、ユーザがクリップボードを使用して、1つのファイルから別のファイルに手作業でデータをカットアンドペーストするときに実施されるものである。カウンタは、共有メモリを介して常にパブリッシュされ、機器編成は、要求時に送達される。機器編成API 740は、イベントスキーマに類似のやり方で機器編成クラスのサーフェイス(surface)を記述するスキーマ748も含む。(図示しない)機器編成ログも含まれることがあるが、管理者の多くは、イベントログを使用することを好む。
システム510は、コンポーネントおよびモード情報を追跡しキャッシュする記憶部であるカタログ747を含む。このモード情報は、インストール時にマニフェストから送られ、その一部は動的であり、実行時に更新される。カタログ747は、カタログAPIを含み、カタログ747内に記憶されるデータへのアクセスを提供する。これらのデータのいくつかのタイプとして、イベント、カウンタ、機器編成、および構成のデータが挙げられる。カタログ747へのアクセスは、プロトコル751およびビューア753によってうまく進む。中央構成データベースは、複数の管理ノード全体にわたってロールアップされた、あるいは集計されたカタログの一覧を含む。
システム510は、アプリケーションまたはサービス714と通信するイベントAPI 750を含み、それによって、アプリケーション714を管理するのに使用するイベントの実装および追跡がうまく進む。イベントAPI 750は、発生するすべてのイベントの記憶部として働くイベントログ752に接続される。イベントAPI 750は、それに関連するプロトコル754およびビューア756を有する。プロトコル754は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア756は、イベントAPI 750に関係するデータを表示する。イベントAPI 750とアプリケーション714の通信は、それらの間で渡されるデータの構造および内容を定義するイベントスキーマ758に従う。これらのイベントは、それらが記述または発生したときにパブリッシュされる。このスキーマは、イベントのサーフェイスを記述する。
システム510は、アプリケーション714と通信する自動化API 760を含み、それによって、普通ならアプリケーション714と対話的に行われる手順の自動化がうまく進む。自動化API 760は、それに関連するプロトコル762およびシェル764を有する。プロトコル762は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。シェル764は、ユーザと自動化API 760の対話をうまく進めるユーザインターフェースを提供し、それによって、自動化プロセスおよびこれらの自動化プロセスのユーザコントロールに関係するデータの入力および表示が行われる。
システム510はさらに、アプリケーション714および自動化API 766と通信するスケジュールされたタスクAPI 766を含む。スケジュールされたタスクAPI 766により、少なくとも自動化API 760および管理されるアプリケーション714についてスケジューリングを行うジョブまたはプログラムがうまく進む。スケジュールされたタスクAPI 766は、実行すべきジョブの一覧を維持し、それに従ってリソースを割り当てる。スケジュールされたタスクAPI 766は、それに関連するプロトコル768およびビューア770を有する。プロトコル768は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア770は、スケジュールされたタスクAPI 766に関係するデータを表示する。タスクスキーマ772は、タスクAPIと他のコンポーネントの間で渡されるデータの構造および内容を定義する。
自動化およびタスクのデータは、タスクモデルおよびコマンドレットモデルから受け取る。これらの機能は、管理シェルを介してローカルまたはリモートで自動化し得る。このスケジューリングシステムは、これらの機能、例えば午前3時のバックアップを実行し得る。
図7Cで説明したコンポーネントは、ローカルな実施形態のものを表し、図7Dのコンポーネントは、多くの機械およびソフトウェアのシステム全体にわたって解析が行われる分散実施形態に関連するものを表し得ることを理解されたい。そのため、分散実施形態では、図7Dのコンポーネントは、図7Cのローカルシステムの少なくとも1つと通信する。ただし典型的には、複数のこのようなローカルな実施形態は、有線および/または無線の方式をとる。ローカルな実施形態では、システム510は、ローカル監視サービスAPI 765を含めて、図7Dのコンポーネントのいずれか、またはすべても含み得る。ローカル監視サービスAPI 765は、プロトコル767、ビューア769、およびスキーマ771も含み、これらはそれぞれ、他のAPIのこのようなコンポーネントに類似の機能をうまく進める。分散実施形態では、ローカル監視サービスAPI 765は、以下で説明する分散監視サービスに監視情報を渡す。
次に図7Dを参照すると、モデルに基づく管理アーキテクチャのシステムコンポーネント510の管理に関連するAPIのブロック図が示されている。構成データベースサブコンポーネント774が提供され、このサブコンポーネントに、中央構成API 776を介してアクセスおよび制御が提供される。中央構成API 776は、システム510のすべてのサブコンポーネントに接続される。中央構成API 776は、それに関連する通信および対話用のプロトコル778およびビューア780、ならびにアサーションおよび既定値などの構成設定および属性のシェイプ(shape)を記述するスキーマコンポーネント782を有する。プロトコル778は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。
管理システムの運用関連データ、例えば、報告、現在の状態、および履歴データなどのリポジトリ(repository)として働く運用データベースサブコンポーネント783も提供される。監視API 784は、運用データベース783およびモデルに基づく管理システムのすべてのサブコンポーネントに接続される。監視API 784はさらに、それに関連するプロトコル785、ビューア786、およびスキーマ787を有する。プロトコル785は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア786は、監視API 784に関係するデータを表示する。スキーマ787は、運用データベース783全体の定義を、少なくともその構造と、この構造内の各データ要素が含み得る内容のタイプとに関して提供する。
中央構成は、すべてのAPIに接続することができ、構成の詳細を設定するために管理者が使用するものである。構成の詳細は、どの機械にアプリケーションをインストールすべきかなど、分散アプリケーションのシナリオついての詳細を含み得る。構成は、監視構成も含み得る。例えば、すべての機械は、5分間にわたってCPUの利用率が80%未満にならないことを示さなければならない。そのため、この監視システムは、構成システムを使用する。監視は、アプリケーションが1つのモデルごとに、挙動し、構成され、インストールされることを、管理者が管理システムを介して保証する方法である。監視は、想定される機能、所望のセキュリティの程度、正しく実施されること、およびユーザの想定どおりにデータが送達されることを保証することも含む。そのため、監視は、これらすべての領域にまたがる。全体的なプロセスは、インストールし、構成し、要求時にタスクを実行し、イベントを消費し、機器編成、構成を提供し、データおよび結果を記憶することである。健全性マニフェストは、監視システムに作業命令を、監視システムへの命令であるルールの形式で提供する。一般に、このマニフェストは実行時の命令を含み、これら実行時の命令は所望の状態を実装する。
監視サービスは、ローカルサービスであるだけでなく、中央または分散型のメカニズムである。分散実施形態では、健全性は、ローカルマシンの健全性ならびにローカルマシンとリモートマシンの間の関係も含む。例えば、一まとまりの10台の機械があると仮定し、6台が正しく機能している限り、このシステムは健全であるとみなされる。しかし、5台以下の機械しか動いていない場合、このシステムの健全性の状態は、警戒状態まで劣化している。4台以下の機械しか動いていない場合、このシステムの健全性は障害状態とみなし得る。ハードウェアのアブストラクションにより、1つまたは複数のクラスタマシンに障害が発生するか、あるいはオフラインになった場合、1つまたは複数のバックアップシステムまたはアプリケーション/サービスをオンラインにすることが容易になる。そのため、命令に基づいて、共同のアイドル状態のリソースまたは共有リソースを制御し得る。この機能は、データセンタ環境では特に有用である。システムが、最適な、あるいは少なくとも最低限の機能を確実に維持するために、自動化された動作を実装し得る。
モデルに基づく管理アーキテクチャの一態様により、開発者は、システムが健全であるとみなされるために満たさなければならない基準を表す多数のルールを記述し得る。監視API 784は、ルールの暗示的な同時処理をうまく進めるルールランタイムエンジンを含む。このルールエンジンは、これらのルールを中間形式として表す入力命令を受け取る。これらのルールは、RDL(ルール定義言語)を用いて表現される。このルールエンジンは、構成データベース774から、ルールコードをインスタンス化するのに用いる構成データも受け取る。翻訳器は、これらの入力命令を読み込み、これらを並列実行形式に変換する。ランタイムエンジンは、これら翻訳された命令を読み込み、並列実行をうまく進める。このルールコードは、ランタイムエンジンに、どのルールを実行するかと、このルールを実行するのに必要とされるパラメータとを指定する構成データをロードすることによってインスタンス化される。ルールのパラメータは、実行時に変更し得る。例えば、問題が検出されたときにのみ、システムに大きな影響を及ぼすルールを実行可能にする。このように、これらのルールは動的であり、それに従って変更し得る閾値もそうである。監視API 784は、システム510のすべてのサブコンポーネントにも接続される。
管理者が使用するための、マニフェストを記憶し編集するサービス788も提供される。マニフェストサービス788は、それに関連するプロトコル789およびビューア790を有し、それによって、これらのマニフェスト機能を管理者にエクスポーズする。マニフェストサービス788は、プロトコル789およびビューア790を介してこれらのマニフェストを管理者に供給し、それによって管理者が、インストール前に、これらのマニフェストを閲覧し変更することができる。マニフェストサービス788により、アップデートおよびカスタマイズに従って、これらのマニフェストをバージョニング(versioning)もうまく進む。
モデルに基づく管理システムのすべてのサブコンポーネントに接続されるロールに基づくアクセスAPI 791も提供される。ロールに基づくアクセスAPI 791はさらに、それに関連するプロトコル792およびビューア793を有する。プロトコル792は、システム510の他のコンポーネントへのAPI関連データの通信をうまく進める。ビューア793は、ロールに基づくアクセスAPI 791に関係するデータを表示する。このAPI 791は、監視コンポーネントおよび構成コンポーネントの上のレベルで示されており、そのため、モデルに基づく管理システムの様々なコンポーネントおよび態様へのアクセスを全体的に管理する。ロールに基づくアクセスAPI 791は、プロトコル792およびビューア793を含む必要はない。というのは、これらの機能は、システム510の他のコンポーネントによってうまく進めることができるからである。
このシステムは、機械ベースの学習および制御用の分類子794も含む。上記で示したように、分類子794は、システムの、いくつか例を挙げると、パフォーマンスや健全性を高めるために多くのやり方で使用することができる。機械ベースの学習をうまく進めるために、分類子794は、このシステムのすべてのコンポーネントにアクセスし、そのデータを使用し得るように、中央構成サービス776に接続される。
次に図7Eを参照すると、モデルに基づく管理アーキテクチャのタスクコンポーネント512の主要サブコンポーネントが示されている。これらのタスクは、管理タスクモデルによって記述される。これらのタスクは、監視サブコンポーネント795、トラブルシューティングサブコンポーネント796、および管理サブコンポーネント797の3つのサブコンポーネントに分けられる。
監視サブコンポーネント795のタスクは、健全性、セキュリティ、パッチ、構成、パフォーマンス、およびアプリケーションデータを監督することを含む。トラブルシューティングサブコンポーネント796のタスクは、健全性の状態の診断、警告の処理、ならびにイベントログ、機器編成ログ、およびパフォーマンスログを更新することを含む。管理サブコンポーネント797のタスクは、中央構成/ポリシー、スケジューリング、および更新デプロイメントを含む。管理には、単一のシステムの管理だけでなく、例えば、多数の機械、アプリケーション、およびシステム、ならびにポリシー、バックアップ時間、変更、およびアップデートを管理することも含まれる。
モデルに基づく管理アーキテクチャでは、抽象リソースまたは物理リソース、あるいはリソースコレクション(collection)を一意に識別するためにURIを用いる。リソース用のスキーマは、このリソース用のプレースホルダ(placeholder)を伴うURIによって識別される。プレースホルダを伴うURIをURIテンプレートと呼ぶ。このシステムのカタログは、特定のインスタンスを参照せずに機器編成を記述するために、URIテンプレートに依存する。URIテンプレートにより、実際に特定のインスタンスについてのプローブを取り出すことなく、プローブを識別し、このプローブの特徴を理解することができる。インスタンスとは切り離して機器編成をあらかじめ定義する機能を保護すると、ルールのデプロイメントおよび記述が比較的容易になり、関連するオペレーティングシステムが管理可能になる。
モデルに基づく管理フレームワークでは、ソフトウェアおよびハードウェアの可用性を監視するために、RDLを用いてルールの定義を可能にする。RDLで記述されたルールは、ランタイムエンジンによって監視サービスの一部として実行される。RDLの目的は、アサーションをテストし、実行時の情報を用いて制約を実行し、推測を行い、相関を実施し、動的テストの結果を他のコンポーネントに送ることである。RDLによりルールタイプ(すなわちクラス)を定義し、別のXML(拡張マークアップ言語)ドキュメントを用いて、インスタンス化に必要なパラメータ値を指定することによってこのルールタイプのインスタンスを生成する。問題の検出、診断、解決、検証、および警告を行うためにこのシステムが取るべきステップのシーケンスを記述するためにスキーマが存在する。このシーケンスが、監視システムによって、モデルに記述され、マニフェストに表現され、実行/管理される。
モデルに基づく管理フレームワークでは、前に示したように、イベントおよびパフォーマンスカウンタの更新値を用いて、サービスおよびテストまたは統合的トランザクションの健全性モデル(またはステータス)を示す。健全性モデル701は、サービスまたはコンポーネントにどのように障害が発生し得るかについてのグラフィカルな、かつ/またはテキストによる表現であり、サービスの様々なイベントおよびパフォーマンスカウンタの重大さを管理者が理解し、観察された機器編成データに基づいてなんらかの動作を取るかどうかを効率的に判断する助けになる。開発者は、健全性モデル701を、次いで、このモデルおよびソースコードアトリビューションから生成される対応するファイルとともに構築する。
健全性モデル701は、コンポーネントの依存性に加えて、コンポーネントの関係の記述を含む。検出された問題の状況に応じて、システムは、関係ツリーを移動し、他のコンポーネントの健全性に基づいて根本的原因を決定しようと試みることができる。この手法は、モデルおよびマニフェストによって補佐される。
次に図8を参照すると、モデルに基づく管理のプロセスの流れ図が示されている。800で、インストールすべきアプリケーションまたはサービスを、そのコンポーネントに関して記述する。802で、このアプリケーションまたはサービスを、機能、構成、セキュリティ、およびパフォーマンスについての所望の状態の形で記述する。804で、この記述は、インストール中にアプリケーションまたはサービスとともに提供され、それによって、システムがこの記述を用いて、システムの管理サービスを構成する。次いで、このプロセスは、停止(Stop)ブロックに達する。
次に図9を参照すると、モデルに基づく管理を実施するプロセスのより詳細な流れ図が示されている。900で、アプリケーションのコンポーネント、健全性の状態および復旧、構成の設定、ならびに管理タスクに関するモデルを形成する。902で、ユーザは、環境に応じて、システム/ルール/モデルをカスタマイズする。904で、ソースコードにアトリビューションを挿入して、監視を行うための機器編成および論理を示す。906で、モデル情報およびソースコードアトリビューションのマニフェストを提供し、それを管理システムのサービスが使用する。このマニフェストは、管理システムのサービスが使用できるように機械可読形式で提供される。908で、マニフェスト情報に基づいて、管理システムのサービスの1つまたは複数を構成する。910で、システムによるコマンドレットの登録、スケジュールの設定など、マニフェスト内でこのアプリケーションについての管理タスクを定義する。次いで、このプロセスは、停止(Stop)ブロックに達する。
次に図10を参照すると、モデルに基づく管理の所望の状態を実施するプロセスの流れ図が示されている。1000で、マニフェストから所望の状態にアクセスする。1002で、依存性を検証し、必要なファイル、設定、およびセキュリティ機能だけをインストールする。1004で、マニフェストの指定どおりにイベントをサブスクライブし、転送する。1006で、機器編成データおよびカウンタデータ、ならびに実施されるテストおよび統合的トランザクションを周期的に収集する。1008で、自動管理タスクを実施する。1010で、プログラム機能へのアクセスを制限する。ただし、モデルに基づく管理をうまく進めることにこれを含める必要はない。1012で、問題を検出し、根本的問題を診断し、是正措置を講じ、介入時にシステム管理者に通知する。1014で、上記すべてについてのポリシーをカスタマイズして、多くの他のタイプの機械およびシステムに適用する。次いで、このプロセスは、停止(Stop)ブロックに達する。
次に図11を参照すると、開示したアーキテキチャを実行するように動作可能なコンピュータのブロック図が示されている。本発明の様々な態様についての追加の状況を提供するために、図11および以下の検討は、本発明の様々な態様を実施し得る適切なコンピューティング環境1100を簡潔かつ全体的に説明することを意図している。1つまたは複数のコンピュータ上で実行し得るコンピュータにより実行可能な命令の一般的な状況において本発明をこれまで説明してきたが、当業者には、他のプログラムモジュールと組み合わせて、かつ/または、ハードウェアおよびソフトウェアの組合せとして、本発明を実施することもできることが理解されよう。一般に、プログラムモジュールは、特定のタスクを実施し、また特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者には、シングルプロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、大型コンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサベースまたはプログラム可能な民生用電子機器などを含めて、他のコンピュータシステム構成によって本発明の方法を実施し得ることが理解されよう。これらはそれぞれ、1つまたは複数の関連装置に動作可能に結合し得る。例示した本発明の態様は、通信ネットワークを介して接続された遠隔処理装置によってある種のタスクが実施される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのメモリ記憶装置に配置することができる。
再度図11を参照すると、本発明の様々な態様を実施するための、コンピュータ1102を含む環境の例1100が示されている。コンピュータ1102は、処理装置1104、システムメモリ1106、およびシステムバス1108を含む。システムバス1108は、システムメモリ1106を含めてシステムコンポーネントを処理装置1104に接続するが、システムコンポーネントの例はこれに限定されるものではない。処理装置1104は、様々な市販のプロセッサのいずれかとし得る。処理装置1104として、デュアルマイクロプロセッサその他のマルチプロセッサアーキテキチャも使用し得る。
システムバス1108は、様々な市販のバスアーキテクチャのいずれかを利用して、(メモリコントローラ付き、またはメモリコントローラを伴わない)メモリバス、ペリフェラルバス、およびローカルバスをさらに相互接続し得るいくつかのタイプのバス構造のいずれかとし得る。システムメモリ1106は、ROM(読出し専用メモリ)1110およびRAM(ランダムアクセスメモリ)1112を含む。BIOS(基本入出力システム)は、ROM、EPROM、EEPROMなどの不揮発性メモリ1110内に格納される。このBIOSは、例えば起動時に、コンピュータ1102内の要素間で情報を転送する助けとなる基本ルーチンを含む。RAM 1112は、データをキャッシュするスタティックRAMなどの高速RAMも含み得る。
コンピュータ1102は、ハードディスクドライブ1114、(例えば、リムーバブルディスク1118に対して読書きを行う)磁気ディスクドライブ1116、および(例えば、CD−ROMディスク1122を読み込み、また、DVD(デジタルビデオディスク)などの他の大容量光メディアに対して読書きを行う)光ディスクドライブ1120をさらに含む。ハードディスクドライブ1114、磁気ディスクドライブ1116、および光ディスクドライブ1120はそれぞれ、ハードディスクドライブインターフェース1124、磁気ディスクドライブインターフェース1126、および光ドライブインターフェース1128よってシステムバス1108に接続し得る。これらのドライブおよびそれらに関連するコンピュータ可読メディアは、データ、データ構造、コンピュータにより実行可能な命令などを記憶する不揮発性記憶装置を提供する。コンピュータ1102の場合、これらのドライブおよびメディアは、適切なデジタルフォーマットでブロードキャストプログラムを記憶することに対応する。上記のコンピュータ可読メディアの説明では、ハードディスク、リムーバブル磁気ディスク、およびCDについて言及したが、当業者には、zipドライブ、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、カートリッジなど、コンピュータによって読込み可能な他のタイプのメディアも、例示の動作環境で使用し得ること、さらに、このようなメディアはいずれも、本発明の方法を実施するコンピュータにより実行可能な命令を収容し得ることが理解されよう。
オペレーティングシステム1130、1つまたは複数のアプリケーションプログラム1132、他のプログラムモジュール1134、およびプログラムデータ1136を含めて、いくつかのプログラムモジュールをこれらのドライブおよびRAM 1112内に記憶することができる。オペレーティングシステム、アプリケーション、モジュール、および/またはデータの全部または一部を、RAM 1112内にキャッシュすることもできる。
様々な市販のオペレーティングシステムまたはオペレーティングシステムの組合せによって、本発明を実施し得ることを理解されたい。
ユーザは、キーボード1138、およびマウス1140などのポインティングデバイスを介してコンピュータ1102にコマンドおよび情報を入力することができる。(図示しない)他の入力装置は、マイクロホン、IRリモートコントロール、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含み得る。上記その他の入力装置は、システムバス1108に結合されたシリアルポートインターフェース1142を介して処理装置1104に接続されることが多いが、パラレルポート、ゲームポート、または「USB」(ユニバーサルシリアルバス)、IRインターフェースなど、他のインターフェースによって接続することができる。モニタ1144その他のタイプのディスプレイ装置も、ビデオアダプタ1146などのインターフェースを介してシステムバス1108に接続される。コンピュータは一般に、モニタ1144に加えて、スピーカ、プリンタなどの(図示しない)他の周辺出力装置も含む。
コンピュータ1102は、1つ(または複数)のリモートコンピュータ1148など、1つまたは複数のリモートコンピュータへの有線および/または無線による通信を介した論理接続部を利用するネットワーク環境で動作し得る。1つ(または複数)のリモートコンピュータ1148は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースの娯楽機器、ピアデバイス(peer device)その他一般のネットワークノードとすることができ、一般に、コンピュータ1102に関連して上記で説明した要素の多くまたはすべてを含むが、簡単にするために図にはメモリ記憶装置1150だけを示す。図に示す論理接続部は、LAN(ローカルエリアネットワーク)1152およびWAN(ワイドエリアネットワーク)1154を含む。このようなネットワーク環境は、一般事務所、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
LANネットワーク環境で用いられるとき、コンピュータ1102は、有線または無線による通信ネットワークインターフェースまたはアダプタ1156を介してローカルネットワーク1152に接続される。アダプタ1156により、LAN 1152への有線または無線による通信が容易になり得る。LAN 1152は、無線アダプタ1156と通信するためにLAN 1152上に配設された無線アクセスポイントも含み得る。WANネットワーク環境で用いられるとき、コンピュータ1102は一般に、モデム1158を含むか、または、LAN上の通信サーバに接続されるか、あるいは、インターネットなどのWAN1154を介して通信を確立するための他の手段を有する。内蔵型または外付け、および有線または無線による装置とし得るモデム1158は、シリアルポートインターフェース1142を介してシステムバス1108に接続される。ネットワーク環境では、コンピュータ1102に関連して示すプログラムモジュールまたはその一部は、リモートメモリ記憶装置1150に格納することができる。図に示すネットワーク接続部は例であり、コンピュータ間で通信リンクを確立する他の手段を使用し得ることを理解されたい。
コンピュータ1102は、任意の無線装置、または無線通信の形で動作可能に配設されたエンティティ、例えば、プリンタ、スキャナ、デスクトップ型および/またはポータブル型のコンピュータ、ポータブルデータ端末、無線により検出可能なタグに関連する任意の機器または場所(例えば、キオスク、新聞・雑誌販売所、休憩室)、ならびに電話と通信するように動作可能である。これは、少なくともWi−FiおよびBluetooth(登録商標)による無線技術を含む。このように、通信は、従来方式のネットワークの場合と同様に所定の構造とすることもできるし、あるいは、単に少なくとも2つの装置間のその場限りの通信とすることもできる。
Wi−Fiすなわちワイヤレスフィデリティ(Wireless Fidelity)により、自宅のソファから、またはホテルの部屋のベッドから、あるいは仕事での会議室から、電線なしにインターネットに接続することができる。Wi−Fiは携帯電話のような無線技術であり、それによって、基地局の範囲内であればどこでも、例えばコンピュータなどの装置が屋内外でデータの送受信を行うことができる。Wi−Fiネットワークは、安全で、信頼性が高く、高速な無線接続性を提供するIEEE802.11(a、b、gなど)と呼ぶ高周波技術を利用する。Wi−Fiネットワークを使用して、コンピュータの相互接続、インターネットへの接続、(IEEE802.3すなわちイーサネット(登録商標)を使用する)有線ネットワークへの接続が可能である。Wi−Fiネットワークは、無認可の2.4GHzおよび5GHzの高周波帯域で、11Mbps(802.11b)または54Mbps(802.11a)のデータレートで、あるいは、両方の帯域を含む(デュアルバンド)製品で動作し、そのため、これらのネットワークは、多くの一般事務所で使用されている基本10BaseT有線イーサネット(登録商標)ネットワークに類似の現実のパフォーマンスを提供し得る。
次に図12を参照すると、本発明によるコンピューティング環境の例1200の概略ブロック図が示されている。システム1200は、1つまたは複数のクライアント1202を含む。1つ(または複数)のクライアント1202は、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)とし得る。1つ(または複数)のクライアント1202は、例えば、本発明を利用することによって、1つ(または複数)のクッキーおよび/または関連するコンテキスト情報を収容し得る。システム1200は、1つまたは複数のサーバ1204も含む。1つ(または複数)のサーバ1204も、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)とし得る。サーバ1204は、例えば、本発明を利用することによって、変換を実施するためのスレッドを収容し得る。クライアント1202とサーバ1204の間の1つの可能な通信は、2つ以上のコンピュータプロセス間で送信されるように適合されたデータパケットの形態を取り得る。このデータパケットは、例えば、クッキーおよび/または関連するコンテキスト情報を含み得る。システム1200は、1つ(または複数)のクライアント1202と1つ(または複数)のサーバ1204の間の通信をうまく進めるために使用し得る通信フレームワーク1206(例えば、インターネットなどのグローバル通信ネットワーク)を含む。
通信は、(光ファイバを含めて)有線および/または無線技術によってうまく進めることができる。1つ(または複数)のクライアント1202は、1つ(または複数)のクライアント1202に局在する情報(例えば、1つ(または複数)のクッキーおよび/または関連するコンテキスト情報)を記憶するのに使用し得る1つまたは複数のクライアントデータ記憶部1208に動作可能に接続される。同様に、1つ(または複数)のサーバ1204は、サーバ1204に局在する情報を記憶するのに使用し得る1つまたは複数のサーバデータ記憶部1210に動作可能に接続される。
以上説明してきたことには、本発明の実施例が含まれる。当然のことながら、本発明を説明するためにコンポーネントまたは方法の考え得るすべての組合せを説明することは不可能であり、本発明の多くの別の組合せおよび並替えが可能であることが当業者には理解されよう。したがって、本発明は、添付の特許請求の範囲の趣旨および範囲に含まれるすべてのこのような改変形態、修正形態、および変形形態を包含することを意図している。さらに、「含む」という用語を詳細な説明または特許請求の範囲において使用する限りにおいては、このような用語は、「備える」という用語が特許請求の範囲において用いられる際には暫定的な言葉として解釈されるように、「備える」と同様に包括的であることが意図されている。
本発明のコンポーネントのブロック図である。 ルール監視プロセスの流れ図である。 本発明によるルールのインスタンス化の流れ図である。 ルール間の呼出しについてのプロセスの流れ図である。 本発明によるルールエンジンを使用する、モデルに基づく管理アーキテクチャを示す図である。 モデルに基づく管理アーキテクチャの主要コンポーネントを記述することに関係する図面マップを示す図である。 モデルに基づく管理アーキテクチャのモデルコンポーネントに関係するブロックを示す図である。 モデルに基づく管理アーキテクチャのマニフェストコンポーネントに関係するブロックを示す図である。 モデルに基づく管理アーキテクチャに従ってアプリケーションまたはサービスを管理するのに使用するシステムコンポーネントのコアシステムAPIのブロック図である。 モデルに基づく管理アーキテクチャのシステムコンポーネントの管理に関連するAPIのブロック図である。 モデルに基づく管理アーキテクチャのタスクコンポーネントの主要サブコンポーネントを示す図である。 モデルに基づく管理のプロセスの流れ図である。 モデルに基づく管理を実施するプロセスのより詳細な流れ図である。 モデルに基づく管理の所望の状態を実施するプロセスの流れ図である。 本発明によるアーキテキチャを実行するように動作可能なコンピュータのブロック図である。 本発明によるコンピューティング環境の例の概略ブロック図である。

Claims (35)

  1. ルールの処理を実施する1以上のプロセッサを有するシステムであって、
    同期プログラミングモデルを用いて同期ステートメントを非同期命令に翻訳する翻訳コンポーネントと、
    翻訳された命令を読み込み、前記翻訳された命令のスケジューリングと並列処理を実施するランタイムエンジンとを備え、
    前記ランタイムエンジンでは、前記命令は、ランタイムルールコード実行切替えに優先権を渡すことと、ユーティリティ関数をコールすることの少なくとも1つを実施すること、
    前記ランタイムエンジンでは、ポーリング命令及びそれに関連するデータ要素に基づいて、前記翻訳された命令をスケジュールし、さらに、所与の期間についての1組の離散したタイムスロットにわたって、ポーリング命令の呼出しを均一に分散させること
    を特徴とするシステム。
  2. 前記ステートメントは、一連のルールタイプに編成されることを特徴とする請求項1に記載のシステム。
  3. 前記ルールタイプは、ターゲットリソースの所望の状態を判定するロジックを表現することを特徴とする請求項2に記載のシステム。
  4. 所望の状態に応答して処置を講じることを特徴とする請求項3に記載のシステム。
  5. 前記翻訳コンポーネントは、前記非同期命令のインスタンス化を実施することを特徴とする請求項1に記載のシステム。
  6. 前記翻訳された命令は、前記ランタイムエンジンがすべての状態を維持することを実施し、前記状態は、引数および局所変数の少なくとも1つを含むことを特徴とする請求項1に記載のシステム。
  7. 前記翻訳コンポーネントは、ラベルおよび一時変数の少なくとも1つが、対応するノードについて生成されるように、深さ優先トラバースを実施することを特徴とする請求項1に記載のシステム。
  8. 前記翻訳コンポーネントは、前記ルールのモジュールをクラスに翻訳することを特徴とする請求項1に記載のシステム。
  9. 前記翻訳された命令は、ランタイムエンジンによるコンテキスト切替えを実施するためのアドレスコード表現を含むことを特徴とする請求項1に記載のシステム。
  10. 前記アドレスコード表現は、少なくとも3つのアドレスコードを用い、前記表現は、ステートメントまたは式が非同期コールを含むときに用いられることを特徴とする請求項9に記載のシステム。
  11. 前記翻訳された命令は、一連の命令ブロックに翻訳され、前記命令ブロックは、switch−caseブロックに分けられることを特徴とする請求項1に記載のシステム。
  12. 前記命令ブロック内の命令は、ユニットとして実行され、前記命令ブロック間でのみランタイム実行に優先権を渡すことを特徴とする請求項11に記載のシステム。
  13. 前記一連の命令ブロックは、それに関連する更新識別子を有し、前記更新識別子は、前記ルールへの再エントリ後、前記一連の命令ブロックのどれを次に実行するかを維持することを特徴とする請求項11に記載のシステム。
  14. 前記翻訳された命令は、前記ランタイムエンジンによってバッチで処理されるようにスケジュールされ、その結果、バッチのルールは、前記バッチを処理するための関連する時間間隔全体にわたって均一に処理されるようにスケジュールされることを特徴とする請求項1に記載のシステム。
  15. ルールの処理を実施する1以上のプロセッサを有するシステムであって、
    同時処理を行うために前記ルールを命令に翻訳する翻訳コンポーネントと、
    ポーリング命令及びそれに関連するデータ要素に基づいて、前記命令をスケジュールし、前記スケジュールに従って前記命令の一部または全部を同時処理するランタイムエンジンとを備え、
    前記ランタイムエンジンは、さらに、所与の期間についての1組の離散したタイムスロットにわたって、ポーリング命令の呼出しを均一に分散させること
    を特徴とするシステム。
  16. 前記ランタイムエンジンは、前記ルールの暗示的な同時処理を実施することを特徴とする請求項15に記載のシステム。
  17. 前記ランタイムエンジンは、前記命令および構成データをともに受け取り、前記構成データは、どのルールを実行するかと、前記ルールを実行するのに必要とされるパラメータの少なくとも1つを指定することを特徴とする請求項15に記載のシステム。
  18. モデルに基づく管理アーキテキチャにおいてルールの処理を実施する1以上のプロセッサを有するシステムであって、
    前記アーキテキチャについての健全性基準を表す複数のルールと、
    同時処理を行うために前記ルールを非同期命令に翻訳する翻訳コンポーネントと、
    ポーリング命令およびそれに関連するデータ要素に基いて、前記翻訳された命令をスケジュールし、前記スケジュールに従って前記命令の一部または全部を同時処理するランタイムエンジンとを備え、
    前記ランタイムエンジンは、さらに、所与の期間についての1組の離散したタイムスロットにわたって、ポーリング命令の呼出しを均一に分散させることを特徴とするシステム。
  19. 前記ランタイムエンジンは、コードの処理を一時停止する前記命令の1つに従って動作し、イベントが発生するのを待ち、前記コードの処理は、前記イベントに応答して再開され、前記イベントに対して動作し得ることを特徴とする請求項18に記載のシステム。
  20. 前記複数のルールの1つは、別のルールを呼び出すことを特徴とする請求項18に記載のシステム。
  21. 前記翻訳された命令、ループ処理を実施する言語を含み、それによって、飛越し処理の前に、ルールは、ノンプリエンプティブスケジューリングを実施するために前記ランタイムエンジンに戻ることを特徴とする請求項18に記載のシステム。
  22. 前記翻訳された命令は、関数の実行状態が保存され、後で構成されるように、協調マルチタスク処理を実施することを特徴とする請求項18に記載のシステム。
  23. 前記翻訳された命令は、コールフレームの構築を実施し、前記コールフレームは、関数パラメータ、現在の命令ブロック、現在の関数、および局所変数の少なくとも1つを含むことを特徴とする請求項18に記載のシステム。
  24. 前記ランタイムエンジンは、過利用率が減少するように、任意の時点から始まる持続時間全体にわたってタスクの実行を分散させる分散アルゴリズムを含むことを特徴とする請求項18に記載のシステム。
  25. 請求項18に記載のシステムを実現することを特徴とするコンピュータシステム。
  26. ルールを処理する方法であって、
    複数の前記ルールを受け取ること、
    前記ルールを命令に翻訳して、ランタイムエンジンに送ること、
    前記ランタイムエンジンによって処理するために、前記翻訳された命令のスケジュールすること、
    前記ランタイムエンジンによって前記複数の命令の少なくとも2つを同時に処理すること、
    前記ランタイムエンジンに構成データを受け入れて、前記ルールをインスタンス化すること、
    前記ルールにyield命令を挿入して、前記ランタイムエンジンによる処理中に、前記ルール間のコード実行切替えの優先権を渡す実行を実施し、前記ランタイムエンジンによって提供されるユーティリティ関数のコールを実施すること、および、
    ポーリング命令及びそれに関連するデータ要素に基づいて前記翻訳された命令をスケジュールし、さらに、所与の期間についての1組の離散したタイムスロットにわたって、ポーリング命令の呼出しを均一に分散させること
    を含むことを特徴とする方法。
  27. 前記翻訳された命令は、一連の命令ブロックに翻訳され、前記ランタイムエンジンに優先権が渡される前に、前記命令ブロックの実行を開始することにより、前記命令ブロック全体が実行されることを特徴とする請求項26に記載の方法。
  28. 起動プロセス中に、起動時に前記ランタイムエンジンによって実行されるようにマーキングしたルールのタスク一覧を形成すること、および前記ルールの開始をバッチの形で分散させ、それによって、ルールの各バッチは、時間により構成された時間間隔内で処理されるようにスケジュールされることをさらに含むことを特徴とする請求項26に記載の方法。
  29. 所定の基準に基づいて前記時間間隔を構成することをさらに含み、前記基準は、前記コンピュータが使用するプロセッサの数を含むことを特徴とする請求項28に記載の方法。
  30. 前記翻訳された命令は、前記ランタイムエンジンによってバッチで処理されるようにスケジュールされ、その結果、バッチのルールは、前記バッチを処理するための関連する時間間隔全体にわたって均一に処理されるようにスケジュールされることを特徴とする請求項26に記載の方法。
  31. ノンプリエンプティブスケジューリング方式に従ってスケジューリングが実施されることを特徴とする請求項26に記載の方法。
  32. ルールを処理する1以上のプロセッサを有するシステムであって、
    複数の前記ルールを受け取る手段と、
    前記ルールを命令に変換する手段と、
    ランタイムエンジンによって処理するために、前記命令を翻訳する手段と、
    前記複数の命令の少なくとも2つをスケジュールし、同時に処理する手段と、
    前記ルールにyield命令を挿入して、前記ランタイムエンジンによる処理中に、前記ルール間のコード実行切替えの優先権を渡す実行を実施し、前記ランタイムエンジンによって提供されるユーティリティ関数のコールを実施する手段と、
    ポーリング命令及びそれに関連するデータ要素に基づいて前記翻訳された命令をスケジュールし、さらに、所与の期間についての1組の離散したタイムスロットにわたって、ポーリング命令の呼出しを均一に分散させる手段と
    を備えることを特徴とするシステム。
  33. 変換する前記手段は、前記ルールに、関連する前記翻訳された命令の制御を、その実行中にどこで放棄するかを決定する制御放棄コードを挿入する手段を含み、前記放棄コードは、パラメータ、局所変数、および再エントリ後に前記翻訳された命令内のどこに飛び越すかの少なくとも1つを含むスタックフレームに関連することを特徴とする請求項32に記載のシステム。
  34. ルール間でタスクを切り替える手段をさらに備え、前記翻訳された命令は、タスク切替えを実施するためのコールフレームを含むことを特徴とする請求項32に記載のシステム。
  35. ルールの同時処理を実施するためのコンピュータにより実行可能な命令を有するコンピュータ可読記録メディアであって、
    同期プログラミングモデルを用いて同期ルールステートメントを非同期命令に翻訳する翻訳コンポーネント備え、
    前記命令は、ユーティリティ関数をコールすることと、ランタイムエンジンのランタイムコード切替えに優先権を渡すこととを実施し、
    前記命令は、前記ルールにyield命令を挿入して、前記ランタイムエンジンによる処理中に、前記ルール間のコード実行切替えの優先権を渡す実行を実施し、前記ランタイムエンジンによって提供されるユーティリティ関数のコールを実施し、
    前記命令は、ポーリング命令及びそれに関連するデータ要素に基づいて前記翻訳された命令をスケジュールし、さらに、所与の期間についての1組の離散したタイムスロットにわたって、ポーリング命令の呼出しを均一に分散させること
    を特徴とするコンピュータ可読メディア。
JP2006536574A 2003-10-24 2004-07-27 監視ルールのスケーラブル(scalable)な同期処理および非同期処理 Expired - Fee Related JP5030592B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/693,072 2003-10-24
US10/693,072 US7539974B2 (en) 2003-10-24 2003-10-24 Scalable synchronous and asynchronous processing of monitoring rules
PCT/US2004/024134 WO2005045739A2 (en) 2003-10-24 2004-07-27 Scalable synchronous and asynchronous processing of monitoring rules

Publications (2)

Publication Number Publication Date
JP2007519075A JP2007519075A (ja) 2007-07-12
JP5030592B2 true JP5030592B2 (ja) 2012-09-19

Family

ID=34573196

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536574A Expired - Fee Related JP5030592B2 (ja) 2003-10-24 2004-07-27 監視ルールのスケーラブル(scalable)な同期処理および非同期処理

Country Status (6)

Country Link
US (1) US7539974B2 (ja)
EP (1) EP1678653A4 (ja)
JP (1) JP5030592B2 (ja)
KR (1) KR101203224B1 (ja)
CN (1) CN101410795B (ja)
WO (1) WO2005045739A2 (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7668953B1 (en) * 2003-11-13 2010-02-23 Cisco Technology, Inc. Rule-based network management approaches
US7613804B2 (en) * 2003-11-25 2009-11-03 Microsoft Corporation Systems and methods for state management of networked systems
US7590726B2 (en) * 2003-11-25 2009-09-15 Microsoft Corporation Systems and methods for unifying and/or utilizing state information for managing networked systems
JP4093483B2 (ja) 2003-12-26 2008-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 解析システム、解析方法、解析プログラム、及び記録媒体
US20050246692A1 (en) * 2004-04-28 2005-11-03 Convey Development, Inc. Asynchronous compilation
US8880664B1 (en) 2004-07-26 2014-11-04 Cisco Technology, Inc. Method and apparatus for generating a network profile and device profile
US7788536B1 (en) 2004-12-21 2010-08-31 Zenprise, Inc. Automated detection of problems in software application deployments
US20070294090A1 (en) * 2006-06-20 2007-12-20 Xerox Corporation Automated repair analysis using a bundled rule-based system
JP2010504572A (ja) * 2006-09-20 2010-02-12 ナショナル アイシーティー オーストラリア リミテッド モデル検査で用いられる遷移システムの生成
US8799448B2 (en) * 2006-12-20 2014-08-05 Microsoft Corporation Generating rule packs for monitoring computer systems
US8327350B2 (en) * 2007-01-02 2012-12-04 International Business Machines Corporation Virtual resource templates
US8732661B2 (en) * 2007-02-01 2014-05-20 Microsoft Corporation User experience customization framework
US8069154B2 (en) * 2007-03-05 2011-11-29 International Business Machines Corporation Autonomic rule generation in a content management system
US20080294769A1 (en) * 2007-05-25 2008-11-27 Kenshi Doi Efficient synchronization of agents starting a task where the agents poll a server to learn the task start time
JP4922834B2 (ja) * 2007-05-29 2012-04-25 株式会社日立製作所 コンピュータシステムに存在するリソースの性能を監視する装置及び方法
US8521501B2 (en) * 2007-06-27 2013-08-27 International Business Machines Corporation Real-time performance modeling of application in distributed environment and method of use
US8370802B2 (en) 2007-09-18 2013-02-05 International Business Machines Corporation Specifying an order for changing an operational state of software application components
US20090182689A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Rule-based dynamic operation evaluation
US8370795B1 (en) * 2008-01-31 2013-02-05 Intuit Inc. Method and system for explaining a value of a field in a form
WO2009108943A2 (en) * 2008-02-29 2009-09-03 Doyenz Incorporated Automation for virtualized it environments
US8191083B2 (en) * 2008-06-25 2012-05-29 Microsoft Corporation Executing state machine processing modules with an executive processing module
US9104794B2 (en) * 2008-07-15 2015-08-11 Microsoft Technology Licensing, Llc Automatic incremental application dependency discovery through code instrumentation
US8051332B2 (en) * 2008-07-15 2011-11-01 Avicode Inc. Exposing application performance counters for .NET applications through code instrumentation
US10002161B2 (en) * 2008-12-03 2018-06-19 Sap Se Multithreading and concurrency control for a rule-based transaction engine
US8364862B2 (en) 2009-06-11 2013-01-29 Intel Corporation Delegating a poll operation to another device
US20130067093A1 (en) * 2010-03-16 2013-03-14 Optimi Corporation Determining Essential Resources in a Wireless Network
US9268664B2 (en) * 2010-04-06 2016-02-23 Paypal, Inc. Method and system for synchronous and asynchronous monitoring
US8862250B2 (en) * 2010-05-07 2014-10-14 Exxonmobil Research And Engineering Company Integrated expert system for identifying abnormal events in an industrial plant
EP2434396A1 (en) * 2010-09-24 2012-03-28 Group Business Software AG Automatic synchronous-to-asynchronous software application converter
US8751777B2 (en) * 2011-01-28 2014-06-10 Honeywell International Inc. Methods and reconfigurable systems to optimize the performance of a condition based health maintenance system
US9043796B2 (en) * 2011-04-07 2015-05-26 Microsoft Technology Licensing, Llc Asynchronous callback driven messaging request completion notification
US9733791B2 (en) * 2011-09-12 2017-08-15 Microsoft Technology Licensing, Llc Access to contextually relevant system and application settings
JP6048089B2 (ja) * 2011-12-26 2016-12-21 株式会社リコー 情報処理装置、及びプログラム
WO2013114608A1 (ja) * 2012-02-02 2013-08-08 富士通株式会社 イベント管理装置、イベント管理のための情報処理方法及びプログラム
JP5884901B2 (ja) * 2012-04-20 2016-03-15 富士通株式会社 プログラム、情報処理装置およびイベント処理方法
US20130297603A1 (en) * 2012-05-01 2013-11-07 Fujitsu Technology Solutions Intellectual Property Gmbh Monitoring methods and systems for data centers
US8832716B2 (en) * 2012-08-10 2014-09-09 Honeywell International Inc. Systems and methods for limiting user customization of task workflow in a condition based health maintenance system
US9363289B2 (en) * 2013-02-12 2016-06-07 International Business Machines Corporation Instrumentation and monitoring of service level agreement (SLA) and service policy enforcement
US10666514B2 (en) 2013-02-12 2020-05-26 International Business Machines Corporation Applying policy attachment service level management (SLM) semantics within a peered policy enforcement deployment
US9258198B2 (en) 2013-02-12 2016-02-09 International Business Machines Corporation Dynamic generation of policy enforcement rules and actions from policy attachment semantics
US9092564B2 (en) 2013-02-15 2015-07-28 Microsoft Technology Licensing, Llc Call stacks for asynchronous programs
CN107291464B (zh) * 2013-03-07 2020-10-27 环球雅途集团有限公司 并行业务规则引擎分支无限性解决方法
CN104239008B (zh) * 2013-06-07 2017-09-29 深圳市并行科技有限公司 并行数据库管理系统及设计方案
IN2013CH03925A (ja) * 2013-09-02 2015-09-11 Appnomic Systems Private Ltd
US9934128B2 (en) * 2013-11-14 2018-04-03 Red Hat, Inc. Dynamic per-method probing during runtime
US11068827B1 (en) * 2015-06-22 2021-07-20 Wells Fargo Bank, N.A. Master performance indicator
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10409606B2 (en) * 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
SG10201507834SA (en) * 2015-09-21 2017-04-27 Yokogawa Electric Corp Mobile based on collaborative and interactive operations with smart mobile devices
US10339032B2 (en) 2016-03-29 2019-07-02 Microsoft Technology Licensing, LLD System for monitoring and reporting performance and correctness issues across design, compile and runtime
US10313406B2 (en) * 2016-11-01 2019-06-04 Microsoft Technology Licensing, Llc Synthetic transaction to determine centroid for cloud hosting
US12039258B2 (en) * 2018-10-15 2024-07-16 Dayal Family LLC Method and system for dynamic naming of component expressions within a formula in a cell in a spreadsheet application
CN110188132B (zh) * 2019-04-29 2023-05-05 安徽晶奇网络科技股份有限公司 一种数据交换方法及系统
US11159384B2 (en) * 2019-04-30 2021-10-26 Hewlett Packard Enterprise Development Lp Runtime monitoring in intent-based networking
CN110167120B (zh) * 2019-06-20 2023-05-16 江苏深农智能科技有限公司 一种物联网无线星型网络低功耗设备
CN111930383A (zh) * 2020-06-30 2020-11-13 广西东信易联科技有限公司 一种基于轻量规则的业务处理引擎及业务系统的处理方法
CN112291212B (zh) * 2020-10-16 2023-02-28 北京锐安科技有限公司 静态规则的管理方法、装置、电子设备和存储介质
CN113384899B (zh) * 2021-07-05 2022-10-04 在线途游(北京)科技有限公司 基于规则的运营方法及系统
CN114116045A (zh) * 2021-11-05 2022-03-01 广州海鹚网络科技有限公司 基于sdk异步线程获取数据的国际化业务方法及平台
CN114371808B (zh) * 2022-01-10 2024-09-10 百融至信(北京)科技有限公司 一种基于调度系统流程节点参数传递方法及系统
CN116610537B (zh) * 2023-07-20 2023-11-17 中债金融估值中心有限公司 一种数据量监控方法、系统、设备及存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE146611T1 (de) 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
JP3307461B2 (ja) * 1993-05-19 2002-07-24 川崎重工業株式会社 推論装置
US5619656A (en) 1994-05-05 1997-04-08 Openservice, Inc. System for uninterruptively displaying only relevant and non-redundant alert message of the highest severity for specific condition associated with group of computers being managed
GB2304944A (en) 1995-09-12 1997-03-26 Ibm Support for application programs in a distributed environment
US6088451A (en) 1996-06-28 2000-07-11 Mci Communications Corporation Security system and method for network element access
US6012152A (en) 1996-11-27 2000-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Software fault management system
US5920873A (en) * 1996-12-06 1999-07-06 International Business Machines Corporation Data management control system for file and database
US6112301A (en) * 1997-01-15 2000-08-29 International Business Machines Corporation System and method for customizing an operating system
US6085030A (en) * 1997-05-02 2000-07-04 Novell, Inc. Network component server
US5878418A (en) 1997-08-12 1999-03-02 Intervoice Limited Partnership Auto definition of data sets and provisioning interfaces for call automation
US6219666B1 (en) * 1998-07-13 2001-04-17 Oracle Corporation Autonomous transactions in a database system
US6067548A (en) * 1998-07-16 2000-05-23 E Guanxi, Inc. Dynamic organization model and management computing system and method therefor
US6477572B1 (en) * 1998-12-17 2002-11-05 International Business Machines Corporation Method for displaying a network topology for a task deployment service
US6553387B1 (en) * 1999-11-29 2003-04-22 Microsoft Corporation Logical volume configuration data management determines whether to expose the logical volume on-line, off-line request based on comparison of volume epoch numbers on each extents of the volume identifiers
US6684231B1 (en) * 1999-11-29 2004-01-27 Microsoft Corporation Migration of friendly volumes
US7010781B1 (en) * 2000-02-15 2006-03-07 Sun Microsystems, Inc. Methods and apparatus for managing debugging I/O
US6871344B2 (en) 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US6678889B1 (en) 2000-05-05 2004-01-13 International Business Machines Corporation Systems, methods and computer program products for locating resources within an XML document defining a console for managing multiple application programs
US6865566B2 (en) 2000-05-09 2005-03-08 Fair Isaac Corporation Approach for re-using business rules
CA2409920C (en) 2000-06-22 2013-05-14 Microsoft Corporation Distributed computing services platform
US7113988B2 (en) * 2000-06-29 2006-09-26 International Business Machines Corporation Proactive on-line diagnostics in a manageable network
US6598060B2 (en) * 2000-12-27 2003-07-22 Microsoft Corporation Method and system for creating and maintaining version-specific properties in a distributed environment
US20020147726A1 (en) 2001-01-09 2002-10-10 Partnercommunity, Inc. Creating, distributing and enforcing relational and business rules at front-end application
US20020133535A1 (en) * 2001-03-14 2002-09-19 Microsoft Corporation Identity-centric data access
US6985958B2 (en) * 2001-03-14 2006-01-10 Microsoft Corporation Messaging infrastructure for identity-centric data access
US7603469B2 (en) * 2002-01-15 2009-10-13 International Business Machines Corporation Provisioning aggregated services in a distributed computing environment
US7290262B2 (en) 2002-05-21 2007-10-30 International Business Machine Corporation Method and apparatus for dynamically determining information for deploying a web service
US7487509B2 (en) 2002-08-08 2009-02-03 Sun Microsystems, Inc. System and method for providing multiple embodiments of abstract software modules in peer-to-peer network environments
US7136843B2 (en) * 2002-10-23 2006-11-14 International Business Machines Corporation Object-oriented framework for reasoning having pluggable inference engines
US20040111638A1 (en) * 2002-12-09 2004-06-10 Satyendra Yadav Rule-based network survivability framework
US8099425B2 (en) 2003-03-14 2012-01-17 Computer Associates Think, Inc. Relational model for management information in network devices
US20040260819A1 (en) 2003-06-23 2004-12-23 Nokia Corporation Systems and methods for restricting event subscriptions through proxy-based filtering
US20050097146A1 (en) 2003-08-21 2005-05-05 Konstantinou Alexander V. Methods and systems for autonomously managing a network
US7409676B2 (en) 2003-10-20 2008-08-05 International Business Machines Corporation Systems, methods and computer programs for determining dependencies between logical components in a data processing system or network

Also Published As

Publication number Publication date
US7539974B2 (en) 2009-05-26
JP2007519075A (ja) 2007-07-12
CN101410795B (zh) 2012-03-21
EP1678653A2 (en) 2006-07-12
WO2005045739A3 (en) 2009-03-26
EP1678653A4 (en) 2010-05-05
KR101203224B1 (ko) 2012-11-20
KR20060112184A (ko) 2006-10-31
US20050114494A1 (en) 2005-05-26
CN101410795A (zh) 2009-04-15
WO2005045739A2 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
JP5030592B2 (ja) 監視ルールのスケーラブル(scalable)な同期処理および非同期処理
JP4809772B2 (ja) コンピュータシステムおよび分散アプリケーションのモデルに基づく管理
US7765540B2 (en) Use of attribution to describe management information
US9063725B2 (en) Portable management
US7506307B2 (en) Rules definition language
Bui et al. Work queue+ python: A framework for scalable scientific ensemble applications
US8171481B2 (en) Method and system for scheduling jobs based on resource relationships
US7779419B2 (en) Method and apparatus for creating templates
US20070239766A1 (en) Dynamic software performance models
US20060075408A1 (en) Distributed object execution system
US8806490B1 (en) Method and apparatus for managing workflow failures by retrying child and parent elements
Pautasso et al. Autonomic computing for virtual laboratories
AU2004279195B2 (en) Model-based management of computer systems and distributed applications
White et al. Design of an Autonomic Element for Server Management
Ranaldo et al. A Scheduler for a Multi-paradigm Grid Environment
Diaconescu Automatic performance optimisation of component-based enterprise systems via redundancy
Kocot et al. Optimization of grid application execution
Heinis Workflow-based Services: Infrastructure for Scientific Applications
Hughes et al. A graph based approach to supporting software reconfiguration in distributed sensor network applications
Radwan Investigating Globus and Grid Technologies

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110705

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111124

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111125

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120619

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120626

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees