/proc/sys/vm/swappiness
大丈夫です。しかし、各プロセスと同じハンドルが欲しいです/proc/$PID/oom_adj
。これにより、一部のプロセスが他のプロセスよりもページを置き換える可能性を減らすことができます。とは異なり、memlock()
これはプログラムの交換を防ぎません。同様にnice
、デフォルトでは、ユーザーはプログラミングの可能性を減らすことはできず、交換の可能性のみを高めることができます。そう呼ぶべきだと思います/proc/$PID/swappiness_adj
。
答え1
各cgroupに対して交換可能性を設定できます。
http://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
http://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
cgroupの簡単な紹介と例については、以下を参照してください。
答え2
延長したいサイモントスの答え私が開発した実際のソリューションを試してみてください。別途回答が必要だと思います。
RedHat 7 - cgroups v1とsystemd
唯一RedHat 8からcgroups v2をサポート、ここではcgroups v1を使用する必要があります。
これ公式ガイドラインの推奨事項追加するとExecStartPost
サービスのメモリ設定が変更されますが、他の変更を適用するまでは適用されません/sys/fs/cgroup/memory/system.slice
。
そのため、サービス名が次のようになっていると仮定し、それをサービスユニットファイルに追加しましたexample
。
# the first entry is here only to make /sys/fs/cgroup/memory/system.slice path
# available for the next entry
MemoryLimit=64G
# this entry actually effectively disables swap for the service
ExecStartPost=/bin/bash -c \
"echo 0 > /sys/fs/cgroup/memory/system.slice/example.service/memory.swappiness"