同じプロセスを再開することを意図して、CPUまたは物理メモリリソースを消費しないように、長時間実行されているプロセスを停止したいと思います。
CPU部分はSIGSTOP
とSIGCONT
signals を使用して達成できることは知っていますが、ページアウト(ダーティページを処理する場合はスワップアウト)することは可能です- 即時(停止した)プロセスのプライベートRSSメモリ?
チェックポイント/復元と呼ばれる手法を検討する場合があります。これにより、実行中のプロセスを実行してその状態を一連のファイルに保存し、後で復元することができます。
使用するには、まずクリウをインストールします [ git 、 wiki ] プログラム(yum install criu
またはapt install criu
)。
実行中のプロセスにチェックポイントを設定するには、ファイルを保持する空のディレクトリを作成し、そのディレクトリにcdします。
mkdir /var/tmp/checkpoint
cd /var/tmp/checkpoint
次に、実行中のプロセスをチェックポイントします。この場合、関連するttyを使用してシェルでプロセスを実行しているため、-Shell-jobを使用しています。
criu dump -t 404 --Shell-job
404は、チェックポイントを設定するプロセスのPIDです。これを実行すると、実行中のプロセスが強制終了され、/ var/tmp/checkpointディレクトリに、復元に必要な一連のファイルが読み込まれます。
プロセスを復元するには、チェックポイントファイルのあるディレクトリにいることを確認し、復元を実行します。
cd /var/tmp/checkpoint
criu restore --Shell-job
プロセスは、これが実行されたターミナルで中断したところから再開します。この実行中のプロセスを強制終了してcriu restore --Shell-job
を再度実行すると、プロセスはチェックポイントに戻り、再び起動します。
お役に立てれば。