Memory overcommitment
Memory commit 이란?
이란 말 그대로 commit을 더 할 수 있게 해준다는 의미입니다. 그렇다면 commit이란 뭘까요? 프로세스가 커널에게 메모리 요청을 할 때 malloc()과 같은 시스템 콜을 사용하는데요, 커널은 시스템 콜 요청을 받고 해당하는 메모리 영역의 주소를 전달자로 넘겨 줍니다. 이 때, 프로세스가 할당받고 사용하지 않을 수 있기 때문에 할당해준 메모리 영역을 물리 메모리에 바인딩하지는 않습니다.
즉, 프로세스는 받았다고 생각하지만 실제로는 물리 메모리 어느 곳에도 할당되어지지 않은 상태입니다. 그리고 이것을 memory commit이라고 합니다.
메모리 오버커밋 설정 방법
$ sudo sysctl -a | grep overcommit_memory
vm.overcommit_memory = 0
$ sudo sysctl vm.overcommit_memory=1