페이지 할당 실패-메모리가 부족합니까? 메모리가 부족합니까? 스왑 사용량은 10 %

최근 kern.log에 내 서버 중 하나에서 다음과 같은 항목을 발견했습니다 .

Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20

알고 싶습니다 :

  1. 그 메시지는 정확히 무엇을 의미합니까?
  2. 서버에 메모리가 부족합니까?

스왑 사용량은 10 % 미만으로 매우 낮으며 지금까지 메모리 부족으로 인해 프로세스가 종료되는 것을 보지 못했습니다.

추가 정보:

  • 서버는 Debian 6.0을 실행하는 Xen 인스턴스 (DomU)입니다.
  • 512MB의 RAM과 512MB의 스왑 파티션이 있습니다.
  • 가상 머신 내부의 CPU로드는 평균 0.25


답변

데비안 버그 666021도 이와 같은 문제에 대한보고 인 것 같습니다. 제안은 다음과 같습니다.

#change value for this boot
sysctl -w vm.min_free_kbytes=65536

#change value for subsequent boots
echo "vm.min_free_kbytes=65536" >> /etc/sysctl.conf

http://russ.garrett.co.uk/2009/01/01/linux-kernel-tuning/ 이 설정을 변경하는 것이 유용 할 수있는 경우에 대한 논의가 있습니다.

이것은 커널에게 항상 64MB의 RAM을 비우려고 시도합니다. 두 가지 주요 경우에 유용합니다.

  • 들어오는 네트워크 트래픽이 커널을 압도하지 않고 버퍼를 플러시 할 시간이되기 전에 OOM을 강제 실행하지 않으려는 스왑없는 시스템.

  • 동일한 이유로 x86 시스템 : x86 아키텍처는 약 900MB RAM 미만의 DMA 전송 만 허용합니다. 따라서 RAM이 많은 톤으로 기괴한 OOM 오류 상황을 해결할 수 있습니다.

3.2.12-gentoo x86 컴퓨터에서이 설정을 적용했지만 여전히 이러한 오류가 발생합니다.


답변

방금 Debian 5 및 커널 2.6.39.3 64 비트를 실행하는 Lenovo NAS에서이 오류를 해결했습니다.

https://www.novell.com/support/kb/doc.php?id=7002803 에 따르면 메시지는 무섭게 보이지만 정보를 제공합니다.

그러나 그들은 매우 제한된 루트 파티션을 채우고있었습니다 (이 장치에는 50MB 루트 파티션이 있습니까?!)

나를위한 해결책 vm.min_free_kbytes65536아래 에서 로 설정하는 것이 었 습니다 16384.

이후에도 OS에는 여전히 107MB의 여유 메모리와 2GB의 버퍼가 있습니다. 이것은 의미가 없지만 모든 로깅을 중지했습니다.


답변

확인해야 할 수도 있습니다 vm.zone_reclaim_mode: http://www.kernel.org/doc/Documentation/sysctl/vm.txt 참조


답변