무엇을 /proc/sys/vm/overcommit_memory
설정 했습니까? 커널 문서에서 :
0 - Heuristic overcommit handling. Obvious overcommits of
address space are refused. Used for a typical system. It
ensures a seriously wild allocation fails while allowing
overcommit to reduce swap usage. root is allowed to
allocate slightly more memory in this mode. This is the
default.
1 - Always overcommit. Appropriate for some scientific
applications.
2 - Don't overcommit. The total address space commit
for the system is not permitted to exceed swap + a
configurable percentage (default is 50) of physical RAM.
Depending on the percentage you use, in most situations
this means a process will not be killed while accessing
pages but will receive errors on memory allocation as
appropriate.
따라서 1을 사용하는 경우 차이가 없습니다. 2를 사용하고 Linux 스왑 파일을 사용하지 않으면 512M의 (가상) 메모리를 할당 할 수있는 프로세스가 없습니다. 0의 결과는 명확하지 않습니다.
편집 : http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit에서 이것은 0이 작동하는 방식입니다.
휴리스틱 오버 커밋은 시스템이 가능한 모든 메모리를 회수하고 현재보다 많은 RAM을 사용하는 다른 프로세스가없는 경우 시스템이 제공 할 수있는 메모리 양을 계산하려고 시도합니다. 이 이상을 요구하면 할당이 거부됩니다. 특히 이론적 인 '사용 가능한 메모리'수는 사용 가능한 스왑 공간, 사용 가능한 RAM (루트가 아닌 경우 1/32 미만) 및 재 확보 가능으로 레이블이 지정된 통합 버퍼 캐시 및 커널 데이터에서 사용하는 모든 공간을 합하여 계산됩니다. (일부 예약 된 페이지가 적음).
따라서 계산에서도 스왑을 사용합니다. 일반적으로 RHEL 권장 사항을 따릅니다.
M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
S = M *2
Else
S = M + 2