설명 여기 움 - 킬러 통해 구성 할 수 있다는 overcommit_memory
것을 :
- 2 = 초과 커밋 없음 너무 많이 요청하면 할당이 실패합니다.
- 0, 1 = 초과 커밋 (지속적으로 또는 항상) 죽여 일부 과정에서 너무 많은 메모리가 실제로 액세스 할 몇 가지 추론을 기반으로 (들).
이제는 완전히 이해하지 못하지만 할당 된 메모리에 실제로 액세스하려고 시도하는 프로세스를 죽이는 옵션이없는 이유는 무엇입니까?
중요한 시스템 프로세스가 너무 많은 메모리를 요구하면 어떻게됩니까?
—
Lawrence
우선- 이 일을 할 수 있습니다 . 그러나 그 질문의 가장 큰 문제는 프로세스가 메모리를 요구 하면 새로 실행 되고 있다는 것입니다. 즉, 이것은 최신 처리와 관련된 새로운 프로세스입니다. OOM 대신 3 일 동안 열지 않은 IM 클라이언트가 시스템 메모리 낭비를 계속 허용 했습니까? 아니면 올해 YouTube에 실제로로드 된 시간이 있습니까? linuxatemyram.com
—
mikeserv
이것이
—
Barmar
no overcommit
옵션이 본질적으로하는 일입니다. 프로세스가 너무 많은 메모리를 요구하면 실패합니다. 오류를 확인하면 대개 자체적으로 종료됩니다. 그렇지 않으면 malloc()
반환 되는 null 포인터를 역 참조하려고 할 때 세그먼트 오류 가 발생하여 충돌이 발생합니다.
no overcommit
인용 된 소스 (예 : kernel.org/doc/Documentation/vm/overcommit-accounting ) 에 따라 2는 실제로 모드 입니다. 그에 따라 질문을 편집 할 것입니다.