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


19

将来同じプロセスを再開するつもりで、CPUまたは物理メモリリソースを消費しないように、長時間実行中のプロセスを停止したい。

私は、CPUの一部が使用して達成可能である知っているSIGSTOPSIGCONT 信号が、それはページアウトすることが可能である(プロセス・汚れ・ページの場合、スワップアウト)すぐに(停止)プロセスのプライベートRSSメモリ?


1
この背後にある意図は何ですか?プロセスがより迅速に再開されるようにしますか?または、機密データがディスクに書き込まれないようにしますか?または、他の何か?意図を知っていれば、より良い答えを出すことができるかもしれません。
オリバー

13
OSはこれを自動的に行います。特別なことをする理由は本当にありません。
デビッドシュワルツ

@oliverバッチスケジューラ(github.com/brutusin/wava)を作成しています。現在の実装は非プリエンプティブスケジューリングを提供しますが、すべての実行中のジョブがキュージョブに依存している場合、デッドロック状態を回避するために、プリエンプティブなものに移行します(ジョブの実行を停止できる)。停止されたプロセスを継続して(チェックポイントから新しいプロセスを作成しない)求められた動作が正確に必要です
-idelvall

1
危険なアサーションである
@DavidSchwartz

@idelvallそれでは、記憶に特別なことをしたくないように思えます。
デビッドシュワルツ

回答:


11

チェックポイント/復元と呼ばれる手法を検討するかもしれません。これにより、実行中のプロセスを取得して、その状態を一連のファイルに保存し、後で復元することができます。
それを使用するには、最初にcriu [ 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のプロセスを強制終了して再度実行すると、プロセスはチェックポイントに戻り、再び起動します。

お役に立てれば。


4
これは、OPが彼らがやりたいと主張することを行いません。それを試してみてください-使用されるメモリの削減はありません。プロセスのプライベートメモリからディスクキャッシュに切り替えるだけです(ファイルのセットを書き込むため)。追加の保存手順と追加の復元手順を作成するだけで、同じ方法で同じメモリが使用されます(およびイジェクト可能)。実際、新しいすべての書き込みを生成するために一部のメモリが複製されるため、事態が悪化する可能性があります。
デビッドシュワルツ

ええと、@ Davidの良い点/tmpは、特にtmpfsが(メモリ/スワップスペースに支えられている場合)です。通常のディスクバックアップファイルシステムにチェックポイントを設定するとvmtouch -e、ページキャッシュからページを削除するために使用できますが、一時的に余分なRAMを使用します。(criu直接I / O(O_DIRECTを使用)を実行するオプションがない限り...)
ピーター

1
OPが解決しようとしている問題を説明するのではなく、OPが特定の解決策を要求するため、これがOPが望んでいるかどうかを知るのは困難です。これは完璧な答えかもしれませんし、彼にとって役に立たないかもしれません。
デビッドシュワルツ

私はまだ詳細に見ていないが、復元されたプロセスは新しいプロセス(異なるpId)であり、これはまさに私が必要なものではないようだ
...-idelvall

1
@idelvall:これが、ほとんどの種類のチェックポイント/復元の仕組みです。主要なユースケースの1つは、再起動後の計算の進捗を保存することです。
ピーターコーデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.