将来同じプロセスを再開するつもりで、CPUまたは物理メモリリソースを消費しないように、長時間実行中のプロセスを停止したい。
私は、CPUの一部が使用して達成可能である知っているSIGSTOP
とSIGCONT
信号が、それはページアウトすることが可能である(プロセス・汚れ・ページの場合、スワップアウト)すぐに(停止)プロセスのプライベートRSSメモリ?
将来同じプロセスを再開するつもりで、CPUまたは物理メモリリソースを消費しないように、長時間実行中のプロセスを停止したい。
私は、CPUの一部が使用して達成可能である知っているSIGSTOP
とSIGCONT
信号が、それはページアウトすることが可能である(プロセス・汚れ・ページの場合、スワップアウト)すぐに(停止)プロセスのプライベートRSSメモリ?
回答:
チェックポイント/復元と呼ばれる手法を検討するかもしれません。これにより、実行中のプロセスを取得して、その状態を一連のファイルに保存し、後で復元することができます。
それを使用するには、最初にcriu [ 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
のプロセスを強制終了して再度実行すると、プロセスはチェックポイントに戻り、再び起動します。
お役に立てれば。
/tmp
は、特にtmpfsが(メモリ/スワップスペースに支えられている場合)です。通常のディスクバックアップファイルシステムにチェックポイントを設定するとvmtouch -e
、ページキャッシュからページを削除するために使用できますが、一時的に余分なRAMを使用します。(criu
直接I / O(O_DIRECTを使用)を実行するオプションがない限り...)