問題タブ [checkpointing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
457 参照

jvm - Java アプリケーションでの CRIU の使用法

そこで、CRIU を使用して JVM プロセスのスナップショットを作成し、後で復元したいと考えています。この目的のために、毎秒カウンターを出力するだけの小さなプログラムを書きました。

プログラムを実行すると、プログラム$ java some.Fun 3000は秒を表示し始めます。

criu を使用してプロセスを保存する場合$ ps -auxは、Java プロセスの PID (この場合は 3503) を見つけて、criu を呼び出します$ criu dump -t 3503 -o dump.log --shell-job。その後、カウンターのある端末はカウントを停止し、印刷Killedして終了するようです。

criu を呼び出したフォルダーのこの時点で、プロセスを復元するために使用できるいくつかのダンプ ファイルを取得しました。$ criu restore -o dump.log --shell-job

そうすると、新しい PID を持つ新しいプロセスが作成され、カウンターは停止した瞬間からカウントを開始します。良い!

ただし、プロセスを強制終了し、同じダンプ ファイルを使用してプロセスを復元しようとするとします。これを行うと、 criu はメッセージですぐに終了しますAborted (core dumped)。同じJavaバージョンの別のマシンにファイルを転送して、そこで実行しようとすると、同じことが起こります...

今私の質問は:そうあるべきですか?一度だけ状態を復元できるはずですか?それとも私は何か間違ったことをしていますか?前もって感謝します!