Błąd alokacji strony - Czy brakuje mi pamięci?

24

Ostatnio zauważyłem wpisy takie jak ten na kern.logjednym z moich serwerów:

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

Chciałbym wiedzieć:

  1. Co dokładnie oznacza ta wiadomość?
  2. Czy na moim serwerze brakuje pamięci?

Zużycie wymiany jest dość niskie (mniej niż 10%), a jak dotąd nie zauważyłem, że procesy zostały zabite z powodu braku pamięci.

Dodatkowe informacje:

  • Serwer jest instancją Xen (DomU) z systemem Debian 6.0
  • Ma 512 MB pamięci RAM i 512 MB partycji wymiany
  • Obciążenie procesora wewnątrz maszyny wirtualnej pokazuje średnio 0,25
mfriedman
źródło

Odpowiedzi:

14

Błąd Debiana 666021 wydaje się być zgłoszeniem tego samego problemu. Sugerowana jest:

#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/ ma pewne dyskusje na temat tego, kiedy zmiana tego ustawienia może być przydatna, zamieszczona tutaj:

To informuje jądro, aby próbowało zachować 64 MB pamięci RAM przez cały czas. Przydaje się w dwóch głównych przypadkach:

  • Maszyny bez zamiany, w których nie chcesz, aby przychodzący ruch sieciowy przytłoczył jądro i wymusił OOM, zanim zdąży opróżnić bufory.

  • Maszyny x86, z tego samego powodu: architektura x86 pozwala tylko na transfery DMA poniżej około 900 MB pamięci RAM. Więc możesz skończyć z dziwną sytuacją błędu OOM z tonami wolnej pamięci RAM.

Zastosowałem to ustawienie na mojej maszynie x86 w wersji 3.2.12-gentoo, ale wciąż otrzymuję te błędy.

Matt McHenry
źródło
To samo może wystąpić w przypadku niektórych urządzeń, na przykład w przypadku kontrolera SCSI MPT Fusion zaleca się utrzymywanie vm.min_free_kbytes około 100 megabajtów. A przynajmniej tak było, kiedy ostatnio musiałem używać tych rzeczy z 32-bitowymi dystrybucjami Linuksa. Od tego czasu wszystko mogło się zmienić.
Janne Pikkarainen
WAŻNE OSTRZEŻENIE . echo 104857600 > /proc/sys/vm/min_free_kbytes POWODOWANY MÓJ SYSTEM DO PANICY KERNEL, powtarzalnie . W tym czasie na ekranie pojawiło się sporo tekstu, którego nie miałem nadziei przeczytać, ale ostatnie wiadomości dotyczyły mojego klucza Wi-Fi, więc to uszkodzenie może być specyficzne dla mojego systemu. To powiedziawszy, szturchaj ostrożnie.
i336_
OH, jest w kilobajtach . Nie pamiętam konkretnie, czy zrobiłem 104857600 lub 10485760, ale jeśli zrobiłem to pierwsze, starałem się zarezerwować 100 GB, której ten laptop nie zainstalował;) Spróbuję kiedyś to zrobić na maszynie wirtualnej.
i336_
1

Właśnie przepracowałem ten błąd na Lenovo NAS z systemem Debian 5 i jądrem 2.6.39.3 64bit.

Wiadomości są informacyjne, mimo że wyglądają przerażająco, zgodnie z https://www.novell.com/support/kb/doc.php?id=7002803

Jednak zapełniali moją bardzo ograniczoną partycję główną (to urządzenie ma 50 MB bajtów?!)

Rozwiązaniem dla mnie było ustawienie vm.min_free_kbytesod 65536zera do 16384.

Następnie system operacyjny nadal ma 107 MB wolnej pamięci i 2 GB w buforach. To nie ma sensu, ale zatrzymało to rejestrowanie.

Criggie
źródło