web-dev-qa-db-ja.com

後で実行するためにLinuxプロセスを停止してメモリをスワップアウトする方法

同じプロセスを再開することを意図して、CPUまたは物理メモリリソースを消費しないように、長時間実行されているプロセスを停止したいと思います。

CPU部分はSIGSTOPSIGCONTsignals を使用して達成できることは知っていますが、ページアウト(ダーティページを処理する場合はスワップアウト)することは可能です- 即時(停止した)プロセスのプライベートRSSメモリ?

19
idelvall

チェックポイント/復元と呼ばれる手法を検討する場合があります。これにより、実行中のプロセスを実行してその状態を一連のファイルに保存し、後で復元することができます。
使用するには、まずクリウをインストールします [ gitwiki ] プログラム(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を再度実行すると、プロセスはチェックポイントに戻り、再び起動します。

お役に立てれば。

11
virtex