• # Le swap c'est bon, mangez-en

    Posté par . En réponse au message swap question débutant. Évalué à 10. Dernière modification le 18 juin 2019 à 19:30.

    Le swap sur une machine avec un stockage « normal » est une bonne chose. Sur une carte mémoire c'est une autre histoire car cela dépend beaucoup de la qualité de la carte en question (on limite les écritures sur les cartes moyen de gamme. Les cartes bas de gamme sont à proscrire. Problème, il n'y a pas de méthode simple pour savoir dans quelle catégorie se trouve une carte).

    Ta copie d'écran montre que la mémoire n'est pas utilisée en totalité. Il est probable que cela ne montre pas la mémoire utilisée par les caches du système de stockage.
    Dans ton cas, le swap est probablement utilisé pour stocker des morceaux de mémoire inutilisés ou rarement utilisés. Cela permet donc au noyau de stocker plus de choses dans les caches sus-nommés.
    Le remplissage du swap augmente progressivement, pour faire de la place aux caches qui se remplissent.
    Le noyau équilibre la pression sur la mémoire et le temps perdu à écrire/lire en swap.

    Sur une machine dont une partie de la mémoire est réellement non utilisée (ni par les programmes, ni par les caches, etc), le swap est tout de même un peu rempli « préventivement ». Cela permet à la machine d'être plus réactive lorsqu'un besoin de mémoire survient.
    Dans le cas d'une machine qui a de la mémoire disponible, le swap contient des données qui sont toujours présentes en mémoire. S'il faut alouer de la mémoire, ce qui est en mémoire est bazardé (car présent dans le swap). S'il faut utiliser les données en mémoire, le swap est conservé tant qu'il n'y a pas d'écriture. Une écriture en mémoire invalide la partie du swap correspondante.


    Pour vider le swap (on désactive puis on réactive) :

    swapoff -a && swapon -a


    Pour vider les caches (en principe avant de vider le swap) :

    echo 3 > /proc/sys/vm/drop_caches


    Ou plus optimalement (désactiver, vider, réactiver) :

    swapoff -a && echo 3 > /proc/sys/vm/drop_caches && swapon -a


    Tu peux régler le (la ?) « swappiness », c'est à dire la tendance à mettre les données dans le swap (réglage de la pression indiqué plus haut).

    Afficher la valeur actuelle :

    sysctl vm.swappiness
    # ou
    cat /proc/sys/vm/swappiness


    Modifier jusqu'au prochain démarrage à la valeur 10 (très peu de mise en swap) :

    sysctl -w vm.swappiness=10
    # ou
    echo 10 > /proc/sys/vm/swappiness


    Modifier pour le prochain démarrage :

    cat > /etc/sysctl.d/mon-swappiness-perso.conf << 'HEREDOC'
    vm.swappiness = 10
    HEREDOC
    # puis application immédiate
    sysctl --load /etc/sysctl.d/mon-swappiness-perso.conf