process_a
私のサーバーには、数日間実行される長期実行バッチプロセスがあります。このプロセスがどれくらいかかるかは関係ありません。問題は、どのようにprocess_a
メモリ(RAM)の99%をいつも自分で持っていくかである。process_b
今本当に実行する必要があります。ただし、process_b
RAMの不足により常に中断される可能性があります。
プロセスの実行中にメモリ使用量を制限する方法はありますか?
process_a
これまでのすべての進行状況が失われる可能性があるため、最初からやり直したくありません。私は実行中のプログラムの所有者ではないので、進行中のチェックポイントを定期的に保存するように変更することはprocess_a
できません。私はメモリの一部を取り戻すためにprocess_a
メモリの半分をスワップに強制的にダンプするつもりです。process_a
process_b
答え1
process_a
メモリが積極的に使用されていない場合は、起動時にprocess_b
メモリが交換されます。
process_a
したがって、メモリ交換が表示されない場合は、おそらくprocess_a
メモリが積極的に使用されているからです。
process_a
それでは、一時的に活動していないかどうかはどうすればわかりますか?
一時停止してください。
kill -TSTP $pid
その後、走って動きを交換しますprocess_b
。process_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