Errore di allocazione della pagina - Sto esaurendo la memoria?


24

Ultimamente, ho notato voci come questa in kern.loguno dei miei server:

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

Mi piacerebbe sapere

  1. Cosa significa esattamente quel messaggio?
  2. Il mio server sta esaurendo la memoria?

L'utilizzo dello swap è piuttosto basso (meno del 10%) e finora non ho notato alcun processo essere ucciso a causa della mancanza di memoria.

Informazioni aggiuntive:

  • Il server è un'istanza Xen (DomU) che esegue Debian 6.0
  • Ha 512 MB di RAM e una partizione di swap da 512 MB
  • Il carico della CPU all'interno della macchina virtuale mostra una media di 0,25

Risposte:


14

Il bug Debian 666021 sembra essere un rapporto di questo stesso problema. Il suggerimento è:

#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/ ha alcune discussioni su quando modificare questa impostazione può essere utile, riprodotti qui:

Questo dice al kernel di provare a mantenere 64 MB di RAM liberi in ogni momento. È utile in due casi principali:

  • Macchine senza swap, in cui non si desidera che il traffico di rete in entrata travolga il kernel e imponga una OOM prima che abbia il tempo di svuotare i buffer.

  • macchine x86, per lo stesso motivo: l'architettura x86 consente solo trasferimenti DMA inferiori a circa 900 MB di RAM. Quindi puoi finire con la bizzarra situazione di un errore OOM con tonnellate di RAM libere.

Ho applicato questa impostazione sulla mia macchina x86 3.2.12-gentoo, ma sto ancora ricevendo questi errori.


La stessa cosa può verificarsi con alcuni dispositivi, ad esempio con il controller SCSI MPT Fusion si consiglia di mantenere vm.min_free_kbytes circa 100 megabyte. O almeno era abituato, l'ultima volta che ho dovuto usare quelle cose con le distribuzioni Linux a 32 bit. Le cose potrebbero essere cambiate da allora.
Janne Pikkarainen,

AVVERTENZA IMPORTANTE . echo 104857600 > /proc/sys/vm/min_free_kbytes CAUSATO IL MIO SISTEMA A KERNEL PANIC, riproducibile . Un bel po 'di testo è apparso sullo schermo nel processo che non avevo alcuna speranza di leggere, ma gli ultimi messaggi riguardavano il mio dongle Wi-Fi, quindi questa rottura potrebbe essere specifica per il mio sistema. Detto questo, colpisci con cautela.
i336_

OH, è in kilobyte . Non riesco a ricordare concretamente se ho fatto 104857600 o 10485760, ma se l'ho fatto il primo ho provato a riservare 100 GB, che questo laptop non ha installato;) Cercherò di armeggiare con questo in una VM a volte.
i336_

1

Ho appena superato questo errore su un NAS Lenovo con Debian 5 e kernel 2.6.39.3 a 64 bit.

I messaggi sono informativi nonostante sembrino spaventosi, secondo https://www.novell.com/support/kb/doc.php?id=7002803

Tuttavia, stavano riempiendo la mia partizione di root molto limitata (questo dispositivo ha una partizione di root da 50 MByte?!)

La soluzione per me era di impostare vm.min_free_kbytesdal 65536basso al 16384.

Successivamente, il sistema operativo ha ancora 107 MByte di memoria libera e 2 GB di buffer. Questo non ha senso, ma ha fermato tutto il logging.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.