![RAM이 완전히 가득 찼을 때만 시스템이 스왑을 사용하도록 하려면 어떻게 해야 합니까?](https://linux55.com/image/142065/RAM%EC%9D%B4%20%EC%99%84%EC%A0%84%ED%9E%88%20%EA%B0%80%EB%93%9D%20%EC%B0%BC%EC%9D%84%20%EB%95%8C%EB%A7%8C%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4%20%EC%8A%A4%EC%99%91%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
과거에는 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과 스왑이 모두 가득 차지 않은 경우)?