2013-04-02 2 views

답변

9

리눅스 커널은 OOM(Out Of Memory) Killer을 사용하여 메모리 부족 조건을 처리합니다. OOM 킬러의 전략은 할당 프로세스가 필요한 메모리를 확보 할 수 있도록 일부 프로세스 또는 프로세스를 종료하는 것입니다.

죽이기 프로세스를 선택하기 위해 OOM 킬러는 Badness 값을 계산합니다. 그런 다음 최대 Badness로 프로세스를 선택합니다. 할당 프로세스가 선택되면 OOM은 작업을 종료합니다. 다른 프로세스가 선택되면 OOM 킬러의 이전 실행이 충분한 메모리를 확보하지 못한 경우에 OOM 킬러가 두 번 이상 호출 될 수 있습니다.

과정은 루트 프로세스가 살해되지

  • 방식으로 선택되어 사망한다.
  • 최소한의 작업이 손실됩니다.
  • 많은 양의 메모리를 복구합니다.
  • 최소한의 프로세스 (1 개)를 삭제하려고합니다.
  • 우리는 사용자가 죽일 것으로 예상되는 프로세스를 죽이려고 시도합니다.이 알고리즘은 최소의 놀라움의 원칙을 충족시키기 위해 꼼꼼하게 조정되었습니다.

    1-항상을 오버 커밋

우리는 /proc/sys/vm/overcommit_memory

0 휴리스틱 메모리 오버 커밋 값 (기본 설정) 주소 공간의 -Obvious overcommit을을 사용하여 OOM 킬러를 구성 할 수는

을 거부됩니다

2 - 오버 커밋 해제 - overcommit_memory가로 설정된 경우 2, 시스템에 대한 전체 주소 공간 커밋은 물리적 RAM의 스왑 + 구성 가능 백분율 (overcommit_ratio -default는 50)을 초과해서는 안됩니다.

Linux 핸들을 증명하는 간단한 방법은 OOM이 malloc 및 memset을 통해 메모리를 지속적으로 할당하는 것입니다 프로세스가 메모리를 모두 소모하여 죽을 때까지 메모리를 남깁니다 (dmesg에 나타남). 메모리 부족에 대한

표준 테스트는 테스트는 LTP에서 사용할 수있는 LTP Source Forge

에서 사용할 수 Linux Test Project (LTP)에서 찾을 수 있습니다 /을 testcases/커널/MEM/움

+0

감사합니다 .. 그것은 당신의 끝에서 큰 도움이됩니다 ,,, 감사합니다 .. – Happy

+0

감사합니다 Harshitha. 또한 (메모리가 필요할 때) 데스크탑 모드에서 선택 프로세스를 중단시키는 대화식 방법이 있는지 알고 있습니까? – Henry