Linux: la mémoire est libre mais le swap est utilisé. Pourquoi?


11

Voici les diagrammes de Munin.

Utilisation de la mémoire: http://koryagin.com/w/q/memory-day.png

Swap in / out: http://koryagin.com/w/q/swap-day.png

Pourquoi Linux décide-t-il d'augmenter le cache et d'utiliser le swap alors que la taille de la RAM est beaucoup plus grande que la mémoire utilisée par les programmes?


2
Le sous-système VM Linux au cours des dernières années a été très bien réglé pour favoriser l'espace tampon et l'espace cache; les applications occupant de la mémoire mais ne faisant rien seront mélangées sur le disque. Cela augmente la réactivité et les performances. À moins que vous ne constatiez des problèmes de performances, vous ne devriez vraiment pas avoir à vous en préoccuper.
— Bart Silverstrim

Réponses:


17

Votre serveur a probablement des processus gourmands en mémoire et / ou inactifs comportant de nombreuses pages inactives. Le noyau Linux préfère échanger les parties inactives des programmes à échanger, car la mémoire est probablement mieux utilisée comme cache.

Si vous souhaitez changer ce comportement, jouez avec vm.swappinesssysctl ajustable mais soyez averti, déjouer les développeurs de noyau / mainteneurs de distribution n'est pas si simple. :-)

Vous rencontrez des problèmes de performances sur votre serveur lors de ce pic de swap ou avez-vous demandé par curiosité?


Je n'ai aucun problème de performances sur ce serveur particulier. Mais à un autre, où la situation n'est pas si claire, je réfléchis à ce qu'il faut faire. Une logique de gestion de la mémoire Linux ne peut-elle pas être la raison des erreurs de segmentation PHP-FPM, si elles ne correspondent à aucun des problèmes PHP connus? Donc, généralement en faveur de la curiosité.
— Pavel Koryagin

BTW, ce serveur gère de manière intensive un très petit nombre de données avec un ensemble fixe de scripts, il ne devrait donc pas avoir d'E / S intensives. Alors pourquoi Linux veut-il avoir un si gros cache?
— Pavel Koryagin

Linux met fortement en cache les fichiers, les métadonnées des fichiers, les entrées de répertoire, etc. Essayez la commande slabtop.
— Janne Pikkarainen

Merci beaucoup. Il faudra un certain temps pour comprendre quoi faire avec les slabtopinformations.
— Pavel Koryagin

Laissez cela fonctionner en plein écran lorsque votre patron passe devant votre cabine et faites de vous un gourou à ses yeux. :-) Une autre belle commande "ooh, qui semble difficile à comprendre" est systat -vmstatdans FreeBSD (probablement d'autres BSD aussi).
— Janne Pikkarainen

1

Vous devriez essayer de jouer avec le paramètre swappiness . Comme vous pouvez voir que votre système a commencé à échanger lorsqu'il a essayé d'augmenter la taille du cache de fichiers, cela est normal si swappines n'est pas égal à 0.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.