/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"