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