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?

Pavel Koryagin
la source
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é?

Janne Pikkarainen
la source
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.

Alex
la source