Linuxでプロセス固有の交換性を設定する方法は?

Linuxでプロセス固有の交換性を設定する方法は?

/proc/sys/vm/swappiness大丈夫です。しかし、各プロセスと同じハンドルが欲しいです/proc/$PID/oom_adj。これにより、一部のプロセスが他のプロセスよりもページを置き換える可能性を減らすことができます。とは異なり、memlock()これはプログラムの交換を防ぎません。同様にnice、デフォルトでは、ユーザーはプログラミングの可能性を減らすことはできず、交換の可能性のみを高めることができます。そう呼ぶべきだと思います/proc/$PID/swappiness_adj

答え1

答え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"

関連情報