리눅스 오버 커밋 메모리 커밋하지 마십시오”를

나는 리눅스를 사용하여 메모리 오버 커밋을 조사해 왔으며 /proc/sys/vm/overcommit_memory같은 말을하지 않는 기사를 읽었습니다.

이 문서 는 “잘못된 방향으로 가기”라는 제목 아래에서 “값 1 : 오버 커밋을 수행하고 0 (기본값) :하지 않습니다”라고 말하지만 다음 몇 줄에서는 이와 비슷한 내용을 언급합니다. 사실, 사실이 아니며 0은 “과도한 커밋이 얼마나 합리적인지에 대한 추측”을 의미합니다. 즉 , 값 0을 사용하여 메모리 오버 커밋 비활성화 되지 않습니다.

또한 1은 “모든 malloc ()을 거부하지 않음”을 나타내고 2는 “오버 커밋에 대해 정확함을 의미합니다. 스왑 공간보다 큰 가상 주소 공간과 물리적 메모리의 일부 overcommit_ratio를 커밋하지 마십시오”를 의미합니다.

반면에 Red Hat 매거진 은 “값이 0이면 커널은 메모리 요청이 응용 프로그램의 malloc 호출에 부여 할 수있는 충분한 메모리가 있는지 확인합니다. 메모리가 충분하면 요청이 승인되었습니다. 그렇지 않으면 요청이 거부되고 오류 코드가 응용 프로그램으로 리턴됩니다. ” 정확히 오버 커밋을 해제 같은 소리.

“값이 1로 설정되면 커널은 overcommit_ratio 값으로 정의 된대로 실제 RAM의 양보다 많은 할당을 할당하고 시스템에서 스왑을 허용합니다 ….이 파일의 설정이 2이면 커널은 모든 메모리 할당을 허용합니다. 현재 메모리 할당 상태에 관계없이 값 1과 2의 관점에서, 그것은 이전의 의사가 말한 것과 반대입니다.

누구나 실제로 올바른 것이 무엇인지 알고 있으며 초과 커밋을 ‘비활성화’할 수 있습니까?



답변

Red Hat 매거진은 1과 2가 반대로 바뀌 었습니다. 오버 커밋을 비활성화하여 다음과 같이 작동하지 못하게하는 버그에주의하십시오. https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/345601


답변