Échec d'allocation de page - Suis-je à court de mémoire?

24

Dernièrement, j'ai remarqué des entrées comme celle-ci dans l' kern.logun de mes serveurs:

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

J'aimerais savoir:

  1. Que signifie exactement ce message?
  2. Mon serveur manque de mémoire?

L'utilisation de swap est assez faible (moins de 10%), et jusqu'à présent, je n'ai remarqué aucun processus tué en raison d'un manque de mémoire.

Information additionnelle:

  • Le serveur est une instance Xen (DomU) exécutant Debian 6.0
  • Il a 512 Mo de RAM et une partition de swap de 512 Mo
  • La charge du processeur à l'intérieur de la machine virtuelle affiche une moyenne de 0,25
mfriedman
la source

Réponses:

14

Le bogue Debian 666021 semble être un rapport de ce même problème. La suggestion est la suivante:

#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/ explique comment modifier ce paramètre peut être utile, reproduit ici:

Cela indique au noyau d'essayer de garder 64 Mo de RAM libre à tout moment. Il est utile dans deux cas principaux:

  • Machines sans échange, où vous ne voulez pas que le trafic réseau entrant submerge le noyau et force un MOO avant qu'il n'ait le temps de vider les tampons.

  • Machines x86, pour la même raison: l'architecture x86 n'autorise que les transferts DMA en dessous d'environ 900 Mo de RAM. Vous pouvez donc vous retrouver avec la situation bizarre d'une erreur OOM avec des tonnes de RAM libre.

J'ai appliqué ce paramètre sur ma machine x86 3.2.12-gentoo, mais je reçois toujours ces erreurs.

Matt McHenry
la source
Cette même chose peut se produire avec certains périphériques, par exemple avec le contrôleur MPT Fusion SCSI, il est recommandé de maintenir vm.min_free_kbytes autour de 100 mégaoctets. Ou du moins, il était habitué, la dernière fois que j'ai dû utiliser ces choses avec des distributions Linux 32 bits. Les choses ont peut-être changé depuis.
Janne Pikkarainen
AVERTISSEMENT IMPORTANT . echo 104857600 > /proc/sys/vm/min_free_kbytes CAUSÉ MON SYSTÈME À KERNEL PANIC, reproductible . Un peu de texte a volé sur l'écran dans le processus que je n'avais aucun espoir de lire, mais les derniers messages concernaient mon dongle Wi-Fi, donc cette cassure peut être spécifique à mon système. Cela étant dit, piquez avec prudence.
i336_
OH, c'est en kilo-octets . Je ne me souviens pas concrètement si j'ai fait 104857600 ou 10485760, mais si j'ai fait l'ancien, j'ai essayé de réserver 100 Go, que cet ordinateur portable n'a pas installé;) Je vais essayer de bidouiller avec cela dans une VM un jour.
i336_
1

Je viens de résoudre cette erreur sur un NAS Lenovo exécutant Debian 5 et le noyau 2.6.39.3 64 bits.

Les messages sont informatifs malgré leur aspect effrayant, selon https://www.novell.com/support/kb/doc.php?id=7002803

Cependant, ils remplissaient ma partition racine très limitée (cet appareil a une partition racine de 50 Mo?!)

La solution pour moi était de régler vm.min_free_kbytesde 65536bas en haut 16384.

Par la suite, le système d'exploitation dispose toujours de 107 Mo de mémoire libre et de 2 Go de tampons. Cela n'a aucun sens, mais cela a arrêté toute la journalisation.

Criggie
la source