JP3675802B2 - 計算の状態を再構成する方法ならびにシステム - Google Patents

計算の状態を再構成する方法ならびにシステム Download PDF

Info

Publication number
JP3675802B2
JP3675802B2 JP2003349169A JP2003349169A JP3675802B2 JP 3675802 B2 JP3675802 B2 JP 3675802B2 JP 2003349169 A JP2003349169 A JP 2003349169A JP 2003349169 A JP2003349169 A JP 2003349169A JP 3675802 B2 JP3675802 B2 JP 3675802B2
Authority
JP
Japan
Prior art keywords
program
application
execution
state
agent
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 - Lifetime
Application number
JP2003349169A
Other languages
English (en)
Other versions
JP2004094963A (ja
Inventor
スタンフィル,クレッグ
レッサー,クリフ
ローディ,ロバート
Original Assignee
エービー イニティオ ソフトウェア コーポレーション
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 エービー イニティオ ソフトウェア コーポレーション filed Critical エービー イニティオ ソフトウェア コーポレーション
Publication of JP2004094963A publication Critical patent/JP2004094963A/ja
Application granted granted Critical
Publication of JP3675802B2 publication Critical patent/JP3675802B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • Auxiliary Devices For Music (AREA)
  • Gyroscopes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Electrotherapy Devices (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

本発明はコンピュータ処理システムに関し、なかでも、並列処理コンピュータ環境において割り込まれた計算の状態を再構成する方法とシステムに関する。
単一プロセッサ式コンピュータの計算速度は過去30年にわたって飛躍的に速くなった。しかし、多くの分野で、最速の単一プロセッサ式コンピュータをも越える計算容量が要求されている。一例がトランザクション処理で挙げられる。この分野では、複数のユーザが同時にコンピュータ資源にアクセスしており、システムが市場で受け入れられるには応答時間が短くなければならない。データベース検索で他の例が見いだせる。この分野では、数百ギガバイトの情報を処理せねばならず、直列式コンピュータでデータを処理すると数日または数週間かかる。したがって、こうした問題を処理するために多様な「並列処理」システムが開発されてきた。この説明のために、並列処理システムには、複数の中央演算処理装置(CPU)を用いたコンピュータシステム構成が含まれている。こうしたコンピュータシステムには、構内型(たとえば、SMPコンピュータなどのマルチプロセッサシステム)、構内分散型(たとえばクラスタまたはMPP(高度並列計算機)として接続された複数のプロセッサ)、または遠隔型、または遠隔分散型(たとえば、LANまたはWANネットワークを介して接続された複数のプロセッサ)が挙げられる。
並列処理システムで動作する複数の複雑なデータ処理アプリケーションは通常、様々な外部のデータ収集(ファイル、データベースなど)に変更を加える。こうしたアプリケーションは、1つまたは複数のプログラムを同時または連続して動作させることで変更を加える。障害が発生すると、外部のデータ収集に部分的な変更を加える。このため現行または他のアプリケーションではデータが使用できなくなる。並列処理システムでは、データ収集がしばしば様々なノードや記憶装置(たとえば、磁気ディスク)にわたって拡がっているので問題が複雑になり、データの状態を「元に戻す(ロールバック(roll back))」のに必要な仕事は記憶装置の数に比例して増加する。同様に、終了しなければならないプログラムの数も増大する。こうした障害から回復するためには、現行の(すなわち、障害のある)アプリケーションを閉じて、(1)開始時からそのアプリケーションにより加えられたすべての変更を元に戻す(「完全な復帰」)または(2)システムの状態を中間の「チェックポイント」まで回復して、その点から実行を再起動する(「部分復帰」)、チェックポイントからの部分原状復帰(「チェックポインティング」としても知られている)は完全原状復帰より有益である。というのは、障害が発生しても喪失する仕事が少ないし、部分復帰では保持する情報は少なくてすむからである。しかし、チェックポインティングは複雑な技術的問題である。というのは、(1)実行中のプログラムの状態を捕捉することと、(2)修正中のすべてのデータファイルの状態を一貫して元に戻すことと、(3)プログラム間で移送されるデータ(たとえば、ネットワークを介して送られるデータ)を捕捉することが困難なためである。アプリケーションプログラムはチェックポインティングを実行するために特に書き込まなければならないことが多いことにより問題はいっそう複雑になる。一般に、チェックポインティング動作がチェックポインティングソフトウェアプログラムに明示呼出しを追加するときには必ずプログラムのソースコードを実質的に変えることになるように作成されているプログラムを修正することはできない。さらに、大半のオペレーティングシステムはプログラム間移送データを捕捉する手段を備えてはいない。
したがって、特にチェックポインティングを備えてないアプリケーションにチェックポインティングを備える方法が必要である。本発明は、並列処理システムにおいて実行中のアプリケーションに特に有益で、分散処理システムにおいて実行中のアプリケーションでも有益なこうした方法を提供するものである。
本発明は、システムで使用されるプログラムを修正する必要もなく、基本オペレーティングシステムを変更する必要もない並列および分散アプリケーションを実行しチェックポイントまで戻す方法とシステムである。本発明には、2つの個別の実施例が含まれる。第1の好ましい実施例は以下の概略工程を含む。
(1)並列処理システム上でアプリケーションを起動する。
(2)複数のコマンドおよび応答の記録を含むアプリケーションの処理を制御する。
(3)コミット規約を制御する。
(4)アプリケーションの障害を検出する。
(5)記録されたコマンドおよび応答を「再生した」後で最近にコミットされたトランザクションからアプリケーションの実行を継続する。
第2の好ましい実施例は以下の概略工程を含む。
(1)並列処理システム上でアプリケーションを起動する。
(2)アプリケーションを制御するドライバプログラムのメモリイメージの再帰記録を含むアプリケーションの処理を制御する。
(3)コミット規約を制御する。
(4)アプリケーションの障害を検出する。
(5)ドライバアプリケーションの記録メモリイメージを「再生した」後で最近コミットされたトランザクションからアプリケーションの実行を続ける。
進歩的アーキテクチャの主要な特色は以下の通りである。
(1)中央制御:複数のアプリケーションを制御の中心点から実行する。好ましい実施例では、単一の制御スレッドを備えた単一「ドライバ」プログラムが、アプリケーションを形成するすべてのプログラムとデータ収集をインスタンス生成し監視する。
(2)ホストおよびエージェントを介した制御:複数のノード上で処理を分散させるために、「エージェント」と呼ばれるプログラムがリモートノードで変更を実行するために使用される。好ましい実施例では、個々のエージェントが各ノードでインスタンス生成される。システムの全体制御は「上位」プログラムにより維持される。このプログラムは、ドライバプログラムとエージェントを介した通信を管理して、グローバルシステム状態を維持する。
(3)単一コマンドチャンネル:「コマンドチャンネル」はドライバプログラムとホストプログラム間で維持される。好ましい実施例では、ドライバプログラムが、一連のコマンドと応答を介してのみシステムに変更を加える。
(4)コマンドチャンネルの通信量またはメモリイメージの記録:第1実施例では、コマンドチャンネルを介して送られるコマンドと応答のすべてはホストプログラムにより記録され、不揮発性記憶装置に保存される。第2実施例では、アプリケーションを制御するドライバプログラムのメモリイメージは、ホストプログラムにより再帰的に記録され、不揮発性記憶装置に保存される。
(5)トランザクション準拠制御:好ましい実施例では、コマンドチャンネルを介して実行された動作のすべては、グローバルアトミシティを確保するためにコミット規約(好ましくは、2相コミット規約)を使用する。
(6)反復による回復:上記のメカニズムを用いて、本発明は、障害のあるアプリケーションを、単純に再実行することで「回復」する機能を備えている。要約すると、すべてのデータの状態をコミット規約を介して回復して、コマンドチャンネル上の記録された通信量が、ドライバプログラムを「だまして」、ドライバプログラムが新しいアプリケーションを実行していると信じさせるか、またはドライバプログラムの最後の良好な状態のメモリイメージを回復する。単一スレッド式コンピュータプログラムの決定論的な特質のために、ドライバプログラムは、最後の良好な状態の時点では、プログラムが実行された最初の時と同じ状態で、終了されなければならない。
本発明は主に、従来のデータ処理アプリケーション(たとえば、アカウントシステム、バッチトランザクションシステムなど)に用いられるが、本発明は、ファイルまたはデータベースに変更を加える大半のコンピュータアプリケーションに適用可能である。
本発明の好ましい実施例の詳細は、添付図面ならびに以下の説明に詳述される。本発明の詳細が分かると、付随する多くの新規技術や変更が当業者には明らかになるであろう。
本発明の一観点によれば、並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行する方法であって、(a)並列処理システム内の複数のプロセッサであって、それぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下で個々の実行段階であって、アプリケーションの全てのプロセスが前記実行段階間において停止されることが要求される実行段階でアプリケーションを実行する工程と、(b)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を複数のプロセッサ上で実行されるアプリケーションの全ての部分が各フェーズ間で停止するように制御する工程と、(c)首尾よく完了した実行段階それぞれの終了状態を保存する工程と、(d)首尾よく完了した実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びそれぞれのエージェントプログラムが保存状態をそれぞれ再作成するのに必要な前記ドライバプログラムのデータ構造を保存する工程と、(e)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する工程と、(f)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する工程と、(g)前記ドライバプログラム及びそれぞれのエージェントプログラムの対応する保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する工程と、(h)障害が検出された実行段階の開始から前記アプリケーションを再開する工程と、を有する方法が提供される。
本発明の他の観点によれば、並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行するコンピュータ装置であって、(a)並列処理システム内の複数のプロセッサであって、それぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下で個々の実行段階でアプリケーションを実行する手段と、(b)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を複数のプロセッサ上で実行されるアプリケーションの全ての部分が各フェーズ間で停止するように制御する手段と、(c)首尾よく完了した実行段階それぞれの終了状態を保存する手段と、(d)首尾よく完了した実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びそれぞれのエージェントプログラムが保存状態をそれぞれ再作成するのに必要な前記ドライバプログラムのデータ構造を保存する手段と、(e)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する手段と、(f)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する手段と、(g)前記ドライバプログラム及びそれぞれのエージェントプログラムの対応する保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する手段と、(h)障害が検出された実行段階の開始から前記アプリケーションを再開する手段と、を有するコンピュータ装置が提供される。
本発明の別の観点によれば、並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行する方法であって、(a)アプリケーションを個々の実行段階であって、アプリケーションの全てのプロセスが前記実行段階間において停止されることが要求される実行段階に分割する工程と、(b)並列処理システム内の複数のフロセッサであって、それぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下で前記アプリケーションの実行を開始する工程と、(c)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を複数のプロセッサ上で実行されるアプリケーションの全ての部分が各フェーズ間で停止するように制御する工程と、(d)首尾よく完了した実行段階それぞれの終了状態を保存する工程と、(e)首尾よく完了した実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びそれぞれのエージェントプログラムが保存状態をそれぞれ再作成するのに必要な前記ドライバプログラム及びそれぞれのエージェントプログラムのデータ構造を保存する工程と、(f)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する工程と、(g)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する工程と、(h)前記ドライバプログラム及びそれぞれのエージェントプログラムの対応する保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する工程と、(i)障害が検出された実行段階の開始から前記アプリケーションを再開する工程と、を有する方法が提供される。
さらに別観点によれば、並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行するコンピュータ装置であって、(a)アプリケーションを個々の実行段階であって、アプリケーションの全てのプロセスが前記実行段階間において停止されることが要求される実行段階に分割する手段と、(b)並列処理システム内の複数のフロセッサであって、それぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下で前記アプリケーションの実行を開始する手段と、(c)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を複数のプロセッサ上で実行されるアプリケーションの全ての部分が各フェーズ間で停止するように制御する手段と、(d)首尾よく完了した実行段階それぞれの終了状態を保存する手段と、(e)首尾よく完了した実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びそれぞれのエージェントプログラムが保存状態をそれぞれ再作成するのに必要な前記ドライバプログラム及びそれぞれのエージェントプログラムの対応するデータ構造を保存する手段と、(f)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する手段と、(g)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する手段と、(h)前記ドライバプログラム及びそれぞれのエージェントプログラムの保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する手段と、(i)障害が検出された実行段階の開始から前記アプリケーションを再開する手段とを有するコンピュータ装置が提供される。
並列処理システムにおいて実行中のアプリケーションに特に有益で、分散処理システムにおいて実行中のアプリケーションでも有益である。
本説明を通して、図示の好ましい実施例と例は、本発明を制限するものではなく例示するものとして考慮すべきである。
図1は、本発明によるチェックポインティングシステムのソフトウェア構成要素と制御の流れを示す構成図である。ホストシステム10は、ホストプログラム12と、ドライバプログラム14と、コマンドと応答を記録するデータ記憶システム16とを備える。ホストプログラム12とドライバプログラム14はコマンドチャンネル18(たとえば、物理的バス上の論理チャンネル)により相互接続される。好ましい実施例では、ホストプログラム12は実際は、ドライバプログラム14のアドレス空間内のオブジェクトである。ホストプログラムを実行する個別プロセスを代りに実行することもできる。ただし、「ホストプログラム」と「ドライバプログラム」への分割は、本発明のアーキテクチャを記載する便宜的な方法である。
ホストシステム10は、エージェント通信チャンネル22(たとえば、従来の物理的データリンク22)により少なくとも1つのリモートシステム20に接続されている。各リモートシステム20内には、リモートデータ記憶装置26に接続されたエージェント24がある。
図1に示す構成要素すべてが通常の実行中には動作中である。ドライバプログラム14は複数のコマンドをホストプログラム12に発行して、様々なリモートシステム20上のアプリケーションの動作を実行する。ホストプログラム12は、複数のコマンドを1つまたは複数のエージェント24に発行して要求された動作を実行することでこうしたコマンドに応答する。動作が完了するとエージェント24はホストプログラム12に戻り、次に、ホストプログラム12はドライバプログラム14に戻る。ドライバプログラム14とホストプログラム12の間のコマンドと応答のすべてはデータ記憶システム16に記録される。
図2Aは、本発明によるチェックポイントされたシステムの通常の実行を示す。図示の例では、アプリケーションは3つの段階で実行される、初期状態0で始まり、段階0を介してチェックポイント1状態に進み、段階1を介してチェックポイント2状態に進み、段階2を介して最終状態に進む。
図2Bは、図2Aのチェックポイントされたプログラムの実行中に障害を示す構成図である。例えばノードの1つが「クラッシュ」して、再起動しなければならない場合には障害が発生する場合がある。図示の例では、チェックポイント1状態に到達した後で、しばしば、障害が発生する。段階1の真ん中で実行が停止し、並列処理システムの外部状態が不本意な障害状態になる。
図2Cは、本発明を用いて図2Bに示す障害からの回復を示す構成図である。アプリケーションが再実行されることで回復されると、障害段階1で実行された動作が元に戻り、処理システムの外部状態をチェックポイント1状態の状態に戻す。すべての完了段階(この例では、段階0)は「反復」または「回復」される。反復では、ドライバプログラム14はその初期状態から再起動され、通常に機能する。しかし、ドライバプログラム14はチェックポイント1状態にある同じ状態に到達するまでは外部状態変化は発生しない。回復においては、ドライバプログラム14の保存イメージが回復され、その点から通常に機能する。その後、障害段階(この例では段階1)ならびにその後のすべての段階が通常に実行されて、チェックポイント2の状態を介して最終状態に至るまでアプリケーションが実行される。
図3は、反復中の本発明によるチェックポインティングシステムのアーキテクチャを示す構成図である。反復モード中には、ドライバプログラム14は初期状態から開始する。ドライバプログラム14からの各コマンドはホストプログラム12に再発行される。ホストプログラム12は、そのコマンドを、データ記憶システム16に以前記憶された記録コマンドおよび応答と突き合わせる。ドライバプログラム14からのコマンド列が記録コマンドと一致している限り、対応する記録応答がホストプログラム12によりドライバプログラム14に送られる。実際には、ドライバプログラム14を「だまして」、反復中の複数段階が通常に実行中であると思わせる。しかし、データは実際には変形されたり、移動されたりすることはない。したがって、反復段階は、ドライバプログラム14が最後の良好なチェックポイント状態に到達するまで、極めて迅速に遂行される。このチェックポイントで、ホストプログラム12は、反復モードから切り替えられて、通常の動作モードに戻されて、ドライバプログラム14からのコマンドをリモートシステム20のエージェント24に通常の方式で供給する。
本発明は、ハードウェアまたはソフトウェアまたは両者の組合せにより実施可能である。しかし、好ましくは、本発明は、プロセッサ、データ記憶システム(揮発性メモリおよび不揮発性メモリおよび/または記憶要素を含む)、少なくとも1台の入力装置、および少なくとも1台の出力装置とをそれぞれ含む複数台のプログラム式コンピュータで実行されるコンピュータプログラムで実施される。プログラムコードは、入力データに適用されて、本明細書に記載の機能を実行し、出力情報を生成する。出力情報は、周知の方式で、1つまたは複数の出力装置に送られる。
各プログラムは、コンピュータシステムとやり取りするために高レベル手続き形プログラミング言語またはオブジェクト指向プログラミング言語で実施されるのが好ましい。しかし、望ましければ、アセンブリー言語または機械言語で実施することも可能である。いかなる場合でも、言語はコンパイル済みまたは翻訳済み言語である。
こうしたコンピュータプログラムはそれぞれ、汎用または特定目的プログラム式コンピュータにより読み取り可能なそれぞれ記憶媒体または装置(たとえば、ROMまたは磁気ディスク)に記憶されるのが好ましく、記憶媒体または装置がコンピュータにより読み取られるとコンピュータが構成され動作して、本明細書に記載された処理手順を実行する。本発明のシステムは、コンピュータプログラムで構成されるコンピュータ読取可能な記憶媒体として実施することも可能である。この場合、このように構成された記憶媒体によりコンピュータは特定かつ事前定義方式で動作して、本明細書に記載された機能を実行する。
ドライバプログラム
本発明は、1つまたは複数の従来の非チェックポインティングプログラムの実行をセットアップし制御する監視機能を備えたドライバプログラム14を使用する。望まれれば追加機能も加えられる。好ましい実施例では、ドライバプログラム14は少なくとも以下に定義した機能を実行する。
(a)起動ジョブ:ドライバプログラム14が起動するときに、プログラム14は、ホストシステム10がホストプログラム12をインスタント生成するよう要請する。ホストシステム10は、ホストプログラム12およびデータ記憶システム16とやり取りをするために、コマンドチャンネル18の識別子またはポインタをドライバプログラム14に備えることで応答する。ドライバプログラム14は、コマンドチャンネル18を介してホストプログラム12に接続され、「開始ジョブ」コマンドをホストプログラム12に発行する。このコマンドは、データ記憶システム16にホストシステム10により確立される「回復ファイル」の名前を含む。(実施例によっては、「接続」は個別のプロセスの開始を要求するものもあり、内部データ構造の初期化を要求するものもある。どちらの場合でも、第1動作は常に上記のジョブを開始することである。
(b)コマンド:コマンドチャンネル18は少なくとも以下のコマンドをドライバプログラム14から受け取る。
(1)遠隔手続呼出し:この呼出しによりコマンドがリモートエージェント24により実行される。遠隔手続呼出し(RPC)コマンドは、コマンドが実行されるノードを指定する。そのノードで現在実行中のエージェントがない場合、ホストプログラム12はそのノードでリモートエージェント24を起動する。
(2)開始プロセス:このコマンドによりプロセスがエージェント24により起動される。再び、このコマンドはプロセスが実行されるノードを指定する。そのノードに現在実行中のエージェントがない場合、ホストプログラム12はそのノードでリモートエージェント24を起動する。
(3)待機:このコマンドは、すべてのプロセスが実行を終えるまでドライバプログラム14の機能実行を中止させる。
(4)準備:コミット:ロールバック:これら3つのコマンドは、従来の2相コミットトランザクション処理プロトコルに関して通常の従来技術の意味である。
(c)応答の受信:各コマンドの実行の結果、正確に1つのメッセージが返される。コマンドおよび応答は恣意的に混合できる(たとえば、複数のコマンドを発行して、その後対応する応答が返ってくる。)ドライバプログラム14はホストプログラム12から少なくとも以下に示す応答を受け取る。
(1)遠隔手順呼出し応答:このメッセージの内容は、RPCコマンドにより引き起こされた処理手順にのみ対応する。
(2)プロセスID:プロセスがシステム(ホスト10またはリモート20)で実行されると、システムはそのプロセス用の識別子で応答する。
(3)待機状況:様々なプロセスが首尾よく終了したかどうかについての指示。
(4)準備/コミット/ロールバック状況:成功または失敗状況指標。
(d)中止:このコマンドは実行が停止されることを意味する。ホストプログラム12はロールバックの実行を企てる(たとえば、計算に関わるノードの1つがクラッシュするとこの企ては失敗することがある)。ロールバックが成功してもしなくても、コマンドチャンネル18は通常壊される。中止コマンドは、たとえば、ドライバプログラム14が実行障害を検出するとドライバプログラム14により手動で発行される。中止コマンドは、ドライバプログラム14に障害が発生すると暗示的に発行される場合もある。
(e)ジョブ終了:このコマンドは実行する仕事が残ってないことを示す。コマンドチャンネル18は通常壊され、アプリケーションにより成された変更はすべて取り消せなくなる。
(f)追加コマンド:追加コマンドは望ましければ追加可能であるが、本開示のためには重要ではない。
重要なことは、ドライバプログラム14がアプリケーションの実行を一連の「段階」に分割して、すべてのプロセスが段階の間で静止するよう要求される(たとえば、未実行のデータ転送を残してないアイドル状態からの脱出またはその状態への到達)。段階は以下に示す工程から構成される。
(1)ドライバプログラム14は一連のRPC(たとえば、データファイルなどのセットアップ)を発行する。これら一連のRPCは1つまたは複数のアプリケーションプログラムにより必要とされる。
(2)オプションとして、ドライバプログラム14は一連の起動プロセスコマンドを発行する。
(3)任意のプロセスが起動した場合、望ましい数のプロセスが起動した後で、ドライバプログラム14は待機コマンドを発行して、待機が完了するまで動作を中止して、プロセスが完了する時間を確保する。一般に、他のプロセスと相互交信する必要のあるすべてのプロセスは同時に開始されるべきである。
(4)工程(1)−(3)のシーケンスは望まれれば数回繰り返すことができる。
(5)ドライバプログラム14は準備およびコミットコマンドを発行して、現トランザクションがコミットされ、現トランザクション中に成された変更を永続的なものにする。
(6)更なる実行段階が続く。
主要な工程は、再帰的に待機コマンドを発行している。というのはこのコマンドが終了した後で、このシステムには活動状態のアプリケーションプログラムがないことと、通信チャンネルに移送データがないことが保証されるからである。この特徴により本発明は、プログラムの実行状態と通信チャンネルの移送データを捕捉する際の固有の困難に対処できる。
こうした設計の結果、プログラムの実行中にはチェックポイントは作成されない。アプリケーションプログラムの1つが数時間実行されている場合、チェックポイントを作成できない数時間の期間が必要となる。任意の段階の実行時間が過剰にならないように保証するのはドライバプログラム14の責任である。このドライバプログラム14はこのシステムのユーザによりしばしば書き込まれるものである。
段階の持続時間を削減するのに使用できる従来の2つの技術がある。第1の技術は、1段階内の処理の連続工程の間で「パイプライン化」の使用を削減することである。特に、通常の実施では、通信チャンネルを介して構成プログラムを連結することでこれらの構成プログラムからアプリケーションを構成する。これは「パイプライン」と呼ばれる技術である。両構成プログラムは同じ段階で実行されなければならない。この結果、段階が長くなりすぎる場合には、ドライバのライターが一次ファイルを通信チャンネルと代替することができ、個々の実行段階で各構成プログラムを実行できる。第2技術は、データをいっそう細かく分割することである。たとえば、10ギガバイトの単一ファイルを処理しないで、それぞれ1ギガバイトの10のサブファイルに分割し、単一実行段階で各サブファイルを処理することもできる。大半のアプリケーションの実行時間はそれらの入力ファイルの長さにほぼ比例しているという事実のために、この方法は、たとえば、段階の持続時間を10分の1に減らすことができ、チェックポイントが作成できる周波数をいっそう改良する。(従来技術では、この追加部分分割が特別に実施され、通常はプログラムの修正と、おそらく追加ソフトウェアの書込が必要となる。本発明の譲渡人に譲渡された「構成要素準拠並列アプリケーションのチェックポイントを増加させる分割増加システムならびに方法(Overpartitioning System and Method for Increasing Checkpoints in Component-based Parallel Applications)」の名称の共同出願を参照のこと。一般的な方法では、元のプログラムを修正することなく部分分割が実行できると説明されている。)
状態データベース(SDB)
ホストシステム10はそれ自体のために状態データベース(「ホストSDB」)を作成する。各エージェント24はそれ自体の状態データベース(「エージェントSDB」)も作成する。ホストSDBは、本発明の反復実施例を使用するときにコマンドチャンネル通信量を記録し、どの段階が実行中かを記録し、コミット処理のために必要な情報を記録するのに使用される。エージェントSDBは、回復処理およびコミット処理のための情報を記録するのに使用される。好ましい実施例では、SDBは、SDBにアクセスするプログラムの寿命の間だけメモリにある。しかし、SDBへの変更すべてが、データ記憶システム16など不揮発性記憶機構の順序づけられたジャーナルファイル(「ログ」)に連続して記録される。任意の時点で、SDBは対応するログからメモリに再構成可能である。好ましい実施例では、ログはSDBに関連する唯一の一貫した記録機構である。SDBの再構成は空のデータベースから始まりログからデータベースへの一連の変更を読み取り、メモリ内データベース内容の変更を反映させることにより実行される。
好ましい実施例では、SDBへの入力はすべてテキスト列の対、キーと値の形である。入力(「Put」)を書き込むと、呼出しプログラムが、データベースに記憶されているキー/値入力を供給する。Put動作の前に同一のキーをもつ入力がある場合、それは置換される。入力(「Get」)を読み取ると、呼出しプログラムはキーを供給し、そのキーをもつ入力がある場合、その値列が戻される。さらに、好ましい実施例では、SDBインターフェースはリストの作成が可能である。リストは、キーによるのではなく連続してアクセス可能な入力の連続である。リスト入力は通常の列値である。
ユーザは、ログファイルの名前を付与することでSDBを「開く」。ログファイルがある場合、それが読み取られ、対応するSDBがログ内容から再構成される。ログファイルが存在しない場合、ログファイルが作成され、SDBは空のデータ構造としてメモリに作成される。次いで、SDBは、それが閉じられるまでPutおよびGet動作を利用可能である。データベースの閉鎖は、閉鎖動作を用いれば明示的に実行され、アクセスプログラムが終了すると暗示的に実行される。
好ましい実施例では、SDB上のすべての動作が「トランザクション」に分類される。GetまたはPutは、進行中のトランザクションがない場合新しいトランザクションを起動する。トランザクションは、以後のPutsまたはGetsを通して以下のようになるまで継続する。
(1)SDBコミット動作が実行されるまで。
(2)SDBロールバック動作が実行されるまで。この動作はSDB上の全トランザクションの効果を無効にする。
(3)SDBが閉鎖されるまで。この場合には判明している最後の良好な状態まで任意の活動中のトランザクションを暗示的に戻す。
好ましい実施例では、SDB上のトランザクションは全体的なコミットアーキテクチャの一部ではなく、いっそう細かく細分できる。
ホストプログラム
ドライバプログラム14がジョブを始めると、ホストシステム10はコマンドチャンネル18を作成して、ドライバプログラム14とホストプログラム12の間でデータのやり取りを可能にする。ホストプログラム12は、コマンドチャンネル18のホストシステム10の端末でデータを処理する。各アプリケーション当たりのホストプログラム12が1つある。ホストプログラム12は以下のように動作する。
(a)ジョブの開始:好ましい実施例では、以下の機能がアプリケーションの始めにホストプログラム12により実行される。
(1)ジョブID:ホストプログラム12は、ホストプログラム12が実行中のシステムのインターネットアドレスを用いて「ジョブID」と呼ばれる固有識別子と、タイムスタンプと、ホストプログラム12のプロセスIDを作成する。
(2)ホストSDB:ホストプログラム12は、ジョブIDを識別子として使用することでホストSDBを作成する。好ましい実施例では、ジョブIDはホストSDBに記憶される。
(3)回復ファイル:ホストプログラム12はその実行の開始時に「回復ファイル」と呼ばれるファイルをデータ記憶システム16にも書き込む。このファイルはジョブIDも含んでいる。このジョブIDはホストSDBを開くために使用される。
(b)リモートノードおよびエージェント:ホストプログラム12は複数のプロセスを開始させ、1つまたは複数のエージェント24を介してファイル/データベース上で動作する。各エージェント24はホストプログラムとの双方向に接続(エージェントコマンドチャンネル22)を確立して、コマンドをエージェント24に送信し、エージェント24から応答を受けとる。エージェント24は、アプリケーションプログラムが実行されるかまたはファイルまたは他のデータ収集が配置されている各リモートシステム20で起動する。好ましい実施例では、複数のエージェント24が、アプリケーションの開始時に一度にすべてが起動せずに、必要に応じて起動される。
(c)段階の実行:ホストプログラム12は複数のエージェント24を使用して、ドライバプログラム14により指示された通りに、非チェックポインティングアプリケーションの実行を複数段階に分割する。ホストプログラム12は、この分割を実施するトランザクションメカニズムを制御し、以下に記載のように簿記および調整機能を実行する。
好ましい実施例では、各段階はゼロから番号が振られる。1つの段階は常に4つの状態「実行中、エラー、準備完了またはコミット中」の1つである。新しい段階が始まると、それは実行状態である。遠隔動作がその段階中に実行されているのでこの段階は実行状態で継続する。
現在の段階番号とその状態はホストSDBに記録されている。この情報はあらゆる状態遷移で記録される。段階中の任意の時点で、ドライバプログラム14はロールバック機能を呼び出すことができる。この機能により現段階中にこれまで実行されたすべての動作の実行が無効になり、すべての変更された状態が段階の開始時の状態まで戻され、その段階を実行状態にする。
各段階中に、実行状態の間、ドライバプログラム14が開始プロセスおよび遠隔処理手順呼出し(RPC)コマンドをホストプログラム12に発行する。ホストプログラム12はこうしたコマンドを適切なエージェント24に送り、各エージェント24からの応答をまとめて、その応答をドライバプログラム14に送る。本発明の反復実施例では、こうしたコマンドと対応する応答のすべてがホストSDBに記録されている。この情報は、以下に記載したように「反復モード」で使用される。
ドライバプログラム14により起動されたプロセスすべてが終了すると、ドライバプログラム14は準備機能を呼び出して、アプリケーションの現段階を準備完了状態にする。この後で、ドライバプログラム14はコミット機能を呼び出す。この機能は段階中に実行された動作すべてを完全、正確かつ改変不能に実行して、この段階を終える。ロールバック機能は準備完了状態でも呼び出せ、準備機能の前に呼びだされたのと同じ効果をもたらすことができる。
本発明の好ましい実施例は従来の2相コミットプロトコルを使用する。好ましい反復実施例では、2相コミットプロトコルは以下のようなものである。
(1)準備:準備コマンドは以下の動作によりホストプログラム12により実行される。
1)現段階番号を含むキーにより、ホストSDBの現段階から記録されたコマンドチャンネルデータを記憶する。こうした情報がすでにある場合には(たとえば、コミット処理中に障害が発生した同じ段階の前の実行によるもの)、重ね書きされる。
2)現段階中に複数のコマンドを実行した各エージェント24にホストプログラム12から準備コマンドを送る。各エージェントは、従来の2相コミット規約に応じて、以後の任意の時点で、エージェント24の制御下ですべての資源の状態を回復するロールバックコマンドを実行するかまたは、エージェント24の制御下ですべての資源の変更を永続的なものにするコミットコマンドを実行するように、準備完了状態を入力する。この準備完了状態は持続可能でなければならない。すなわち、システム障害の後で準備完了状態を再構成し、ロールバックまたはコミット動作を実行することが可能でなければならない。準備完了状態に達すると、各エージェント24は、準備コマンドに応答することでこのことを知らせることになる。
3)すべてのエージェント24は準備コマンドが首尾よく完了したことを示すまで待機する。
4)ホストプログラム12の状態を準備完了状態に設定し、ホストSDBの変更を通知する。
(2)コミット:コミットコマンドは以下のようにして実行される。
1)ホストプログラム12の状態をコミット状態に設定し、ホストSDBの変更を通知する。
2)段階中に複数のコマンドを実行した各エージェント24にコミットコマンドを送る。次に、各エージェント24は、その制御下にあるすべての資源に加えられた変更が永続的になり、ロールバック時に必要とされたかもしれない情報を除去する。こうした処理が完了すると、各エージェント24は、コミットコマンドに応答することによりこのことを合図する。
3)すべてのエージェント24はコミットコマンドが首尾よく完了したことを示すまで待機する。
4)ホストプログラム12の状態を実行状態に設定し、段階番号を増分し、ホストSDBの変更を通知する。
実行状態または準備完了状態中に、エラー状態がオペレーティングシステムまたはアプリケーションにより検出される場合には、その段階はエラー状態となる。好ましい実施例では、この状態の間には、さらに遠隔動作を実行することはできないし、段階の状態を変更することもできないし、新しい段階を開始することもできない。好ましい実施例では、この時点での規約による動作は以下のものだけである。
(1)デバッギング:ドライバプログラム14は、周知の方式で、複数の通報コマンドを使用して、アプリケーションをデバッグしたり、さらに/または診断情報を収集することができる。
(2)イグジット(退出):ドライバプログラム14が出ていくと、ホストプログラム12は、ドライバプログラム14に代わってロールバックコマンドを発行できる。
(3)ロールバック:ドライバプログラム14はロールバックコマンドを発行できる。このコマンドは、現段階の開始時の状態にシステムを戻し、上記のようにファイル/データベースに加えられた変更を元に戻す。
要約すると、ホストプログラム12の規約状態変化は以下の通りである。
(1)初期状態:実行中
(2)コミット状態以外の任意の状態においては、エラー条件によりエラー状態に遷移する。ロールバックコマンドによりまたはドライバプログラム14が出た場合にはこの状態から脱出できる。このロールバックコマンドによりシステムは実行状態になる。
(3)実行状態では、準備動作により準備完了状態に遷移する。実行状態または準備完了状態中に、ロールバック動作により段階が元に戻され、その場合には段階番号は同じであり、システムは実行状態に戻る。
(4)準備完了状態では、コミット動作によりコミット状態に遷移される。この状態はコミット動作の持続中続き、段階番号を進め、現段階を終了し、実行状態の新しい段階を始める。一旦ホストSDBがコミット状態への遷移を記録すると、エラーの検出によりシステムは打ち切られる。システムが再起動すると、コミット動作が完了する。コミット状態中にはロールバックは不可能である。
アプリケーションの全段階を完了(コミット)すると、ドライバプログラム14は閉鎖コマンドを発行する。このコマンドはアプリケーションが首尾よく完了したことを示している。この動作は回復ファイルとホストSDBを除去する。
本発明の回復実施例では、処理手順は同様であるが、例外点がいくつかある。第1に、コマンドと応答がホストSDBに記憶されない。逆に、準備コマンドがドライバプログラム14により発行されホストプログラム12と複数のエージェント24により実行されると、ドライバプログラム14のメモリイメージファイルが、周知の方式で、ディスクドライブなどの不揮発性記憶機構に記憶されるのが好ましい。メモリイメージは、ドライバプログラム14の(交換ファイル等を含む)アドレス空間全体、またはドライバプログラム14の保存状態を再創造するのに必要な(ドライバプログラム14の特定の実施用のプログラマにより決定された)ドライバプログラム14の臨界データ構造だけを含む。(たとえば、メモリのプログラム静止画を記憶されているイメージファイルと比較することにより)ホストプログラム12およびデータ記憶システム16とやり取りをするために、メモリイメージファイルの書込みが確認されシステムが準備完了状態に入ると、コミットコマンドは、上記のように、ドライバプログラム14により発行されホストプログラム12と複数のエージェント24により実行される。好ましい実施例では、以前のメモリイメージファイルが削除する前に(すなわち、「A」と「B」コピーが周知の方式で維持される)次のメモリイメージファイルが書き込まれ確認される。以前のメモリイメージファイルは、コミット動作が完了しなければ削除されない。
(d)回復:閉鎖動作を実行することなく終了したアプリケーションは障害が発生したと考えられる。アプリケーションが再起動されると、回復を起動する。好ましい実施例では、ホストプログラム12が開始するときは常に、ホストプログラム12は回復ファイルがあるかどうかを検査する。好ましい実施例では、ファイルがあると、ホストプログラム12は、前の障害が発生したと仮定して、前のジョブを再度開始しようとする。
回復の第1工程は、すべてのファイルとデータベースをそれらの最近コミットした状態に回復することである。ホストSDBが実行、エラーまたは準備完了の状態を指示する場合、ホストプログラム12はロールバックコマンドを発行し、すべてのコミットされていない動作を周知の方式で元に戻す。ホストSDBがコミット状態を示す場合、ホストプログラム12はコミットコマンドを再発行し、割り込まれたコミット動作であるのが明らかな動作を完了する。
本発明の反復実施例では、ホストプログラム12は反復モードを入力する。上記したように、ドライバプログラム14は、適切な段階番号を含むキーを用いて、単一コマンドチャンネル18を介してシステムの残りと相互に作用する。その通信量はコミット処理中にホストSDBに自動的に記憶される。段階を反復するときには、ホストプログラム12はホストSDBから保存されたコマンドチャンネル通信量を検索することにより開始する。反復のために、ドライバプログラム14はその初期状態から再起動され、通常に機能する。反復期間中に、ドライバプログラム14により送られたすべてのコマンドがホストプログラム12により捨てられる。(安全のために、記録されたコマンドメッセージ通信量とそれらのコマンドを比較した後に行われる。ただし、これはオプションである。)ドライバプログラム14がコマンドチャンネル18を介して応答メッセージを受け取ろうとするときは常に、データ記憶システム16に記録された到来応答通信量からホストプログラム12により応答が取り出され、即座にドライバプログラム14に送られる。単一スレッド式コンピュータプログラムの決定特性のために、このプロセスの結果、ドライバプログラム14は障害のある実行中に行われたのと同じコマンド列を実行する。制御されたアプリケーションプログラムは以前の実行で実行されたのと同じ状態で終了することになる。
すべてのコミットされた段階からの記録されたコマンドチャンネル通信量が再生されると、以下のことが保証される。
(1)ドライバプログラム14が、最近のコミット動作までその状態を(反復により)回復されたこと。
(2)すべてのファイルとデータベースが、最近のコミット動作までそれらの状態を(2相コミットプロトコルにより)回復されたこと。
したがって、システムの状態は回復され、実行が通常通り進む。
本発明の回復実施例では、処理手順はいくぶん異なる。
(1)ホストSDBが準備完了状態を示し2つのメモリイメージファイル(AとB)が保存されていると、ホストプログラム12はより新しいファイルを削除する(したがって、2重コミットが阻止される)、ロールバックコマンドを発行し、より古いイメージファイル(すなわち、ドライバプログラム14の最後に知られた良好な保存されたイメージ)をメモリに再ロードする。ホストSDBが準備完了状態を示し1つのメモリイメージファイル(AまたはB)が保存される場合、ホストプログラム12がロールバックコマンドを発行し、そのイメージファイルをメモリに再ロードする。
(2)ホストSDBがコミット状態を示している場合、ホストプログラム12はコミットコマンドを発行し、最新のイメージファイルをメモリに再ロードする。
(3)ホストSDBが実行中またはエラー状態を示し、メモリイメージファイルが2つ保存されている場合、ホストプログラム12はロールバックコマンドを発行し、より新しいイメージファイルをメモリに再ロードする。メモリイメージファイルが1つ保存されている場合、ホストプログラム12はロールバックコマンドを発行しそのイメージファイルをメモリに再ロードする。
どの場合でも、ホストプログラム12はコマンドチャンネル18を再設定し、ドライバプログラム14の実行を再開する。
回復プロトコルは以下のことを保証する。
(1)コミット状態に入る前に障害が発生すると、ロールバックが実行され、最も古い(前準備状態)メモリイメージが使用される。コミット状態中に障害が発生すると、コミット動作は終了して、最新の(後準備状態)メモリイメージが使用される。コミット状態に入った後で障害が発生すると、ロールバックが実行され最新の(後準備状態)メモリイメージが使用される。
(2)ファイルとデータベースもすべて最新のコミット動作までそれらの状態に(たとえば、2相コミットプロトコルにより)回復される。
したがって、システムの状態が回復され、実行は通常通り進む。
エージェント
以下の説明はホストプログラム12に起動される各エージェント24に適用される。用語「ローカルノード」は、特定のエージェント24が実行中のシステムを示すのに使用される。
各エージェント24はアプリケーションを実行するのに必要な実際の動作を実行する。エージェント24の役割は、それが実行中のリモートシステム20でのみ複数の動作を実行することである。これらの動作には遠隔処理手順呼出しの実行、こうした動作のコミットとロールバック、ならびに複数のプロセスの作成と監視が含まれる。エージェント24は、アプリケーションが実行可能な時と方法を制御しているので、アプリケーションとオペレーティングシステムの「間に」あると考えることができる。
遠隔手続き呼出し(RPC)の形で複数のコマンドがドライバプログラム14によりエージェント24にホストプログラム12を介して送られている。好ましい実施例では、RPCコマンドはコマンド識別子とその後に続く一連の引数から構成され、引数はすべてテキスト列である。エージェント24は、RPCコマンド識別子を「RPCハンドラ」にマッピングするテーブルを含む。ハンドラはサブルーチンを呼び出してRPCを実行し、RPCをコミットし、RPCをロールバックするオブジェクトである。したがって、エージェント24は適切なRPCハンドラを探しだして、そのRPCハンドラにRPCの引数を与えることによりRPCを処理する。RPCハンドラルーチンは引数列を解析して、要求された動作を実行する。この後で、RPCハンドラルーチンは応答列を作成し、この応答列はホストプログラム12を介してドライバプログラム14に送り返される。各応答列にはコマンドの成功についての情報と要求された戻りデータが含まれている。好ましい実施例には、以下に説明するように、複数のプロセスを開始するために特殊なRPCが使用されている。
エージェント24が起動すると、それが受信する第1RPCコマンドは開始エージェントコマンドである。このコマンドはエージェント24にアプリケーション用のジョブIDを通知して、ローカルノードに固有の「ノードID」を指定する。次に、エージェント24は「エージェントSDB」と呼ばれる状態データベースを開く。エージェントSDBの名前はジョブIDとノードIDから誘導されるので、アプリケーションを通して固有である。
各エージェント24はホストプログラム12に沿ってアプリケーションの複数の段階を追跡する。ホストプログラム12が準備またはコミット動作を実行するときには、準備ノードとコミットノードRPCコマンドをエージェント24のそれぞれに送ることで実行される。好ましい実施例では、一旦エージェント24がすべて首尾よくそれら固有の準備ノードコマンドに応答すると、ドライバプログラム14はアプリケーション全体が準備完了状態にあるとしか考えられないことになる。同様に、エージェント24がすべてそれらのコミットノードコマンドに首尾よく応答した場合には、アプリケーションは遂行された段階を考慮し次の段階に進むだけである。
各エージェント24は現段階とその状態をエージェントSDBに記録する。4つの定義された状態と可能な状態変化はホストプログラム12と同じであり、通常の場合には、ホストプログラム12のこれらの状態と状態変化に追随する。現段階状態(および現段階番号)は「ノード状態」RPCコマンドによりドライバプログラム14により検索できる。
ドライバプログラム14が閉鎖機能を呼び出すと、閉鎖コマンドが各エージェント24に発行される。各エージェント24は、ローカル段階状態が実行中で実行中のプロセスがないことを検査することで応答して、その関連するエージェントSDBを削除する。
好ましい実施例では、各エージェント24は複数のRPC動作を実行する。これらのRPC動作は段階の一部なので、コミット/ロールバックトランザクションアーキテクチャに応じている。これを実行するには、各エージェント24はそのエージェントSDBを使用する。特に、各段階では、エージェント24はそのエージェントSDBに「CR_LIST」と呼ばれるリストを作成し、各動作毎にデータが入力される。各入力は、周知の方式で、動作を元に戻すのに十分な情報を保持している。このリストは、動作が実行されたのと逆の順序でそれらの動作は元に戻されるよう順序づけられるのが好ましい。
好ましい実施例では、統一するために、RPCすべてが以下の制限に従うようになっている。
(1)RPCがファイル/データベースの状態を変える場合、そのファイル/データベースに加える変更をロールバックするのに必要な情報をそのRPCは保存し、CR_LISTの入力を作成しなければならない。この入力は実行中のRPCコマンドの識別を備えてなければならないので、適切なRPCハンドラはコミット/ロールバック処理中に配置できる。
(2)各RPCハンドラは、(RPCがデータベースまたはファイルへの変更を加えない場合には空白動作となる)準備、コミットおよびロールバック動作を実施する手段を備えてなければならない。
(3)各RPCハンドラはオプションで、各エージェント24のSDBを使用して、用件を充足するのに必要な情報を記憶することができる。
(4)ファイル/データベースの状態に変更を加えないRPCに特殊な動作は不必要である。
好ましい実施例では、アプリケーションプログラムは以下に示す規則に従わなければならない。
(1)プロセスがファイル/データベースを修正する場合、変更をロールバックし準備/コミット/ロールバック動作を実施する手段を備えてなければならない。エージェント24の制御下での複数のプロセスは、エージェントSDBにもアクセスする。たとえば、アプリケーションプログラムはCR_LISTに複数の入力を作成可能である。こうした入力は、適切なコミット/ロールバック動作を実施するRPCコマンド用の識別子を含んでなければならない。しかし、この場合には、RPCは実際には発生しないので、「ダミーRPC」の識別子が入力される。
(2)代りに、ドライバプログラム14は、同じ効果をもつプロセスのために複数のRPCを発行することができる。
エージェント24への開始プロセスコマンドによりエージェント24は特殊なアプリケーションプログラムイメージファイルを実行させて、ローカルノードで「プロセス」を開始する。好ましい実施例では、このコマンドへの引数は以下を供給する。
(1)プログラム用の実行可能イメージファイル
(2)プログラムの引数リスト
(3)プログラムが必要とする任意のオペレーティングシステム環境情報
(4)標準入出力およびエラーチャンネルとして使用されるプロセスに対して開かれるファイルまたはパス名
(5)実行が成功したことを示す、プログラムを終了させる出口状況コード
(6)デバッグモード(デバッギングは以下に記載される)
各エージェント24はその制御下ですべてのプロセスのリストを維持する。プロセスが始まると、これらのプロセスの識別子がこのリストに追加される。
好ましい実施例では、各エージェント24は、ドライバプログラム14に応答して初めてプロセスの終了を待機する。各エージェント24によりプロセスは、そのプロセスの実行を監視しながらエージェント24と同時に実行される。常に、エージェント24はプロセスの「プロセス状態」を知っている。この状態は、好ましい実施例ではPS_RUNNING,PS_ERROR,PS_DEBUGまたはPS_EXITEDの1つである。
PS_RUNNING状態は周知の問題なしにプログラムプロセスが実行中であることを示す。PS_ERROR状態は、プロセスが解決不可能な問題に遭遇したことが判明したことを示し、さらに(1)プロセスがエラー条件(信号またはエラートラップ)を合図するか、(2)障害を示すエラー状況で終了したか、または(3)通常ではない方式で終了したか(たとえば、中止またはオペレータによる手段終了など)を示している。PS_EXITED状態は、プロセスが首尾よく実行を完了し、通常の方式で終了したことを示している。PS_DEBUG状態は以下の「デバッギング」で説明される。
好ましい実施例では、ドライバプログラム14は「ProcState」RPCコマンドを使用してプロセスの状態を尋ねることができる。各エージェント24は、集合プロセス状態も維持し、エージェントが全体として開始するよう指令されたすべてのプロセスの状態を示す。この集合状態は「ノードプロセス状態」と呼ばれ、ノードのコミット/ロールバック状態(実行中、準備完了、コミット中、エラー)から離れている。ノードプロセス状態はこれら4つのプロセス状態と同じであり、以下のように定義される。
(1)任意のプロセスがPS_DEBUG状態にある場合、集合状態はPS_DEBUGである。そうでない場合、
(2)任意のプロセスがPS_ERROR状態にある場合、集合状態がPS_ERRORである。そうでない場合、
(3)任意のプロセスがPS_RUNNING状態にある場合、集合状態はPS_RUNNINGである。そうでない場合、
(4)集合状態はPS_EXITEDである(すべてのプロセスは通常に終了した)。
ノードプロセス状態の遷移はノードのコミット/ロールバック状態に影響を及ぼす。特に、ノードプロセス状態がPS_ERROR状態に遷移する場合、ノードのコミット/ロールバック状態は自動的にエラー状態に遷移する。さらに、プロセス状態がPS_EXITEDの場合には、実行中状態から準備完了状態または準備完了状態からコミット状態への遷移だけが唯一つの規約順守である。
集合プロセス状態はノード状態エージェントコマンドによりドライバプログラム14により検索可能である。
好ましい実施例では、複数のプロセスは標準エラー入出力チャンネルを介してエラーメッセージを発する。たとえば、UNIXでは、これは「stderr」入出力ファイルである。こうした出力はオプションとして、任意のプロセスからエージェント24に経路設定可能であり、「Eread」RPCコマンドを介してドライバプログラム14に利用可能である。
ドライバプログラム14は、1つのノードまたはノードのセットにおいて始まったすべてのプロセスが実行を完了するまで実行を継続できない環境にしばしば入る。この環境に適応するには、エージェント24はドライバプログラム14から「待機」コマンドを指示する。待機コマンドにより、ノードプロセス状態がPS_RUNNING状態を終えるまで(すなわち、状態はPS_DEBUG,PS_ERRORまたはPS_EXITED)エージェント24はその応答を遅延させる。待機コマンドへの応答は、待機状態を終了させる処理を示している。ドライバプログラム14は、待機状態中にエージェント24に「sync」RPCコマンドを送ることで待機状態を取り消すこともできる。介入待機応答が偶然受信されてもされなくてもSync(同期)コマンドは動作する(とういのは、待機応答および同期コマンドがコマンドチャンネル18で交差しているからである)。
プロセスデバッギング
時には、ドライバプログラム14によりユーザがシステムの特定のプロセスをデバッグできるようにすることが有益である。デバッギングは、特定のオペレーティングシステムの元で利用可能な標準デバッガの制御下でのプロセスの実行を必要とする。ユーザは実行の最初からプロセスのデバッグを希望できる。代りに、プロセスがエラー状態に遭遇する場合、すなわち、プロセスがPS_ERRORプロセス状態に遷移するときのみに、ユーザはそのプロセスのデバッグを希望できる。
好ましい実施例では、あるプロセスが(開始プロセスコマンドを用いて)始められる場合、そのプロセスは、DEBUG_NONE,DEBUG_START及びDEBUG_TRACEの3つのデバッグモードの任意のもので実行可能になるように指定できる。DEBUG_NONEデバッグモードのプロセスではデバッガを動作させる必要はない。DEBUG_STARTモードで指定された処理は関連するデバッガにより始めから実行されることになる。DEBUG_TRACEモードで指定された処理はエージェント24により監視され、こうした処理が様々な検出可能エラー状態(エラートラップ、信号または打切りなど)の任意の状態に入る場合、こうした状態は停止され、デバッガは障害プロセスに接続された状態で実行される。
好ましい実施例では、エージェント24はデバッガを自主的に起動しない。代りに、プロセスが(デバッグモードにより指示されたように)デバッギングが必要な場合には、エージェント24はプロセスをPS_DEBUGプロセス状態に遷移する。これにより集合プロセス状態はPS_DEBUGに遷移する。この状態はドライバプログラム14に伝えられる(たとえば、この状態は待機状態を終了させることになる)。この時点で、ドライバプログラム14は「デバッグ」RPCコマンドを用いてプロセス用のデバッガを呼び出すことができる。このコマンドは実行すべきプログラム、おそらくはシェルスクリプトを指定し、選択のデバッガを起動するのに十分な情報が(引数リストを介して)そのプログラムに送られる。
回復
各エージェントは、そのエージェントSDBに記憶されているローカル段階番号と状態を維持する。段階番号は準備/コミットプロトコルを介してホストプログラム12のそれと同期する。段階状態は、プロセス状態から主に誘導され、アプリケーション用の現段階の状態を全体的に計算するためにドライバプログラム14により使用される。
ドライバプログラム14は、障害により再呼出しに失敗すると、ホストプログラム12にジョブを開始するよう伝える。「回復ファイル」が発見されると、ホストプログラム12は「回復モード」に入り、以下のようにエージェント24の状態を回復する。
(1)ホストSDBは、障害時に実行中の一連のエージェント24のプロセスを判定するのに使用される。
(2)新しいエージェント24は各ノードで作成される。
(3)新しいエージェント24には、ジョブIDをもつ「エージェント開始」コマンドが付与される。
(4)エージェントSDBは依然として存在しているから(その名前はジョブIDから誘導される)、エージェント24はこのジョブIDを従来のアプリケーションとして認識する。
(5)各エージェント24はそのログから再構成されたSDBを開き、現段階番号、状態およびコミット−ロールバックリストを抽出する。
(6)ホストプログラム12は、コミット中以外の状態にある場合、エージェント24にロールバックコマンドを送る。このコマンドによりエージェント24はその段階で実行された動作すべてを逆の順序で以前の状態に戻す。他方、ホストプログラム12は、コミット状態にある場合には、エージェント24にコミットコマンドを再発行する。コミット状態にあることが判明しているエージェント24は、コミット−ロールバックリストを準方向に横切り、すべての入力のコミット方法を実行することで明らかに割り込みコミット動作であるものを完了することになる。実行状態にあることが判明しているエージェント24は、コミットコマンドを空コマンドとして処理することになる(というのは、以前のコミット動作が他のノードではまだだがそのノードでは明らかに完了しているからである)。
(7)その時点では、エージェント24は実行状態にあるその段階の開始時にあると考えて、ドライバプログラム14からの複数のコマンドの取出しを開始する。
図4は、本発明の反復実施例の基本機能動作を要約形式で示す流れ図である。ドライバプログラム14はリモートシステム20で複数のプロセスを開始する(ステップ40)。ホストプログラム12は、ドライバプログラム14からのすべての制御コマンドを、ドライバプログラム14へのすべての応答と同様に(ステップ42)、記録する(ステップ41)。各エージェント24は、その各リモートシステム20の各段階でアプリケーションを実行する(ステップ43)。アプリケーションは準備−コミットプロトコルを実行して、システムの一貫性を維持しながらシステムおよびファイルの状態を記憶する(ステップ44)。障害が発生すると、システムの状態が回復され、ドライバプログラム14が再起動し、ホストプログラム12にコマンドを発行する(ステップ45)。ホストプログラム12は各コマンドに対する応答を読み取り、実行されるまで、反復モードでドライバプログラム14に応答を送る(ステップ46)。次いで、ドライバプログラム14は、最後の良好なチェックポイントからアプリケーションプロセスの制御を続ける。
図5は、本発明の回復実施例の基本機能動作を要約形式で示す流れ図である。ドライバプログラム14はリモートシステム20でプロセスを開始する(ステップ50)。各エージェント24は、その各リモートシステム20で各段階のアプリケーションを実行する(ステップ51)。アプリケーションはコミットプロトコルの準備部分を実行して、システムおよびファイルの状態を記憶する(ステップ52)。準備プロトコルが実行されるとドライバメモリ14のメモリイメージが記憶される(ステップ53)。アプリケーションがコミットプロトコルを実行して、システムの一貫性を維持しながらシステムおよびファイル状態の保存を完了する(ステップ54)。障害が発生すると、システムの状態が回復して、ドライバプログラム14の記憶メモリイメージがメモリに再ロードされる(ステップ55)。次いで、ドライバプログラム14は、最後の良好なチェックポイントからアプリケーションプロセスの制御を続ける(ステップ56)。
本発明について多くの実施例が説明されてきた。しかし、本発明の精神と範囲から逸脱することなく様々な修正を加えることが可能なことを理解すべきである。たとえば、本発明はCPUが1つのシステムに適用可能である。さらに、2相コミットプロトコルが好ましいが、システム一貫性を維持しながらシステムの状態を安全に保存する他のコミットプロトコルが使用できる。したがって、本発明は特定の例示実施例によって制限されるものではなく、添付の請求の範囲によってのみ制限されるものであることを理解すべきである。
コンピュータを用いた並列処理における障害からの回復が可能である。
図1は、本発明によるチェックポインティングシステムのソフトウェア構成要素と制御の流れを示す構成図である。 図2Aは、本発明によるチェックポイントされたプログラムの通常の実行を示す構成図である。 図2Bは、図2Aのチェックポイントされたプログラムの実行中の障害を示す構成図である。 図2Cは、図2Bの障害からの回復を示す構成図である。 図3は、本発明による障害からの回復中のチェックポインティングシステムのソフトウェア構成要素と制御の流れを示す構成図である。 図4は、本発明の反復実施例の基本的な機能動作を要約して示す流れ図である。 図5は、本発明の回復実施例の基本的な機能動作を要約して示す流れ図である。
符号の説明
10…ホストシステム、12…ホストプログラム、14…ドライバプログラム、16…データ記憶システム16、18…コマンドチャンネル。

Claims (4)

  1. 並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行する方法であって、(a)並列処理システム内の複数のプロセッサであってそれぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下で、アプリケーションの個々の実行段階を実行する工程と、(b)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を複数のプロセッサ上で実行されるアプリケーションの全ての部分が各実行段階間で停止するように制御する工程と、(c)首尾よく完了した実行段階それぞれの終了状態を保存する工程と、(d)首尾よく完了した前記実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びエージェントプログラムのいずれか一方のデータ構造であって、前記ドライバプログラムおよび各エージェントプログラムのための保存されたプログラム状態であって該プログラム状態に基づいて前記ドライバプログラム及びエージェントプログラムが再作成されるプログラム状態を定義するのに必要なデータ構造を保存する工程と、(e)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する工程と、(f)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する工程と、(g)前記ドライバプログラム及びそれぞれのエージェントプログラムの対応する保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する工程と、(h)障害が検出された実行段階の開始から前記アプリケーションを再開する工程と、を有する方法。
  2. 並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行するコンピュータ装置であって、(a)並列処理システム内の複数のプロセッサであって、それぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下でアプリケーションの個々の実行段階を実行する手段と、(b)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を複数のプロセッサ上で実行されるアプリケーションの全ての部分が各実行段階間で停止するように制御する手段と、(c)首尾よく完了した実行段階それぞれの終了状態を保存する手段と、(d)首尾よく完了した前記実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びエージェントプログラムのいずれか一方のデータ構造であって、前記ドライバプログラムおよび各エージェントプログラムのための保存されたプログラム状態であって該プログラム状態に基づいて前記ドライバプログラム及びエージェントプログラムが再作成されるプログラム状態を定義するのに必要なデータ構造を保存する手段と、(e)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する手段と、(f)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する手段と、(g)前記ドライバプログラム及びそれぞれのエージェントプログラムの保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する手段と、(h)障害が検出された実行段階の開始から前記アプリケーションを再開する手段とを有するコンピュータ装置。
  3. 並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行する方法であって、(a)アプリケーションを個々の実行段階であって、アプリケーションの全てのプロセスが前記実行段階において停止されることが要求される実行段階に分割する工程と、(b)並列処理システム内の複数のプロセッサであってそれぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下で、アプリケーションの個々の実行段階の実行を開始する工程と、(c)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を制御する工程と、(d)首尾よく完了した実行段階それぞれの終了状態を保存する工程と、(e)首尾よく完了した前記実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びエージェントプログラムのいずれか一方のデータ構造であって、前記ドライバプログラムおよび各エージェントプログラムのための保存されたプログラム状態であって該プログラム状態に基づいて前記ドライバプログラム及びエージェントプログラムが再作成されるプログラム状態を定義するのに必要なデータ構造を保存する工程と、(f)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する工程と、(g)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する工程と、(h)前記ドライバプログラム及びそれぞれのエージェントプログラムの対応する保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する工程と、(i)障害が検出された実行段階の開始から前記アプリケーションを再開する工程と、を有する方法。
  4. 並列処理システムにおいて事前プログラム式チェックポインティング機能を備えてないコンピュータアプリケーションを実行するコンピュータ装置であって、(a)アプリケーションを個々の実行段階であって、アプリケーションの全てのプロセスが前記実行段階において停止されることが要求される実行段階に分割する手段と、(b)並列処理システム内の複数のプロセッサであって、それぞれのプロセッサが前記アプリケーションの一部を実行する対応するエージェントプログラムの制御の下でアプリケーションの個々の実行段階の実行を開始する手段と、(c)ドライバプログラムの制御に基づく前記エージェントプログラムにより前記アプリケーションの各実行段階の処理を制御する手段と、(d)首尾よく完了した実行段階それぞれの終了状態を保存する手段と、(e)首尾よく完了した前記実行段階それぞれの終了時において、少なくとも前記ドライバプログラム及びエージェントプログラムのいずれか一方のデータ構造であって、前記ドライバプログラムおよび各エージェントプログラムのための保存されたプログラム状態であって該プログラム状態に基づいて前記ドライバプログラム及びエージェントプログラムが再作成されるプログラム状態を定義するのに必要なデータ構造を保存する手段と、(f)こうした実行段階の任意の段階での前記アプリケーションの障害を検出する手段と、(g)障害が検出された実行段階の前の実行段階の最後に保存された終了状態を回復する手段と、(h)前記ドライバプログラム及びそれぞれのエージェントプログラムの保存データ構造をメモリに再ロードすることで、障害が検出された実行段階の前の実行段階の終わりまで前記ドライバプログラム及びそれぞれのエージェントプログラムを回復する手段と、(i)障害が検出された実行段階の開始から前記アプリケーションを再開する手段とを有するコンピュータ装置。
