overcommit_memory가 2로 설정된 경우에도 oom이 계속 발생할 수 있는 이유는 무엇입니까?

overcommit_memory가 2로 설정된 경우에도 oom이 계속 발생할 수 있는 이유는 무엇입니까?

2: 자주 확인하고 과도하게 투자하지 마세요.

모드 2(Linux 2.6부터 사용 가능)에서 할당 가능한 총 가상 주소 공간(/proc/meminfo의 CommitLimit)은 다음과 같이 계산됩니다.

          CommitLimit = (total_RAM - total_huge_TLB) *
                        overcommit_ratio / 100 + total_swap

IIUC에서는 echo 2 > /proc/sys/vm/overcommit_memory오버커밋이 비활성화되어 있으므로 실제 물리적 메모리(RAM + 스왑)보다 더 많은 가상 메모리 할당을 허용해서는 안 됩니다. 그러나 퍼지 테스트 삼위일체를 사용하면 여전히 메모리 부족이 보고되고 데스크탑 환경이 종료됩니다.

제가 추측하는 한 가지 가능한 이유는 always check, never overcommit각 프로세스에 의해 할당된 메모리가 결코 초과되지 않는다는 것입니다 CommitLimit. 그러나 여러 프로세스가 동시에 메모리를 할당하고 합계가 초과하는 경향이 여전히 있습니다 CommitLimit. 제 추측이 맞습니까?

관련 정보