チェックポインティング
このページでは並列プロセスのチェックポイントと再開の仕方、およびチェックポイントの制限について述べます。
並列プロセスのチェックポイントの仕方
周期的に並列プロセスをチェックポイントするには、以下のように
scrun コマンドに checkpoint オプションを指定します:
scrun -checkpoint=interval a.out
シングルユーザモードでチェックポイントを使用するには SCOUT 環境の外で
group オプションをつけて起動する必要があります。
scrun -group=pcc,checkpoint=interval a.out
a.out はプログラムの名前で、
interval でチェックポイントの周期を
[1-9][0-9]*[sSmMhHdD]の形式で指定します。
sSmMhHdD は単位を指定するサフィックスであり、
それぞれ s/S … 秒、 m/M … 分、 h/H … 時間、 d/D … 日を意味します。
省略されると「分」と解釈されます。
並列プロセスが開始されると、以下のメッセージが周期的に標準エラー出力に
表示されます:
SCORE: Checkpointing ... done.
このメッセージはそれぞれ成功したチェックポイントの後に表示されます。
プロセスのチェックポイントを行う別の方法は SIGQUIT を
FEP (Front-End Process) プロセスに送ることです。
これは単純にプログラムを実行しているコンソールウィンドウで "^\"
を押すことでなされます。
上のメッセージによってチェックポイントの成功を知らされるでしょう。
並列プロセスのチェックポイントからの再開の仕方
様々な理由から SCore-D が終了した場合、FEP プロセスは単純に次のメッセージを
標準エラー出力に表示して終了します:
FEP:ERROR SCore-D unexpectedly terminated.
-checkpoint オプションを指定することによってこの振る舞いを
避けることが出来ます;
つまり、FEP プロセスは動きつづけ、以下のメッセージを出力します:
FEP:WARNING SCore-D unexpectedly terminated.
FEP: [07/Feb/2000 15:28:40] Waiting for SCore-D to be restarted ...
並列プロセスをチェックポイントから再開させたいのなら、この FEP プロセスを
kill してはいけません。
システムクラッシュ後に、システム管理者が SCore-D
を restart オプションをつけて起動した場合、
FEP プロセスが起動しつづけていれば、
並列プロセスは最後のチェックポイントから自動的に再スタートします。
そして以下のようなメッセージが現れるでしょう:
FEP: [07/Feb/2000 15:30:43] SCore-D restarted.
そして並列プロセスは最後のチェックポイント イメージから続行されるでしょう。
システムクラッシュ以前にチェックポイント イメージが取られていなかった場合は、
並列プロセスは最初からやり直されます。
システム管理者が restart オプションをつけずに
SCore-D を再実行した場合は、
FEP プロセスは kill され、並列プロセスのチェックポイントは失われます。
以下のようなメッセージが現れるでしょう:
FEP: [07/Feb/2000 16:31:17] restart canceled by SCore-D.
制限
SCore-D のチェックポイント機構を使う際には以下の制限があります:
- 動的リンクされたプログラムはチェックポイントできません。
チェックポイント可能にするには
-static オプションをつけて
プログラムを make してください。
- 最後のチェックポイントだけが並列プロセスの再開に利用できます。
新しいチェックポイントは前のチェックポイントを上書きします。
- ファイルの内容は回復されません。
チェックポイントの時点から並列プロセスが再開されるまでの間、
それらの内容を変更せずに維持しなければなりません。
- ソケットやパイプ、共有メモリは再開されません。
唯一の例外は、永続ファイルを open() したファイルディスクリプタ
を使用して
MAP_SHARED オプション付きで
mmap(2) した共有メモリ領域です。
そのようなメモリ領域は、ファイルの内容がチェックポイント時点と
同じ内容に維持されているならば再開できます。
- 一部のカーネル/ハードウェアの状態は復元されません。
例えば、
getpid(2) の戻り値はチェックポイント時と
同じではありませんし、gettimeofday(2) は現在のシステム
クロック時間を戻し、チェックポイントからの休止時間の分を調整したりは
しません。
- 複数のディスククラッシュからの再開は出来ません。
単一のディスククラッシュは代替ホストの指定があれば復帰が可能です.
メッセージ
チェックポイント/再開の際に以下のメッセージが現れます:
- 警告メッセージ:
-
Initializing checkpointer failed: error-code
このメッセージはアプリケーションプログラムを初期化する際に
表示されます。
このプログラムは普通に開始され、チェックポイントの要求は
無視されます。
-
Checkpointing failed: error-code
このメッセージはチェックポイントの際に表示されます。
要求されたチェックポイントは今回キャンセルされました。
しかし次のチェックポイントは普通に実行されます。
-
Restarting failed: error-code
このメッセージは再開時に表示されます。
プログラムは再開されず、普通に開始されます。
-
Dynamically linked program is uncheckpointable.
このメッセージは SIGQUIT を FEP プロセスに送ることで
チェックポイントを要求したときに表示されます。
要求はキャンセルされます。
- エラーメッセージ:
-
Dynamically linked program is uncheckpointable
このメッセージは scrun コマンドに
-checkpoint=number
オプションを指定したときに表示されます。
実行は全てキャンセルされます。
-
Fatal error in restarting: error-code
このメッセージは再開する際に表示されます。
いくつかの危険なエラーのため、プログラムは普通に
起動させることすらできません。
実行は全てキャンセルされます。
- CREDIT
- This document is a part of the SCore cluster system software
developed at PC Cluster Consortium, Japan.
Copyright (C) 2003-2004 PC Cluster Consortium.