JP2003349169A 1995-12-11 2003-10-08 計算の状態を再構成する方法ならびにシステム Expired - Lifetime JP3675802B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/570,724 US5712971A (en) 1995-12-11 1995-12-11 Methods and systems for reconstructing the state of a computation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP52221797A Division JP3573463B2 (ja) 1995-12-11 1996-12-11 計算の状態を再構成する方法ならびにシステム

Publications (2)

Publication Number Publication Date
JP2004094963A JP2004094963A (ja) 2004-03-25
JP3675802B2 true JP3675802B2 (ja) 2005-07-27

Family

ID=24280795

Family Applications (2)

Application Number Title Priority Date Filing Date
JP52221797A Expired - Lifetime JP3573463B2 (ja) 1995-12-11 1996-12-11 計算の状態を再構成する方法ならびにシステム
JP2003349169A Expired - Lifetime JP3675802B2 (ja) 1995-12-11 2003-10-08 計算の状態を再構成する方法ならびにシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP52221797A Expired - Lifetime JP3573463B2 (ja) 1995-12-11 1996-12-11 計算の状態を再構成する方法ならびにシステム

Country Status (11)

Country Link
US (1) US5712971A (ja)
EP (1) EP0954779B8 (ja)
JP (2) JP3573463B2 (ja)
AT (1) ATE423351T1 (ja)
AU (1) AU1288897A (ja)
CA (1) CA2240347C (ja)
DE (1) DE69637836D1 (ja)
DK (1) DK0954779T3 (ja)
ES (1) ES2320601T3 (ja)
PT (1) PT954779E (ja)
WO (1) WO1997022052A1 (ja)

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931954A (en) * 1996-01-31 1999-08-03 Kabushiki Kaisha Toshiba I/O control apparatus having check recovery function
GB2311391A (en) * 1996-03-19 1997-09-24 Ibm Restart and recovery of OMG compliant transaction systems
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6324567B2 (en) * 1997-06-11 2001-11-27 Oracle Corporation Method and apparatus for providing multiple commands to a server
AU8674098A (en) * 1997-07-31 1999-02-22 Data Net Corporation Method and apparatus for implementing software connectivity for client/server applications
US6009258A (en) * 1997-09-26 1999-12-28 Symantec Corporation Methods and devices for unwinding stack of frozen program and for restarting the program from unwound state
US5911060A (en) * 1997-09-26 1999-06-08 Symantec Corporation Computer method and apparatus for unfreezing an apparently frozen application program being executed under control of an operating system
US6029177A (en) * 1997-11-13 2000-02-22 Electronic Data Systems Corporation Method and system for maintaining the integrity of a database providing persistent storage for objects
JPH11282684A (ja) * 1998-03-27 1999-10-15 Canon Inc 画像処理装置、画像処理装置の制御方法、および記憶媒体
US6477663B1 (en) 1998-04-09 2002-11-05 Compaq Computer Corporation Method and apparatus for providing process pair protection for complex applications
US6175932B1 (en) * 1998-04-20 2001-01-16 National Instruments Corporation System and method for providing state capture and restoration to an I/O system
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6397351B1 (en) 1998-09-28 2002-05-28 International Business Machines Corporation Method and apparatus for rapid data restoration including on-demand output of sorted logged changes
US6226759B1 (en) 1998-09-28 2001-05-01 International Business Machines Corporation Method and apparatus for immediate data backup by duplicating pointers and freezing pointer/data counterparts
US6256751B1 (en) * 1998-10-29 2001-07-03 International Business Machines Corporation Restoring checkpointed processes without restoring attributes of external data referenced by the processes
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6338147B1 (en) 1998-10-29 2002-01-08 International Business Machines Corporation Program products for performing checkpoint/restart of a parallel program
US6393583B1 (en) 1998-10-29 2002-05-21 International Business Machines Corporation Method of performing checkpoint/restart of a parallel program
WO2000036506A1 (en) 1998-12-16 2000-06-22 Kent Ridge Digital Labs Process oriented computing environment
US7047232B1 (en) * 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム
US6662310B2 (en) 1999-11-10 2003-12-09 Symantec Corporation Methods for automatically locating url-containing or other data-containing windows in frozen browser or other application program, saving contents, and relaunching application program with link to saved data
US6630946B2 (en) 1999-11-10 2003-10-07 Symantec Corporation Methods for automatically locating data-containing windows in frozen applications program and saving contents
US6631480B2 (en) 1999-11-10 2003-10-07 Symantec Corporation Methods and systems for protecting data from potential corruption by a crashed computer program
US6584581B1 (en) * 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
US6678701B1 (en) 2000-01-05 2004-01-13 International Business Machines Corporation Technique for establishing a point of consistency in a parallel database loading system
EP1128266A3 (en) * 2000-02-22 2004-02-25 Orsus Solutions Limited Cooperative software application architecture
TW525329B (en) * 2000-05-29 2003-03-21 Omron Tateisi Electronics Co Power supply module and power supply unit using the same
US6944790B2 (en) * 2001-04-05 2005-09-13 International Business Machines Corporation System and method for collecting and restoring user environment data using removable storage
US8234156B2 (en) * 2001-06-28 2012-07-31 Jpmorgan Chase Bank, N.A. System and method for characterizing and selecting technology transition options
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
KR20030056540A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 데이터베이스 관리 시스템에서 시스템 고장에 대비한 파일삭제 및 회복 방법
US7168008B2 (en) * 2002-01-18 2007-01-23 Mobitv, Inc. Method and system for isolating and protecting software components
US6880051B2 (en) * 2002-03-14 2005-04-12 International Business Machines Corporation Method, system, and program for maintaining backup copies of files in a backup storage device
GB0211179D0 (en) * 2002-05-16 2002-06-26 Ibm A method,apparatus and computer program for reducing the amount of data checkpointed
US7024591B2 (en) * 2002-07-12 2006-04-04 Crossroads Systems, Inc. Mechanism for enabling enhanced fibre channel error recovery across redundant paths using SCSI level commands
US20040083158A1 (en) * 2002-10-09 2004-04-29 Mark Addison Systems and methods for distributing pricing data for complex derivative securities
US7167850B2 (en) * 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7340650B2 (en) * 2002-10-30 2008-03-04 Jp Morgan Chase & Co. Method to measure stored procedure execution statistics
US7149752B2 (en) * 2002-12-03 2006-12-12 Jp Morgan Chase Bank Method for simplifying databinding in application programs
US7085759B2 (en) 2002-12-06 2006-08-01 Jpmorgan Chase Bank System and method for communicating data to a process
US8032439B2 (en) * 2003-01-07 2011-10-04 Jpmorgan Chase Bank, N.A. System and method for process scheduling
US7401156B2 (en) * 2003-02-03 2008-07-15 Jp Morgan Chase Bank Method using control interface to suspend software network environment running on network devices for loading and executing another software network environment
US7484087B2 (en) * 2003-02-24 2009-01-27 Jp Morgan Chase Bank Systems, methods, and software for preventing redundant processing of transmissions sent to a remote host computer
JP4345334B2 (ja) * 2003-03-28 2009-10-14 日本電気株式会社 耐障害計算機システム、プログラム並列実行方法およびプログラム
US7379998B2 (en) * 2003-03-31 2008-05-27 Jp Morgan Chase Bank System and method for multi-platform queue queries
US20040230602A1 (en) * 2003-05-14 2004-11-18 Andrew Doddington System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system
US7366722B2 (en) * 2003-05-15 2008-04-29 Jp Morgan Chase Bank System and method for specifying application services and distributing them across multiple processors using XML
US7509641B2 (en) * 2003-05-16 2009-03-24 Jp Morgan Chase Bank Job processing framework
US7634500B1 (en) 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
WO2005050404A2 (en) * 2003-11-17 2005-06-02 Virginia Tech Intellectual Properties, Inc. Transparent checkpointing and process migration in a distributed system
US7281023B2 (en) * 2003-12-15 2007-10-09 At&T Knowledge Ventures, L.P. Architecture of database application with robust online recoverability
US20050144174A1 (en) * 2003-12-31 2005-06-30 Leonid Pesenson Framework for providing remote processing of a graphical user interface
US8689185B1 (en) * 2004-01-27 2014-04-01 United Services Automobile Association (Usaa) System and method for processing electronic data
US7366801B2 (en) * 2004-01-30 2008-04-29 International Business Machines Corporation Method for buffering work requests
US8140348B2 (en) * 2004-01-30 2012-03-20 International Business Machines Corporation Method, system, and program for facilitating flow control
US7650606B2 (en) * 2004-01-30 2010-01-19 International Business Machines Corporation System recovery
US7702767B2 (en) * 2004-03-09 2010-04-20 Jp Morgan Chase Bank User connectivity process management system
US20050222990A1 (en) * 2004-04-06 2005-10-06 Milne Kenneth T Methods and systems for using script files to obtain, format and disseminate database information
US9734222B1 (en) 2004-04-06 2017-08-15 Jpmorgan Chase Bank, N.A. Methods and systems for using script files to obtain, format and transport data
AU2005234798B2 (en) * 2004-04-26 2009-01-08 Jp Morgan Chase Bank System and method for routing messages
US7665127B1 (en) 2004-06-30 2010-02-16 Jp Morgan Chase Bank System and method for providing access to protected services
US7386752B1 (en) 2004-06-30 2008-06-10 Symantec Operating Corporation Using asset dependencies to identify the recovery set and optionally automate and/or optimize the recovery
US7392471B1 (en) 2004-07-28 2008-06-24 Jp Morgan Chase Bank System and method for comparing extensible markup language (XML) documents
US20060085492A1 (en) * 2004-10-14 2006-04-20 Singh Arun K System and method for modifying process navigation
FR2882448B1 (fr) * 2005-01-21 2007-05-04 Meiosys Soc Par Actions Simpli Procede de gestion, de journalisation ou de rejeu du deroulement d'un processus applicatif
US7478278B2 (en) * 2005-04-14 2009-01-13 International Business Machines Corporation Template based parallel checkpointing in a massively parallel computer system
EP1899902B1 (en) * 2005-05-30 2011-12-28 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and driving method thereof
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US8572516B1 (en) 2005-08-24 2013-10-29 Jpmorgan Chase Bank, N.A. System and method for controlling a screen saver
US7636946B2 (en) * 2005-08-31 2009-12-22 Microsoft Corporation Unwanted file modification and transactions
US7353332B2 (en) * 2005-10-11 2008-04-01 Integrated Device Technology, Inc. Switching circuit implementing variable string matching
US7499933B1 (en) 2005-11-12 2009-03-03 Jpmorgan Chase Bank, N.A. System and method for managing enterprise application configuration
US8181016B1 (en) 2005-12-01 2012-05-15 Jpmorgan Chase Bank, N.A. Applications access re-certification system
KR100833681B1 (ko) 2005-12-08 2008-05-29 한국전자통신연구원 커밋 프로토콜을 이용한 병행 프로세스 메모리 관리 시스템및 관리 방법
US7716461B2 (en) * 2006-01-12 2010-05-11 Microsoft Corporation Capturing and restoring application state after unexpected application shutdown
US7574591B2 (en) * 2006-01-12 2009-08-11 Microsoft Corporation Capturing and restoring application state after unexpected application shutdown
US7913249B1 (en) 2006-03-07 2011-03-22 Jpmorgan Chase Bank, N.A. Software installation checker
US7895565B1 (en) 2006-03-15 2011-02-22 Jp Morgan Chase Bank, N.A. Integrated system and method for validating the functionality and performance of software applications
US7571347B2 (en) * 2006-03-20 2009-08-04 Sun Microsystems, Inc. Method and apparatus for providing fault-tolerance in parallel-processing systems
US20070276879A1 (en) * 2006-05-26 2007-11-29 Rothman Michael A Sparse checkpoint and rollback
US7610172B2 (en) * 2006-06-16 2009-10-27 Jpmorgan Chase Bank, N.A. Method and system for monitoring non-occurring events
EP1873643A1 (en) * 2006-06-30 2008-01-02 Alcatel Lucent Service objects with rollback-recovery
CN101501678B (zh) 2006-08-10 2013-10-16 起元科技有限公司 在基于图的计算中分配服务
US7644080B2 (en) * 2006-09-19 2010-01-05 Netlogic Microsystems, Inc. Method and apparatus for managing multiple data flows in a content search system
US7783654B1 (en) 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7529746B2 (en) * 2006-09-19 2009-05-05 Netlogic Microsystems, Inc. Search circuit having individually selectable search engines
US7539032B2 (en) * 2006-09-19 2009-05-26 Netlogic Microsystems, Inc. Regular expression searching of packet contents using dedicated search circuits
US7624105B2 (en) * 2006-09-19 2009-11-24 Netlogic Microsystems, Inc. Search engine having multiple co-processors for performing inexact pattern search operations
US7539031B2 (en) * 2006-09-19 2009-05-26 Netlogic Microsystems, Inc. Inexact pattern searching using bitmap contained in a bitcheck command
US7636717B1 (en) 2007-01-18 2009-12-22 Netlogic Microsystems, Inc. Method and apparatus for optimizing string search operations
WO2008092162A2 (en) 2007-01-26 2008-07-31 The Trustees Of Columbia University In The City Of New York Systems, methods, and media for recovering an application from a fault or attack
US7630982B2 (en) 2007-02-24 2009-12-08 Trend Micro Incorporated Fast identification of complex strings in a data stream
JP5251002B2 (ja) * 2007-05-25 2013-07-31 富士通株式会社 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム
JP5520219B2 (ja) 2007-07-26 2014-06-11 アビニシオ テクノロジー エルエルシー エラーハンドリングをもつトランザクションのグラフ型計算
US7643353B1 (en) * 2007-10-25 2010-01-05 Netlogic Microsystems, Inc. Content addressable memory having programmable interconnect structure
US8776018B2 (en) 2008-01-11 2014-07-08 International Business Machines Corporation System and method for restartable provisioning of software components
EP2271987A4 (en) * 2008-05-01 2011-04-20 Hewlett Packard Development Co STORING CONTROL POINT DATA IN NON-VOLATILE MEMORY
US20090282042A1 (en) * 2008-05-12 2009-11-12 Expressor Software Method and system for managing the development of data integration projects to facilitate project development and analysis thereof
US7924589B1 (en) 2008-06-03 2011-04-12 Netlogic Microsystems, Inc. Row redundancy for content addressable memory having programmable interconnect structure
US8291261B2 (en) * 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
JP2010165251A (ja) 2009-01-16 2010-07-29 Toshiba Corp 情報処理装置及びプロセッサ並びに情報処理方法
EP2396724A4 (en) * 2009-02-13 2012-12-12 Ab Initio Technology Llc TASK EXECUTION MANAGEMENT
US7924590B1 (en) 2009-08-10 2011-04-12 Netlogic Microsystems, Inc. Compiling regular expressions for programmable content addressable memory devices
US7916510B1 (en) 2009-08-10 2011-03-29 Netlogic Microsystems, Inc. Reformulating regular expressions into architecture-dependent bit groups
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
CN102263652A (zh) * 2010-05-31 2011-11-30 鸿富锦精密工业(深圳)有限公司 网络装置及更改其参数设定的方法
KR101687213B1 (ko) 2010-06-15 2016-12-16 아브 이니티오 테크놀로지 엘엘시 동적으로 로딩하는 그래프 기반 계산
US8527488B1 (en) 2010-07-08 2013-09-03 Netlogic Microsystems, Inc. Negative regular expression search operations
US9002946B2 (en) * 2010-08-25 2015-04-07 Autodesk, Inc. Dual modeling environment in which commands are executed concurrently and independently on both a light weight version of a proxy module on a client and a precise version of the proxy module on a server
US8862603B1 (en) 2010-11-03 2014-10-14 Netlogic Microsystems, Inc. Minimizing state lists for non-deterministic finite state automatons
US9116759B2 (en) 2011-02-18 2015-08-25 Ab Initio Technology Llc Restarting data processing systems
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9135124B2 (en) * 2012-04-30 2015-09-15 Hewlett-Packard Development Company, L.P. Sequence indicator for command communicated to a sequential access storage device
US9317467B2 (en) 2012-09-27 2016-04-19 Hewlett Packard Enterprise Development Lp Session key associated with communication path
WO2014056145A1 (zh) * 2012-10-09 2014-04-17 华为技术有限公司 使Web应用获取数据库变化的方法和系统
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9720655B1 (en) 2013-02-01 2017-08-01 Jpmorgan Chase Bank, N.A. User interface event orchestration
US10002041B1 (en) 2013-02-01 2018-06-19 Jpmorgan Chase Bank, N.A. System and method for maintaining the health of a machine
US9088459B1 (en) 2013-02-22 2015-07-21 Jpmorgan Chase Bank, N.A. Breadth-first resource allocation system and methods
US9619410B1 (en) 2013-10-03 2017-04-11 Jpmorgan Chase Bank, N.A. Systems and methods for packet switching
CA2926935C (en) 2013-10-21 2022-05-31 Ab Initio Technology Llc Checkpointing a collection of data units
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
CA2929716C (en) 2013-12-06 2021-08-31 Ab Initio Technology Llc Source code translation
US9542259B1 (en) 2013-12-23 2017-01-10 Jpmorgan Chase Bank, N.A. Automated incident resolution system and method
US9868054B1 (en) 2014-02-10 2018-01-16 Jpmorgan Chase Bank, N.A. Dynamic game deployment
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
AU2016377516B2 (en) 2015-12-21 2020-01-30 Ab Initio Technology Llc Sub-graph interface generation
CA3009359C (en) 2016-01-14 2020-09-15 Ab Initio Technology Llc Recoverable stream processing
JP6665892B2 (ja) * 2018-07-04 2020-03-13 富士通株式会社 情報処理システム,情報処理装置および制御プログラム
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11847027B2 (en) 2022-03-15 2023-12-19 Microsoft Technology Licensing, Llc Automated configuration conflict resolution and lightweight restoration

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
US4665520A (en) * 1985-02-01 1987-05-12 International Business Machines Corporation Optimistic recovery in a distributed processing system
US4703481A (en) * 1985-08-16 1987-10-27 Hewlett-Packard Company Method and apparatus for fault recovery within a computing system
US5121486A (en) * 1987-11-20 1992-06-09 Hitachi, Ltd Network control system for dynamically switching a logical connection between an identified terminal device and an indicated processing unit
US5313584A (en) * 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
US5335343A (en) * 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US5435003A (en) * 1993-10-07 1995-07-18 British Telecommunications Public Limited Company Restoration in communications networks
US5530802A (en) * 1994-06-22 1996-06-25 At&T Corp. Input sequence reordering method for software failure recovery
US5440726A (en) * 1994-06-22 1995-08-08 At&T Corp. Progressive retry method and apparatus having reusable software modules for software failure recovery in multi-process message-passing applications
US5590277A (en) * 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications

