mmap에 대한 질문

mmap에 대한 질문

저는 mmap을 사용하여 시스템보다 더 많은 것을 메모리에 저장하는 golang용 캐시 패키지를 구축하려고 합니다. 캐시는 지속적일 필요가 없습니다. 애플리케이션이 실행될 때마다 Redis에서 캐시를 로드합니다.

하지만 프로그램이 실제 메모리의 최대 한도를 초과하면 어떻게 될까요? 다음 할당은 디스크에서 발생합니까? 커널이 mamp에서 메모리를 회수하면 내용은 어떻게 되나요? 사라졌나요? 이를 방지하려면 디스크에 mmap해야 합니까? 아니면 커널이 이 작업을 자동으로 수행합니까?

답변1

실제 메모리가 고갈되면 시스템은 가장 최근에 액세스한 메모리 페이지 중 일부를 스왑 파티션으로 이동하기 시작합니다. 일반적으로 이러한 페이지를 선택하는 것은 전적으로 커널에 달려 있습니다. 귀하의 페이지가 아닐 수도 있지만 한동안 사용되지 않은 다른 프로세스에 속할 수도 있습니다.

개입하고 싶다면 다음을 사용할 수 있습니다.미친 웨스(2)시스템 호출은 그에 따라 조정할 수 있도록 메모리 사용 전략에 대한 권장 사항을 커널에 제공합니다.

관련 정보