Linux
如何為linux設置每個程序的swapiness?
/proc/sys/vm/swappiness
很好,但我想要一個像/proc/$PID/oom_adj
. 這樣我就可以使某些程序比其他程序更不可能換出任何頁面。與 不同memlock()
,這不會阻止程序被換出。就像nice
,預設情況下,使用者不能降低他們的程序的可能性,而只是更有可能被交換。我想我不得不打電話給這個/proc/$PID/swappiness_adj
。
您可以為每個 cgroup 配置 swappiness:
http://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
http://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
有關 cgroup 的更簡單介紹和範例,請參閱
我想用我開發的現實生活解決方案來擴展Šimon Tóth 的答案。我認為它值得單獨回答。
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"