메모리가 부족하면 시스템이 중단됩니다.

메모리가 부족하면 시스템이 중단됩니다.

나는 eeePC 900a를 가지고 있습니다. 디스크에는 8GB 플래시가 있지만 RAM은 1GB뿐입니다. 설치된 Linux 배포판은 ArchLinux입니다.

시스템의 메모리가 부족하면극도로응답 없음: TTY1로 전환하거나 마우스 포인터를 움직이는 등의 작업을 수행하는 데 몇 초/분 정도 걸립니다. 때로는 시스템이 정지된 것처럼 보입니다. 3년 전에 그대로 놔두었는데 지금까지 아무것도 바뀌지 않았습니다.

디스크가 이미 너무 작고 스왑 공간에 많은 쓰기를 하면 플래시 카드의 수명이 크게 단축되므로 이 eeePC에 스왑 파티션/파일을 만드는 것을 피하고 싶습니다. 또한 파일/파티션을 교환하면 문제가 확실히 해결되기보다는 문제가 바뀔 뿐이라고 생각합니다.

메모리가 부족할 때 커널이 임의의 응용 프로그램을 종료하도록 되어 있지 않습니까? 왜 실패합니까(또는 오랜 시간이 걸림)?

나는 몇 달/몇 년 전에 이에 대해 더 자세히 조사해 보았지만 실제로 효과가 있는 것을 찾지 못했습니다...

답변1

OOM-killer(Out of Memory Killer)는 키보드 조합을 통해 직접 호출할 수 있습니다.

SysRq-F

SysRq 키는 일반적으로 키보드의 PrtSc 키와 결합됩니다.

OOM-killer는 일부 프로세스를 종료하고 시스템이 다시 응답하게 됩니다.

위의 의견에서 이 기능에 대한 제안을 해주신 Raman에게 감사드립니다.

추신: 이것은 나에게 많은 도움이 되었습니다. Chrome이나 메모리를 많이 사용하는 소프트웨어로 인해 문제가 발생한 경우 이것이 문제에 대한 가장 유용한 조언이라는 의견에 동의합니다. 하지만 OOM-killer는 매우 중요한 일부 프로세스를 종료할 수 있으므로 주의해서 사용해야 합니다.

답변2

최근에 나는 내 문제에 대한 해결책을 찾았습니다.

Linux OOM Killer가 제대로 작동하지 않았기 때문에 사용자 공간 OOM Killer를 사용하기 시작했습니다.아침. C로 작성되었으며 상당히 구성 가능하고 저에게는 매력적으로 작동합니다.

나는 또한 다음과 같은 몇 가지 대안에 대해 들었습니다.페이스북 OOMD, 서버에서 실행되도록 개발되었지만 아직 시도하지 않았습니다.

답변3

자연스러운 상태는 애플리케이션 데이터가 RAM에 있고 파일이 디스크에 있다는 것입니다.
성능 관점에서 볼 때 이상적인 상황은 자주 사용되는 데이터가 RAM에 있고 현재 필요하지 않은 데이터는 디스크에 있는 것입니다.
일반 시스템에서 커널은 이상적인 상태를 달성하기 위해 두 가지 작업을 수행합니다.

  • 한동안 사용하지 않은 애플리케이션 데이터를 디스크로 옮길 수 있는 것이 스와핑(Swapping)이다.
  • 최근 사용된 파일의 데이터는 RAM에 보관됩니다. 이는 디스크 캐시(디스크에서 읽은 데이터용)와 디스크 버퍼(디스크에 쓰려는 데이터용)입니다.

일반적인 시스템에서는 RAM의 상당 부분이 캐시와 버퍼 전용으로 사용됩니다(일반적인 수치는 50%). RAM은 제한된 리소스이므로 일부 애플리케이션 데이터를 스왑으로 교체해야 할 수도 있습니다(스왑은 RAM을 사용하는 더 나은 방법이 있는 경우에만 필요함).

스왑이 없는 시스템에서는 애플리케이션 데이터가 RAM의 거의 모든 부분을 사용하여 캐시를 위한 공간이 거의 없을 때 이러한 상황이 발생합니다. 그러면 시스템 속도가 느려질 수 있습니다. 커널은 실제로 필요할 때까지 응용 프로그램 종료를 시작하지 않습니다. 응용 프로그램이 사용 가능한 메모리의 99%만 사용하는 한 시스템은 계속 실행되지만 항상 파일 데이터를 디스크에서 로드하고 다시 로드해야 하기 때문에 속도가 매우 느립니다. 이 시점에서는 스왑을 사용하는 시스템이 동일한 응용 프로그램을 실행하는 것이 더 빠릅니다.

이 문제에 대한 자세한 내용은 다음을 참조하세요.이 lkml 토론그리고이 블로그 게시물.

디스크 캐시를 위해 최소 RAM 양을 예약하도록 커널에 지시하는 직접적인 방법을 모르겠습니다. 당신은 할 수RAM의 작은 부분을 스왑 공간으로 설정, 어쩌면 심지어압축. 가지다이 분야의 성공 보고서, 귀하의 특정 상황에 대해 보장하지는 않지만.

답변4

이는 2007년부터 알려진 버그입니다.메모리 사용량이 너무 높으면 시스템이 정지됩니다..

이 경우 Windows는 사용자에게 하나 이상의 응용 프로그램을 닫으라고 경고하는 대화 상자를 표시합니다.

관련 정보