과거에는 vm.swappiness
로 설정하면 0
RAM이 완전히 가득 찼을 때만 시스템이 교체된다는 의미였습니다.
$ cat /etc/sysctl.d/99-sysctl.conf
kernel.sysrq = 1
vm.swappiness=0
$ sysctl vm.swappiness
vm.swappiness = 0
그러나 최근에는 이 설정을 사용하면 스와핑이 지워진 지 몇 초 후에도 여전히 스와핑이 가능합니다 sudo swapoff -a; sudo swapon -a
. 예를 들어, 몇 시간 후에
$ free -m
total used free shared buff/cache available
Mem: 32047 7914 325 1509 23807 22177
Swap: 1974 1974 0
따라서 22177MiB가 있습니다 available
. 에서 man free
:
쓸 수 있는
스왑 없이 새 응용 프로그램을 시작하는 데 사용할 수 있는 메모리 양을 추정합니다.
그러나 내 시스템은 1974MiB의 스왑 공간을 사용하고 속도가 느려지는 등 여전히 많은 스왑을 수행합니다.
vm.swappiness
으로 설정해 보았지만 1
비슷한 결과가 나왔습니다. 또한 최신 LTS 4.19.17-1, 4.19.16-1-lts, 4.19.15-1-lts 및 기타 여러 LTS 버전과 메인라인 4.18.16.arch1-1을 포함한 다양한 커널을 사용해 보았습니다. 방법 불필요한 시스템 교체를 방지하시겠습니까?
확실히최신 버전의 커널에서 이를 설정하면 vm.swappiness = 0
"사용 가능한 페이지 및 파일 지원 페이지 수가 해당 지역의 최고 수위 표시보다 작아질 때까지 스왑을 시작하지 않는다"는 의미입니다. 이 "하이 워터 마크"가 무엇인지는 잘 모르겠지만 여유 메모리가 많이 있습니다! 다른페이지제안OOM 킬러이런 일이 발생하면 호출됩니다(교환 자체가 아님). RAM 없이 스왑을 차단하고 OOM 종료가 발생하는 것을 방지할 수 있습니까(RAM과 스왑이 모두 가득 차지 않은 경우)?