내가 이해하는 바에 따르면, 시스템에 여유 메모리가 없을 때 커널은 프로세스를 강제 종료하여 메모리를 다시 확보해야합니다. 그러나 내 시스템에서 이것은 전혀 일어나지 않습니다.
시스템에서 사용 가능한 것보다 훨씬 더 많은 메모리를 할당하는 간단한 스크립트 (예 : 수백만 개의 문자열이있는 배열)를 가정하십시오. 이와 같은 스크립트를 일반 사용자로 실행하면 시스템이 완전히 정지 할 때까지 모든 메모리를 가져옵니다 (SysRQ REISUB 만 작동).
여기서 이상한 부분은 컴퓨터가 멈 추면 하드 드라이브 LED가 켜지고 스왑 파티션이 마운트되어 있는지 여부에 관계없이 컴퓨터가 재부팅 될 때까지 계속 유지된다는 것입니다!
그래서 내 질문은 :
- 이 동작이 정상입니까? 일반 사용자로 실행 된 응용 프로그램이 시스템을 이런 식으로 중단시킬 수있는 것은 이상합니다.
- 메모리가 너무 많거나 가장 많을 때 우분투가 자동으로 응용 프로그램을 죽일 수있는 방법이 있습니까?
추가 정보
- 우분투 12.04.3
- 커널 3.5.0-44
RAM : 4GB에서 ~ 3.7GB (그래픽 카드와 공유). *
$ tail -n+1 /proc/sys/vm/overcommit_* ==> /proc/sys/vm/overcommit_memory <== 0 ==> /proc/sys/vm/overcommit_ratio <== 50 $ cat /proc/swaps Filename Type Size Used Priority /dev/dm-1 partition 4194300 344696 -1
Allocation failed
). 그러나 스왑이 없으면 컴퓨터가 정지됩니다. 이 방법으로 작동해야합니다 (스왑을 사용할 때만 죽이십시오)?
tail -n+1 /proc/sys/vm/overcommit_*
출력을 시도 하고 추가하십시오. 여기 참조 : 작업 방법 구성 움 킬러