1つのプロセスのみのスワッピングをオフにしたいと思います。スワップは、他のプロセスでも通常どおり機能するはずです。
これをcgroupsでどのように実装できますか?
カーネルのドキュメント からmemory.swappinessについて:
5.3 swappiness
/ proc/sys/vm/swappinessに似ていますが、グループの階層のみに影響します。
以下のcgroupのswappinessは変更できません。
-ルートcgroup(/ proc/sys/vm/swappinessを使用)。
-階層を使用するcgroupで、その下に他のcgroupがあります。
-階層のルートではなく階層を使用するcgroup。
Red Hatカスタマーポータルから:
memory.swappiness
カーネルがページキャッシュからページを再利用する代わりに、このcgroupのタスクが使用するプロセスメモリをスワップアウトする傾向を設定します。これは、システム全体の/ proc/sys/vm/swappinessに設定されているのと同じ傾向であり、同じ方法で計算されます。デフォルト値は60です。60未満の値はカーネルがプロセスメモリをスワップアウトする傾向を減らし、60より大きい値はカーネルのプロセスメモリをスワップアウトする傾向を増やし、100より大きい値はカーネルが一部のページをスワップアウトすることを許可しますこのcgroup内のプロセスのアドレス空間。
値0は、プロセスメモリのスワップアウトを妨げないことに注意してください。グローバル仮想メモリ管理ロジックがcgroup値を読み取らないため、システムメモリが不足している場合でも、スワップアウトが発生する可能性があります。ページを完全にロックするには、cgroupsの代わりにmlock()を使用します。
::次のグループのスワップを変更することはできません。
*ルートcgroup。/proc/sys/vm/swappinessで設定されたswappinessを使用します。
*その下に子グループがあるcgroup。
EDIT:設定方法を正確に知りたい場合は、他のほとんどのcgroup属性とまったく同じように設定します。
# cd /mnt/cgroup/<cgroupName>
# cat memory.swappiness
60
# echo "59 " > memory.swappiness
# cat memory.swappiness
59