プロセスの実行中にメモリ使用量を制限する方法は?

プロセスの実行中にメモリ使用量を制限する方法は?

process_a私のサーバーには、数日間実行される長期実行バッチプロセスがあります。このプロセスがどれくらいかかるかは関係ありません。問題は、どのようにprocess_aメモリ(RAM)の99%をいつも自分で持っていくかである。process_b今本当に実行する必要があります。ただし、process_bRAMの不足により常に中断される可能性があります。

プロセスの実行中にメモリ使用量を制限する方法はありますか?

process_aこれまでのすべての進行状況が失われる可能性があるため、最初からやり直したくありません。私は実行中のプログラムの所有者ではないので、進行中のチェックポイントを定期的に保存するように変更することはprocess_aできません。私はメモリの一部を取り戻すためにprocess_aメモリの半分をスワップに強制的にダンプするつもりです。process_aprocess_b

すべての回答この問題そしてこの問題プロセスが実行中であるという事実は扱いません。

答え1

process_aメモリが積極的に使用されていない場合は、起動時にprocess_bメモリが交換されます。

process_aしたがって、メモリ交換が表示されない場合は、おそらくprocess_aメモリが積極的に使用されているからです。

process_aそれでは、一時的に活動していないかどうかはどうすればわかりますか?

一時停止してください。

kill -TSTP $pid

その後、走って動きを交換しますprocess_bprocess_a

チェックアウトを交換するためにより多くのメモリを拡張したい場合:https://gitlab.com/ole.tange/tangetools/tree/master/swapout

作業が終わったら、process_bブレーキを放しますprocess_a

kill -CONT $pid

答え2

Check for the priority of the process

Higher priority is -20
lower prioritty is +19
Neutral is 0

if process_a is having highher priority based on your requirement reduce the priority (-20 to +19). Higher the priority it will consumes most of resources


You can try with ulimit command options too

関連情報