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"

관련 정보