Also Published As

Publication number Publication date
DK0954779T3 (da) 2009-04-06
WO1997022052A1 (en) 1997-06-19
EP0954779B8 (en) 2009-04-22
EP0954779A1 (en) 1999-11-10
EP0954779B1 (en) 2009-02-18
DE69637836D1 (en) 2009-04-02
JP3573463B2 (ja) 2004-10-06
CA2240347A1 (en) 1997-06-19
US5712971A (en) 1998-01-27
JP2002505768A (ja) 2002-02-19
PT954779E (pt) 2009-04-28
AU1288897A (en) 1997-07-03
JP2004094963A (ja) 2004-03-25
ATE423351T1 (de) 2009-03-15
ES2320601T3 (es) 2009-05-25
EP0954779A4 (en) 2007-05-09
CA2240347C (en) 2001-07-10

Similar Documents

Publication Publication Date Title
JP3675802B2 (ja) 計算の状態を再構成する方法ならびにシステム
US7516361B2 (en) Method for automatic checkpoint of system and application software
US9323550B2 (en) Mechanism for providing virtual machines for use by multiple users
US4648031A (en) Method and apparatus for restarting a computing system
US6795966B1 (en) Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US5802267A (en) Method for checkpointing in computer system under distributed processing environment
US5333314A (en) Distributed data base system of composite subsystem type, and method of fault recovery for the system
JP3145236B2 (ja) フォールトトレラントコンピューティング装置
US5968185A (en) Transparent fault tolerant computer system
US6393583B1 (en) Method of performing checkpoint/restart of a parallel program
GB2273180A (en) Database backup and recovery.
JPH06332778A (ja) トランザクション管理方法
JPH0773087A (ja) データ処理システムにおけるファイル状態の回復方法
KR20110086690A (ko) 저장 장치에 데이터 쓰기를 실행하는 방법 및 시스템
JPH05210555A (ja) ゼロ時間データ・バックアップ・コピーの方法及び装置
GB2301910A (en) Management of records on a computer system recovery log
JP3809858B2 (ja) 分散トランザクションの効率的同期点処理を実現する方法、システム、及びプログラム・プロダクト
US6256751B1 (en) Restoring checkpointed processes without restoring attributes of external data referenced by the processes
US6092084A (en) One system of a multisystem environment taking over log entries owned by another system
US6076095A (en) Method of one system of a multisystem environment taking over log entries owned by another system
Weiler et al. Speed Log: A Generic Log Service Supporting Efficient Node-Crash Recovery
JPH06214848A (ja) データベース管理システム
JP2909128B2 (ja) 起動処理の引き継ぎ処理装置
JP2569063B2 (ja) 複合サブシステム形オンラインシステムの障害回復方法
JPS6362007B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20031211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040601

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040827

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040910

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: 20050405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050426

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: 20090513

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090513

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100513

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110513

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120513

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120513

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130513

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 9

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

EXPY Cancellation because of completion of term