JP3708891B2 - フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム - Google Patents
フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム Download PDFInfo
- Publication number
- JP3708891B2 JP3708891B2 JP2002084321A JP2002084321A JP3708891B2 JP 3708891 B2 JP3708891 B2 JP 3708891B2 JP 2002084321 A JP2002084321 A JP 2002084321A JP 2002084321 A JP2002084321 A JP 2002084321A JP 3708891 B2 JP3708891 B2 JP 3708891B2
- Authority
- JP
- Japan
- Prior art keywords
- backup
- backup process
- state
- pair
- primary
- 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
Links
Images
Landscapes
- Retry When Errors Occur (AREA)
- Hardware Redundancy (AREA)
Description
【発明の属する技術分野】
本発明は、プロセスを実行している計算機に障害が発生した場合でも、他の計算機を利用して当該プロセスを継続して実行することを可能にするフォールトトレラント技術に係り、特にその技術をCADやシミュレーション等の科学技術計算プログラムに適用する場合に好適な、フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステムに関する。
【0002】
【従来の技術】
プロセスを実行している計算機に障害が発生した場合でも、他の計算機を利用して当該プロセスを継続して実行することを可能にするフォールトトレラント技術の代表的な手法としてプロセスペア方式が知られている。
【0003】
プロセスペア方式とは、プロセスをプライマリプロセスとバックアッププロセスの2つで構成し、両プロセスを異なる計算機上に配置する手法である。従来、このプロセスペア方式には以下に述べる第1及び第2の方式が存在する。
【0004】
(1)第1の方式
第1の方式は、文献「”The Process Group Approach to Reliable Distributed Computing,” K.Birman, Technical Report, Computer Science Department, Cornel University, July 1991」(以下、第1の文献と称する)に記載されている。
【0005】
この第1の文献では、プロセスペアはプロセスグループと呼ばれ、2個以上のプロセスによる処理の多重化を行っている。ここではプロセス数を2個に限定したプロセスペア方式の一形態として、第1の方式と称するものとする。
【0006】
図9は第1の方式を説明するための図である。
図9に示されるように、第1の方式では、1つのプロセスはプライマリプロセスとバックアッププロセスからなるプロセスペア91として構成される。プロセスペア91が他のプロセスペア92と通信を行う際には、プロセスペア間通信93〜96等が行われる。プロセスペア間通信では、送信側プライマリプロセスと送信側バックアッププロセスから、受信側プライマリプロセスと受信側バックアッププロセスに、メッセージを一貫性を保った状態で送受信する機能を提供する。
【0007】
なお、メッセージを一貫性を保った状態で送受信するという意味は、プライマリプロセスとバックアッププロセスが共に、メッセージを1つのみ送信または受信するということである。逆に言えば、プライマリプロセスのみメッセージを受信して、バックアッププロセスがメッセージを受信していない等の状態にならないことを示す。
【0008】
第1の方式では、図9中のfault1、或いはfault2で示される時点で、プライマリプロセスが実行されている計算機に障害が発生しても、他の計算機で実行されているバックアッププロセスが処理を継続し、プライマリプロセスの役割を代替する。これにより、プロセスペア91としては処理を継続することができる。
【0009】
図9に示した第1の方式では、全く同じ処理を2つのプロセス(プライマリプロセス及びバックアッププロセス)で実行するため、CPUリソースを2倍必要とする。
【0010】
(2)第2の方式
第2の方式は、文献「”フォールト・トレラント・システム”、グレイ他著、渡辺榮一編訳、マグロウヒル出版」(以下、第2の文献と称する)に記載されている。この第2の文献では、プロセスペアは、そのままプロセスペアと呼ばれている。
【0011】
図10は第2の方式を説明するための図である。
図10に示されるように、第2の方式では、1つのプロセスはプライマリプロセスとバックアッププロセスからなるプロセスペア101として構成される。プロセスペア101が他のプロセスペア102と通信を行う際には、プロセスペア間通信が行われる。
【0012】
プロセスペア間通信では、送信側プライマリプロセスと送信側バックアッププロセスから、受信側プライマリプロセスと受信側バックアッププロセスに、メッセージを一貫性を保った状態で送受信する機能を提供する。
【0013】
上記第1の方式では、バックアッププロセスも、プライマリプロセスと同じ処理を実行している。しかし、第2の方式では、バックアッププロセスは、プロセスとしては存在するが実際の処理は実行しないで、チェックポイント採取時(ckp1,ckp2,ckp3,ckp4)に、プライマリプロセスの状態をバックアッププロセスにコピーする。
【0014】
第2の方式では、図10中のfault1、或いはfault2で示される時点で、プライマリプロセスが実行されている計算機に障害が発生した場合、他の計算機上のバックアッププロセスが、各々restart1、或いはrestart2で示される最後に採取されたチェックポイントの時点から処理を再開し、プライマリプロセスの役割を代替する。このため、プロセスペアとしては処理を継続することができる。
【0015】
第2の方式では、上記第1の方式とは異なって、全く同じ処理をプライマリプロセス及びバックアッププロセスの2つのプロセスで実行するわけではない。このため第2の方式では、CPUリソースを2倍必要とするということはない。
【0016】
【発明が解決しようとする課題】
上記した、プロセスペア方式と呼ばれる従来のフォールトトレラント技術、例えば第1の方式では、プライマリプロセスが実行されている計算機に障害が発生しても、他の計算機で実行されているバックアッププロセスが処理を継続し、プライマリプロセスの役割を代替することで、プロセスペアとしては処理を継続することができる。ところが、第1の方式では、全く同じ処理を2つのプロセス(プライマリプロセス及びバックアッププロセス)で実行するため、CPUリソースを2倍必要とするという問題がある。
【0017】
これに対し、上記第2の方式では、第1の方式とは異なって、全く同じ処理を2つのプロセスで実行するわけではなく、したがってCPUリソースを2倍必要とせずに済む。ところが第2の方式には、以下に述べる別の問題がある。
【0018】
まず、第2の方式では、実際には実行していないバックアッププロセス、つまりプライマリプロセス側で障害が発生しない限り定常的に停止状態にあるバックアッププロセスを、チェックポイント採取時から再開するために、プライマリプロセスの状態をバックアッププロセスにコピーする。アドレス空間やコンテクストは、これで問題ない。
【0019】
しかしながら第2の方式は、バックアッププロセスが定常的に停止状態にあることから、単にプライマリプロセスの状態をバックアッププロセスにコピーするだけでは、システムコールの実行によって、OS(オペレーティングシステム)から受けているサービスの状態を復元できない。このOSから受けているサービスの状態とは、例えば、どのファイルを、どのディスクリプタでオープンしているか、そのシークポインタ等の状態である。そこで、第2の方式では、このようなOSから受けているサービスの状態を、保存・復元できるような機能を持った独自のOSを採用している。
【0020】
このため、第2の方式では、産業界で広く利用されているオープンシステムを利用することができず、全てのアプリケーションを独自に開発する必要があり、生産性が低くなるという問題がある。
【0021】
本発明は上記事情を考慮してなされたものでその目的は、障害発生時にも処理を継続することを可能としながら、CPUリソースを2倍必要とせずに済み、且つオープンシステムを利用できるフォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステムを提供することにある。
【0022】
【課題を解決するための手段】
本発明の1つの観点によれば、障害発生時にも処理を継続することが可能な、プライマリプロセスとバックアッププロセスから構成されるプロセスペアが実行されるフォールトトレラントシステムにおけるプロセスペア実行制御方法が提供される。このプロセスペア実行制御方法は、プロセスペアの起動時にはプライマリプロセス及びバックアッププロセスを共に実行状態にするステップと、チェックポイント採取時期が到来する毎に、プライマリプロセスの状態をバックアッププロセスにコピーするステップと、チェックポイント採取時にバックアッププロセスが実行状態にあるならば、当該バックアッププロセスを停止状態にするステップと、プロセスペアからシステムコールが発行された場合に、バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイント(最後のチェックポイント)から再開させて実行状態にするステップとから構成される。
【0023】
本発明の第1の観点に係るプロセスペア実行制御方法においては、プログラム(プロセスペア)の起動直後の期間は、プライマリプロセス及びバックアッププロセスが共に実行状態となって動作する。このため両プロセスは、OSからのサービス提供を受けている状態となる。その後は、最初のチェックポイント採取時期の到来によりバックアッププロセスが停止状態となり、バックアッププロセス側でのCPUリソースの消費が抑えられる。また、バックアッププロセスが停止状態にあるときにシステムコールが発行されると、バックアッププロセスは最後のチェックポイントから処理を再開する。つまり、バックアッププロセスも実行状態となって動作し、プライマリプロセス及びバックアッププロセスは再びOSからのサービス提供を受けている状態となる。
【0024】
このように、本発明の第1の観点に係るプロセスペア実行制御方法において、バックアッププロセスは、従来の技術の欄で述べた第2の方式と異なって、プログラムの起動直後の期間と、その後バックアッププロセスが停止状態にあるときにシステムコールが発行された場合には実行状態となる。一方、プライマリプロセスは上記第2の方式と同様に、障害が発生しない限りはプログラムが終了するまで実行状態にある。つまり、第1の観点に係るプロセスペア実行制御方法では、従来の技術の欄で述べた第1の方式と異なって、プライマリプロセス及びバックアッププロセスが全く同じ処理を常に実行するわけでもなく、また第2の方式と異なって、バックアッププロセスが定常的に停止状態にあるわけでもなく、両プロセスが共に実行状態にある期間が存在する。この期間中、両プロセスはOSからのサービス提供を受けている状態となる。
【0025】
このため、本発明の第1の観点に係るプロセスペア実行制御方法においては、上記第2の方式のように、OSから受けているサービスの状態を、保存・復元できるような機能を持った独自のOSを採用する必要がなく、産業界で広く利用されているオープンシステムを利用することが可能となる。また、バックアッププロセスが停止状態にある期間が存在するため、CPUリソースを2倍必要とせずに済む。また、本発明の第1の観点に係るプロセスペア実行制御方法は、以下の理由により、CADやシミュレーション等の科学技術計算プログラムに特に適している。即ち、この種の科学技術計算プログラムでは、最初にシステムコールの発行を伴う入力データの読み出し等を行い、その後はシステムコールを発行せずに、CPU演算を繰り返すことが多く、しかもCPU演算が行われる期間は、システムコールの発行を伴う期間に比べて著しく長い。このため、上記第1の観点に係るプロセスペア実行制御方法において、プログラムの起動直後と、それ以降はシステムコールの発行を伴う期間だけプライマリプロセス及びバックアッププロセスを共に実行状態にし、それ以外の長時間行われるCPU演算の期間はバックアッププロセスを停止状態にすることにより、CPUリソースがバックアッププロセスの実行に用いられる時間を大幅に短縮すると共に、汎用的なOSを使用しても当該OSから受けているサービスの状態を保存・復元するのを可能とする。
【0026】
ここで、プライマリプロセス側での障害発生時に、バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイントから再開させて実行状態にするステップを追加するならば、たとえバックアッププロセスが停止状態にある期間にプライマリプロセス側で障害が発生しても、バックアッププロセスにより処理を継続することが可能となる。
【0027】
また、バックアッププロセスを停止状態から実行状態に切り換えることが必要となる直前のタイミング、例えばプライマリプロセスからシステムコールが発行される直前のタイミングにチェックポイント採取時期(第1のチェックポイント採取時期)を設定するステップを追加するならば、その後プライマリプロセスから実際にシステムコールが発行されてバックアッププロセスを再開した場合に、その再開後の処理に要する時間を短縮できる。
【0028】
また、バックアッププロセスを実行状態に維持しておく必要がなくなる直後のタイミングにチェックポイント採取時期(第2のチェックポイント採取時期)を設定するステップを追加するならば、バックアッププロセスが実行状態にある期間を必要最小限に抑えて、バックアッププロセスの実行に必要なCPUリソースが余分に使用されるのを防ぐことができる。
【0029】
また、上記第1のチェックポイント採取時期から次の上記第2のチェックポイント採取時期のまでの期間を除く、バックアッププロセスが停止状態にある期間、予め定められた時間間隔でチェックポイント採取時期(第3のチェックポイント採取時期)を設定するステップを追加するなら、プライマリプロセス及びバックアッププロセスが共に実行状態にある期間にチェックポイント採取動作が行われて、その都度バックアッププロセスが停止されて、その後のプライマリプロセスでのシステムコールにより当該バックアッププロセスが最後のチェックポイントから再開されるという、処理を遅延させる無駄な動作が発生するのを防止できる。これにより、処理効率の向上と、チェックポイントの効率的な採取とが可能となる。
【0030】
なお、以上のプロセスペア実行制御方法に係る本発明は、当該方法を構成する各ステップを計算機に実行させるためのプログラム(プロセスペア実行制御プログラム)に係る発明としても、当該方法を実行するフォールトトレラントシステムに係る発明としても成立する。
【0031】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【0032】
図1は本発明の一実施形態に係るフォールトトレラントシステムの構成を示すブロック図である。
図1において、計算機1a及び1bは、ネットワーク2により相互接続されている。計算機1a(の図示せぬ記憶装置)上にはプライマリプロセス11が配置され、計算機1b上(の図示せぬ記憶装置)にはバックアッププロセス12が配置されている。つまり計算機1a及び1bの組により、障害発生時にも処理を継続することが可能な、プライマリプロセス11とバックアッププロセス12から構成されるプロセスペア13が実現されている。
【0033】
計算機1a及び1bは、いずれも、プロセスペア間通信部14、チェックポイント採取部15、プロセスリスタート部16、バックアッププロセス実行状態制御部17、バックアッププロセス実行状態管理部18、及びプロセス発行システムコール検知部19の各機能要素を有している。これら各部14〜19は、プライマリプロセス11またはバックアッププロセス12から利用される関数プログラム等を格納したライブラリ20によって実現される。
【0034】
図2は、上記プライマリプロセス11及びバックアッププロセス12から構成されるプロセスペア13と、上記ライブラリ20により実現される上記各部14〜19との関係を示す機能ブロック構成図である。
【0035】
プロセスペア間通信部14は、計算機1a及び1b上のプライマリプロセス11及びバックアッププロセス12から構成されるプロセスペア13と他のプロセスペアとの間の通信を行う。プロセスペア間通信部14は、プライマリプロセス11及びバックアッププロセス12が共に生存(存在)している場合、両プロセスを調停して、1つのメッセージのみを他のプロセスペアに送る。逆に他のプロセスペアからメッセージが送られてきた場合、プロセスペア間通信部14は、プライマリプロセス11とバックアッププロセス12が共に生存している場合には、当該メッセージを両プロセスに送る。
【0036】
チェックポイント採取部15は、チェックポイント採取時期が到来すると起動される。ここでは、チェックポイント採取部15は、プライマリプロセス11からのシステムコールによるチェックポイント採取のための指示(チェックポイント採取指示)A、またはタイマTMからの定期的な割り込み(チェックポイント採取割り込み)Bにより起動される。チェックポイント採取部15は、バックアッププロセス実行状態管理部18によって管理されているプライマリプロセス11の状態から、当該プライマリプロセス11が生存していることが判別される場合に、当該プライマリプロセス11に指示Cを出して当該プライマリプロセス11の状態の読み出しDを行い、バックアッププロセス12へのコピーEを実行するチェックポイント採取動作を行う機能を有する。なお、ここでいうプロセスの状態とは、アドレス空間とコンテクストのことである。
【0037】
チェックポイント採取部15はまた、バックアッププロセス実行状態管理部18を利用してバックアッププロセス12の状態(実行状態または停止状態)を調べ、実行状態ならば、バックアッププロセス実行状態制御部17にバックアッププロセス12の実行を停止させる指示Fを出す。
【0038】
プロセスリスタート部16は、プライマリプロセス11を実行している計算機の障害を検知した場合に、バックアッププロセス実行状態管理部17を利用してバックアッププロセス12の状態を調べ、停止状態ならば、バックアッププロセス実行状態制御部17に対してバックアッププロセス12の実行を開始させる指示Hを出す。
【0039】
バックアッププロセス実行状態制御部17は、プライマリプロセス11及びバックアッププロセス12から構成されるプロセスペア13の起動時(プログラムの実行開始時)に、当該プライマリプロセス11及びバックアッププロセス12を共に実行状態として、バックアッププロセス実行状態管理部18に登録する機能を有する。バックアッププロセス実行状態制御部17はまた、チェックポイント採取部15からの指示Fを受けて、バックアッププロセス12を停止させ、その状態を停止状態として、バックアッププロセス実行状態管理部18に登録する機能を有する。バックアッププロセス実行状態制御部17はまた、プロセスリスタート部16からの指示Hまたはプロセス発行システムコール検知部19からの後述する指示Gを受けて、バックアッププロセス12を実行させ、その状態を実行状態として、バックアッププロセス実行状態管理部18に登録する機能をも有する。
【0040】
バックアッププロセス実行状態管理部18は、バックアッププロセス12の状態を保持・管理する。
【0041】
プロセス発行システムコール検知部19は、プロセスペア13(を構成するプライマリプロセス11またはバックアッププロセス12)がシステムコールを実行(発行)したことを検知する。またプロセス発行システムコール検知部19は、プライマリプロセス11がシステムコールを実行したことを検知した場合、バックアッププロセス実行状態管理部18を利用してバックアッププロセス12の状態を調べる。プロセス発行システムコール検知部19は、バックアッププロセス12が停止状態ならば、バックアッププロセス実行状態制御部17に対してバックアッププロセス12の実行を開始させる指示Gを出す。
【0042】
計算機1a及び計算機1b上の、それぞれプロセスペア間通信部14同士、チェックポイント採取部15同士、プロセスリスタート部16同士、バックアッププロセス実行状態制御部17同士、バックアッププロセス実行状態管理部18同士、そしてプロセス発行システムコール検知部19同士は、互いにネットワーク2を介して通信をすことで、あたかも1つであるかのように動作する。
【0043】
図3は状態遷移図であり、同図(a)はプライマリプロセス11の取り得る状態を示す状態遷移図、同図(b)はバックアッププロセス12の取り得る状態を示す状態遷移図である。
【0044】
まずプライマリプロセス11は、図3(a)に示すように、停止状態及び実行状態のいずれかの状態を取る。プライマリプロセス11は、プログラム実行開始a1と共に停止状態から実行状態に遷移する。プライマリプロセス11は、プログラム実行終了a2となるまで、実行状態を保つ。
【0045】
次にバックアッププロセス12も、図3(b)に示すように、停止状態及び実行状態のいずれかの状態を取る。バックアッププロセス12は、プログラム実行開始b1と共に停止状態から実行状態に遷移する。バックアッププロセス12は、実行状態において、チェックポイント採取b2が実行されると、停止状態に遷移する。また、バックアッププロセス12は、停止状態において、プライマリプロセス11でのシステムコール発行b3が行われると、実行状態に遷移する。
【0046】
次に、本実施形態の動作を、図4乃至図8を適宜参照して説明する。なお、図4はプロセスペア13を構成するプライマリプロセス11及びバックアッププロセス12の全体の動作を説明するためのタイミングチャート、図5はチェックポイント採取部15の動作を説明するためのフローチャート、図6はプロセスリスタート部16の動作を説明するためのフローチャート、図7はプロセス発行システムコール検知部19の動作を説明するためのフローチャート、図8はプライマリプロセス11及びバックアッププロセス12の状態とチェックポイント採取時期との関係を説明するためのタイミングチャートである。
【0047】
まず、プロセス開始直後、つまりプログラム実行開始a1,b1直後は、計算機1a上のプライマリプロセス11及び計算機1b上のバックアッププロセス12は、図3に示すように共に停止状態から実行状態に遷移する。
【0048】
今、プライマリプロセス11及びバックアッププロセス12が実行状態にあるときに、例えば図4中のckp1の時点で、プライマリプロセス11からチェックポイント採取部15にチェックポイント採取のシステムコールAが発行されたものとする。
【0049】
この場合、チェックポイント採取部15は起動され、バックアッププロセス実行状態管理部18に対して、当該管理部18により管理されているプライマリプロセス11及びバックアッププロセス12の状態を問い合わせ、両プロセスが共に生存しているか否かを判定する(ステップS1)。もし、プライマリプロセス11及びバックアッププロセス12の少なくとも一方が生存していないならば、チェックポイント採取部15はそのまま動作を終了する。
【0050】
これに対し、プライマリプロセス11及びバックアッププロセス12が共に生存しているならば、チェックポイント採取部15はプライマリプロセス11に指示Cを出して当該プライマリプロセス11の状態を読み出す動作Dを実行し、読み出した状態をバックアッププロセス12にコピーする動作Eを実行する(ステップS2)。
【0051】
チェックポイント採取部15は、ステップS2の処理(チェックポイント採取動作)を実行すると、バックアッププロセス実行状態管理部18に対してバックアッププロセス12の状態を問い合わせ、当該バックアッププロセス12が実行状態にあるか否かを判定する(ステップS3)。もし、バックアッププロセス12が停止状態にあるなら、チェックポイント採取部15はそのまま動作を終了する。これに対し、バックアッププロセス12が実行状態にあるならば、チェックポイント採取部15はバックアッププロセス実行状態制御部17に対して指示Fを出すことで、当該バックアッププロセス12を実行状態から停止状態に遷移させる(ステップS4)。このバックアッププロセス12の新たな状態(停止状態)は、バックアッププロセス実行状態制御部17によりバックアッププロセス実行状態管理部18に登録される。
【0052】
図4の例では、ckp1の後も、例えばタイマTMからの定期的な割り込みBのタイミングで決まるckp2,ckp3,ckp4の時点で、チェックポイントが採られる。このとき、バックアッププロセス12は、上記の説明から明らかなように停止状態のままである。
【0053】
その後、例えばプライマリプロセス11での処理に伴う出力データの書き出し等のために、当該プライマリプロセス11が図4に示す送信(send)処理41を行うものとする。この送信(send)処理41はシステムコールであるものとする。この場合、プロセス発行システムコール検知部19は、上記システムコール(送信処理)を検知する。するとプロセス発行システムコール検知部19は、バックアッププロセス実行状態管理部18に対してプライマリプロセス11及びバックアッププロセス12の状態を問い合わせ、両プロセスが共に生存しているか否かを判定する(ステップS21)。もし、プライマリプロセス11及びバックアッププロセス12の少なくとも一方が生存していないならば、プロセス発行システムコール検知部19はそのまま動作を終了する。
【0054】
これに対し、プライマリプロセス11及びバックアッププロセス12が共に生存しているならば、プロセス発行システムコール検知部19はバックアッププロセス実行状態管理部18を用いてバックアッププロセス12が実行状態にあるか否かを判定する(ステップS22)。
【0055】
もし、バックアッププロセス12が実行状態にないならば、つまりバックアッププロセス12が停止状態にあるならば、プロセス発行システムコール検知部19はバックアッププロセス実行状態制御部17に対して指示Gを出して当該バックアッププロセス12を実行状態に遷移させ、その時点を基準に、最後(最も最近)に採ったチェックポイントから当該バックアッププロセス12をリスタートさせる(ステップS23)。図4の例では、送信(send)処理41のタイミングからみて、最後に採られたチェックポイントはckp4である。この場合、バックアッププロセス12はチェックポイントckp4から処理を再開する。
【0056】
プロセス発行システムコール検知部19は、バックアッププロセス12が停止状態にある場合(ステップS22のNO)には、上述のように当該バックアッププロセス12を実行状態にしてリスタートさせた後(ステップS23)に、ステップS24に進む。またプロセス発行システムコール検知部19は、バックアッププロセス12が既に実行状態にある場合には(ステップS22のYES)、そのままステップS24に進む。プロセス発行システムコール検知部19は、ステップS24において、プライマリプロセス11とバックアッププロセス12とを同期させて動作を終了する。つまりバックアッププロセス12は、リスタート後に送信(send)処理41を行ったところで、プロセスペア間通信部14によって同期させられる。
【0057】
次に、プライマリプロセス11を実行している計算機1aに障害が発生し、当該プライマリプロセス11が停止したものとする。また、この計算機1aの障害が図4中のfault1の時点で発生したものとする。この計算機1aの障害はプロセスリスタート部16により検出される。
【0058】
プロセスリスタート部16は、計算機の障害を検知した場合、その障害発生計算機がバックアッププロセス12側の計算機であるか否かを判定する(ステップS11)。もし、バックアッププロセス12側の計算機、つまり計算機1bでの障害発生の場合には、計算機1a上のプライマリプロセス11は実行可能であることから、プロセスリスタート部16はそのまま動作を終了する。
【0059】
これに対し、プライマリプロセス11側の計算機、つまり計算機1aでの障害発生の場合は、プロセスリスタート部16はバックアッププロセス実行状態管理部18に対してバックアッププロセス12の状態を問い合わせ、当該バックアッププロセス12が生存していて且つ停止状態にあるか否かを判定する(ステップS12,S13)。もし、バックアッププロセス12が生存していない場合、或いは生存していても実行状態にある場合には、プロセスリスタート部16はそのまま動作を終了する。
【0060】
これに対し、バックアッププロセス12が生存していて且つ停止状態にある場合には、プロセスリスタート部16はバックアッププロセス実行状態制御部17に対して指示Hを出して当該バックアッププロセス12を実行状態に遷移させ、その時点、つまりfault1の時点を基準に、最後に採ったチェックポイント(ここでは、図4から明らかなようにckp2)から当該バックアッププロセス12をリスタートさせる(ステップS14)。これによりバックアッププロセス12は、図4の例では、restart1の時点であるチェックポイントckp2から処理を再開する。
【0061】
一般にCADやシミュレーション等の科学技術計算プログラムでは、最初にシステムコールの発行を伴う入力データの読み出し等を行い、その後はシステムコールを発行せずに、CPU演算を繰り返すことが多い。そして長時間のCPU演算が終わった最後に、システムコールの発行を伴う出力データの書き出し等が行われる。このシステムコールの発行を伴う期間だけ、バックアッププロセス12も実行状態とするならば、システムコールを発行せずに、CPU演算を繰り返す期間、プライマリプロセス11だけを実行させても、OSから受けているサービスの状態を保存・復元するのに独自のOSを採用する必要がなく、産業界で広く利用されているオープンシステムを利用することができる。
【0062】
ここで、図1のフォールトトレラントシステムを、上述の科学技術計算プログラムの実行に適用するものとする。この場合、例えば図8に示すように、科学技術計算プログラムの起動直後、つまりプライマリプロセス11及びバックアッププロセス12から構成されるプロセスペア13の起動直後、入力データ読み出し81等でシステムコールを発行する最初の期間は、プライマリプロセス11及びバックアッププロセス12は共に動作して、OSからのサービス提供を受けている状態(実行状態)となる。
【0063】
その後の長時間のCPU演算の間は、最初のチェックポイントckp1の時点以降、先のチェックポイント採取部15の動作から明らかなように、バックアッププロセス12は停止状態となる。このため、長時間のCPU演算の間、バックアッププロセス12側では科学技術計算プログラムの実行のためにCPUリソースを消費しない。そして最後に出力データの書き出し82等でシステムコールを発行する間は、再びプライマリプロセス11及びバックアッププロセス12が共に動作して、OSからのサービス提供を受けている状態になる。
【0064】
さて、本実施形態では、プロセス発行システムコール検知部19がプライマリプロセス11でのシステムコールの発行を検知して、最後に採ったチェックポイントから自動的にバックアッププロセス12を再開させ、システムコールを処理させている。この場合、もし最後にチェックポイントを採ってから長時間が経過していると、再開後の処理に時間がかかる。
【0065】
そこで本実施形態では、プログラム中で明示的にチェックポイント採取を指示し、最後にチェックポイントを採った後長時間が経過してから、システムコールが実行されるのを防ぐようにしている。図8の例では、チェックポイントckp5及びckp10が、これに相当し、プライマリプロセス11からのシステムコールによる指示Aにより、チェックポイント採取部15に対して指定される。一方、図8中のチェックポイントckp1,ckp2,ckp3,ckp4及びckp7,ckp8,ckp9は、バックアッププロセス12が停止状態にある期間、タイマTMからの定期的な割り込みBによって指定される。
【0066】
ところで、既に説明したように、バックアッププロセス12が実行状態にある期間に、チェックポイントの採取時期が到来すると、当該バックアッププロセス12は停止状態となる。この状態でシステムコールが実行されると、その時点を基準に最後に採ったチェックポイントからバックアッププロセス12を再開させる必要がある。このため、システムコールを繰り返す必要のある期間に、チェックポイントの採取時期が到来するのは処理効率の点で好ましくない。
【0067】
そこで、チェックポイント採取部15がタイマTMからの定期的な割り込みBにより起動される期間を、バックアッププロセス12が停止状態にある期間に限定し、バックアッププロセス12が実行状態にある期間における当該割り込みBは、チェックポイント採取部15にて無視(無効扱い)される構成とするとよい。また、プライマリプロセス11からのシステムコールによるチェックポイント採取の指示Aは、チェックポイント採取部15にて常に有効として処理される構成とする。
【0068】
更に、システムコールを繰り返す必要のある期間の終了直後、つまりバックアッププロセス12を実行状態に維持しておく必要がなくなる直後でも、プログラム中で明示的にチェックポイント採取を指示するとよい。このようにすると、システムコールを繰り返す必要のある期間の終了直後にバックアッププロセス12は停止状態となり、以降タイマTMからの定期的な割り込みBによるチェックポイント採取の指示が可能となる。この結果、効率よくチェックポイントを採るようにすることができる。図8の例では、ckp6が、システムコールを繰り返す必要のある期間の終了直後となるように、プログラム中で明示的に指示されたチェックポイントである。
【0069】
また、同様に、バックアッププロセス12を実行状態にすることを、プログラム中で明示することもできる。
【0070】
このように本実施形態においては、障害発生時における処理の継続を可能としながら、(1)CPUリソースを2倍使うことなく、(2)オープンシステムに適用可能な、プロセスペア方式によるフォールトトレラントシステムが実現できる。
【0071】
上記実施形態では、プロセスペア13を構成するプライマリプロセス11及びバックアッププロセス12を、それぞれ異なる計算機1a及び1b上で動作させている。しかし、プログラム上の障害だけを考慮すればよいフォールトトレラントシステムでは、プライマリプロセス11及びバックアッププロセス12を同一計算機上で動作させるようにしてもよい。但し、プライマリプロセス11及びバックアッププロセス12が動作する唯一の計算機自体の障害が発生した場合には、処理を継続することはできない。
【0072】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0073】
【発明の効果】
以上詳述したように本発明によれば、バックアッププロセスを、プログラムの起動直後の期間と、その後当該バックアッププロセスが停止状態にあるときにシステムコールが発行された場合に実行状態にする一方、チェックポイント採取時に当該バックアッププロセスが実行状態にあるならば、当該バックアッププロセスを停止状態にするようにしたので、障害発生時にも処理を継続することを可能としながら、CPUリソースを2倍必要とせずに済み、しかも独自のOSを採用することなくOSから受けているサービスの状態を保存・復元できるため、オープンシステムを利用できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るフォールトトレラントシステムの構成を示すブロック図。
【図2】図1中のプライマリプロセス11及びバックアッププロセス12から構成されるプロセスペア13と、ライブラリ20により実現される各機能要素との関係を示す機能ブロック構成図。
【図3】プライマリプロセス11及びバックアッププロセス12の取り得る状態を示す状態遷移図。
【図4】同実施形態におけるプロセスペア13を構成するプライマリプロセス11及びバックアッププロセス12の全体の動作を説明するためのタイミングチャート。
【図5】同実施形態におけるチェックポイント採取部15の動作を説明するためのフローチャート。
【図6】同実施形態におけるプロセスリスタート部16の動作を説明するためのフローチャート。
【図7】同実施形態におけるプロセス発行システムコール検知部19の動作を説明するためのフローチャート。
【図8】同実施形態におけるプライマリプロセス11及びバックアッププロセス12の状態とチェックポイント採取時期との関係を説明するためのタイミングチャート。
【図9】従来のプロセスペアの第1の方式を説明するための図。
【図10】従来のプロセスペアの第2の方式を説明するための図。
【符号の説明】
1a,1b…計算機
2…ネットワーク
11…プライマリプロセス
12…バックアッププロセス
13…プロセスペア
14…プロセスペア間通信部
15…チェックポイント採取部
16…プロセスリスタート部
17…バックアッププロセス実行状態制御部
18…バックアッププロセス実行状態管理部
19…プロセス発行システムコール検知部
20…ライブラリ
Claims (9)
- 障害発生時にも処理を継続することが可能な、プライマリプロセスとバックアッププロセスから構成されるプロセスペアが実行されるフォールトトレラントシステムにおけるプロセスペア実行制御方法であって、
前記プロセスペアの起動時には前記プライマリプロセス及び前記バックアッププロセスを共に実行状態にするステップと、
チェックポイント採取時期が到来する毎に、前記プライマリプロセスの状態を前記バックアッププロセスにコピーするチェックポイント採取動作を実行するステップと、
前記チェックポイント採取動作の実行後に前記バックアッププロセスが実行状態にあるかを判定し、実行状態にあるならば、当該バックアッププロセスを停止状態にするステップと、
前記プロセスペアからシステムコールが発行された場合に、前記バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイントから再開させて実行状態にするステップと
を具備することを特徴とするフォールトトレラントシステムにおけるプロセスペア実行制御方法。 - 前記プライマリプロセス側での障害発生時に、前記バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイントから再開させて実行状態にするステップを更に具備することを特徴とする請求項1記載のフォールトトレラントシステムにおけるプロセスペア実行制御方法。
- 前記プライマリプロセスからシステムコールが発行される直前のタイミングにチェックポイント採取時期を設定するステップを更に具備することを特徴とする請求項1記載のフォールトトレラントシステムにおけるプロセスペア実行制御方法。
- 前記プライマリプロセスからシステムコールを繰り返す期間の終了直後のタイミングにチェックポイント採取時期を設定するステップを更に具備することを特徴とする請求項3記載のフォールトトレラントシステムにおけるプロセスペア実行制御方法。
- 前記プライマリプロセスからシステムコールが発行される直前のタイミングに第1のチェックポイント採取時期を設定するステップと、
前記プライマリプロセスからシステムコールを繰り返す期間の終了直後のタイミングに第2のチェックポイント採取時期を設定するステップと、
前記第1のチェックポイント採取時期から次の前記第2のチェックポイント採取時期のまでの期間を除く、前記バックアッププロセスが停止状態にある期間、予め定められた時間間隔で第3のチェックポイント採取時期を設定するステップと
を更に具備することを特徴とする請求項1記載のフォールトトレラントシステムにおけるプロセスペア実行制御方法。 - 障害発生時にも処理を継続することが可能な、プライマリプロセスとバックアッププロセスから構成されるプロセスペアが実行されるフォールトトレラントシステム向けのプロセスペア実行制御プログラムであって、
計算機に、
前記プロセスペアの起動時に前記プライマリプロセス及び前記バックアッププロセスを共に実行状態にするステップと、
チェックポイント採取時期が到来する毎に、前記プライマリプロセスの状態を前記バックアッププロセスにコピーするステップと、
チェックポイント採取時に前記バックアッププロセスが実行状態にあるならば、当該プライマリプロセスを停止状態にするステップと、
前記プロセスペアからシステムコールが発行された場合に、前記バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイントから再開させて実行状態にするステップと
を実行させるためのプロセスペア実行制御プログラム。 - 障害発生時にも処理を継続することが可能な、プライマリプロセスとバックアッププロセスから構成されるプロセスペアを実行するフォールトトレラントシステムにおいて、
前記プロセスペアと他のプロセスペアとの間の通信を行うプロセスペア間通信手段と、
前記バックアッププロセスの実行状態を制御するバックアッププロセス実行状態制御手段であって、前記プロセスペアの起動時には前記プライマリプロセス及び前記バックアッププロセスを共に実行状態にするバックアッププロセス実行状態制御手段と、
チェックポイント採取時期が到来する毎に、前記プライマリプロセスの状態を前記バックアッププロセスにコピーすることでチェックポイントを採取するチェックポイント採取手段であって、チェックポイント採取時に前記バックアッププロセスが実行状態にあるならば、当該バックアッププロセスを前記バックアッププロセス実行状態制御手段により停止状態にさせるチェックポイント採取手段と、
前記プロセスペアの発行するシステムコールを検知するプロセス発行システムコール検知手段であって、前記システムコールを検知した場合、前記バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイントから前記バックアッププロセス実行状態制御手段により再開させて実行状態にさせるプロセス発行システムコール検知手段と
を具備することを特徴とするフォールトトレラントシステム。 - 前記プライマリプロセス側での障害発生時に、前記バックアッププロセスが停止状態にあるならば、当該バックアッププロセスを最も最近に採取されたチェックポイントから前記バックアッププロセス実行状態制御手段により再開させて実行状態にするプロセスリスタート手段を更に具備することを特徴とする請求項7記載のフォールトトレラントシステム。
- 前記バックアッププロセスの実行状態を管理するバックアッププロセス実行状態管理手段を更に具備し、
前記チェックポイント採取手段、前記プロセス発行システムコール検知手段及び前記プロセスリスタート手段は、前記バックアッププロセスの状態を前記バックアッププロセス実行状態管理手段に問い合わせることで判別することを特徴とする請求項8記載のフォールトトレラントシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002084321A JP3708891B2 (ja) | 2002-03-25 | 2002-03-25 | フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002084321A JP3708891B2 (ja) | 2002-03-25 | 2002-03-25 | フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003280939A JP2003280939A (ja) | 2003-10-03 |
JP3708891B2 true JP3708891B2 (ja) | 2005-10-19 |
Family
ID=29231731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002084321A Expired - Fee Related JP3708891B2 (ja) | 2002-03-25 | 2002-03-25 | フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3708891B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8346996B2 (en) * | 2008-10-29 | 2013-01-01 | Nec Corporation | Information processing system |
KR101237746B1 (ko) | 2010-10-22 | 2013-02-28 | 매크로임팩트 주식회사 | 데이터 백업 장치 및 방법 |
CN112860491B (zh) * | 2021-03-17 | 2023-05-02 | 深圳市腾讯信息技术有限公司 | 一种数据冷备系统及方法 |
-
2002
- 2002-03-25 JP JP2002084321A patent/JP3708891B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003280939A (ja) | 2003-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558215B (zh) | 虚拟机的备份方法、恢复方法、装置及备份服务器集群 | |
US5907673A (en) | Checkpointing computer system having duplicated files for executing process and method for managing the duplicated files for restoring the process | |
US8127174B1 (en) | Method and apparatus for performing transparent in-memory checkpointing | |
US7844856B1 (en) | Methods and apparatus for bottleneck processing in a continuous data protection system having journaling | |
JP2011060055A (ja) | 仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラム | |
US9335998B2 (en) | Multi-core processor system, monitoring control method, and computer product | |
KR101835458B1 (ko) | 데이터 처리 시스템의 재기동 방법, 시스템 및 컴퓨터 판독가능 저장 매체 | |
JP5243851B2 (ja) | データをバックアップする方法 | |
JP5183542B2 (ja) | 計算機システム及び設定管理方法 | |
JP2012221321A (ja) | フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム | |
JP2006004147A (ja) | ディザスタリカバリシステム、プログラム及びデータベースのリカバリ方法 | |
CN106354563B (zh) | 用于3d重建的分布式计算系统以及3d重建方法 | |
JP4141875B2 (ja) | リカバリ処理方法及びその実施システム並びにその処理プログラム | |
WO2015043155A1 (zh) | 一种基于命令集的网元备份与恢复方法及装置 | |
WO2023185802A1 (zh) | 数据处理方法及装置 | |
JP2009080705A (ja) | 仮想計算機システム及び同システムにおける仮想計算機復元方法 | |
CN114281508A (zh) | 一种数据批流融合离线计算方法 | |
JP3708891B2 (ja) | フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム | |
JP4095139B2 (ja) | コンピュータシステムおよびファイル管理方法 | |
JP5672521B2 (ja) | コンピュータシステム、およびそのチェックポイントリスタート方法 | |
JP2004046658A (ja) | データ転送方法 | |
JP3122371B2 (ja) | 計算機システム | |
Tsai et al. | FVMM: Fast VM Migration for Virtualization-based Fault Tolerance Using Templates | |
JP5317182B2 (ja) | Pos端末、モジュールアップデート方法およびモジュールアップデートプログラム | |
WO2014147707A1 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040820 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050412 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050527 |
|
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: 20050802 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050804 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090812 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100812 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100812 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110812 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120812 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120812 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130812 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |