Re: Swap sans swap ?

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: guilde
Subject: Re: Swap sans swap ?
    Bonjour,

Le 27/11/2019 à 08:17, Frédéric a écrit :
> Hello,
>
> Depuis de nombreux mois (ça doit même se compter en années, maintenant),
> j'ai de gros soucis avec les accès disques de mes machines. Je sais que je
> ne suis pas le seul, mais je n'ai rien trouvé pour régler ce problème
> (j'ai posté sur le sujet plusieurs fois ici).
>
> Le souci c'est que les accès disques bouffent toutes les ressources : à un
> certain point, même la souris ne bouge plus ! C'est particulièrement
> sensible sur les accès au swap. Du coup, ça fait un moment que je l'ai
> désactivé (de tout façon, mon nouveau portable a un SSD, donc pas de swap).
>
> Mais, même sans swap, lorsque la mémoire est pleine, le système se met à
> utiliser le disque comme un malade !!! Comme s'il y avait du swap, en
> fait ! Du coup, le PC se fige, et si je ne veux pas attendre 1/4h, je suis
> obligé de le rebooter comme un sauvage :o(
>
> Quelqu'un peut-il m'expliquer ce que ce $&#*ù%$ de système fout lorsque la
> mémoire est pleine et qu'il n'a pas de swap ? Où écrit-il ? Pourquoi ne
> se contente--til pas de flinguer le programme qui demande de la mémoire
> alors qu'il n'y en a plus de disponible ? Au moins, je n'aurais qu'une
> appli de crashée, alors que là, c'est la totalité des applis que je suis
> obligé de flinguer...
>
> Merci de vos lumières.


    J'ai eu jusqu'il y a peu des problèmes assez semblables aux tiens,
et voici mes reflexions:

- J'avais un SSD assez ancien (64Go ...), et je suis presque sûr qu'il a
quelques problèmes hardware. En le retirant, j'ai résolu la plupart des
problèmes

- j'imagine que ton /tmp/ est en tmpfs, c'est à dire directement dans la
ram de la machine. Donc si un programme écrit comme un bourrin dans le
/tmp/, tu vas saturer ta ram. Donc il faut limiter la quantité max de
/tmp tu vas utiliser. Suivant comment tu l'as configuré, "man tmpfs" et
"/etc/default/tmpfs" , ou édit le /etc/fstab, avec notamment le "size=XX%"

- tu peux mettre un swap sur un SSD, mais je te conseille d'avoir un
"top" pour surveiller ce qu'il fait. "free" donne aussi des infos

- j'ai trouvé sur le net une petite commande qui te donne des stats sur
le swap, et notamment quelle quantité de swap utilise chaque programme :

find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk
-v FS=":" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END
{if(process["VmSwap"] && process["VmSwap"] != "0 kB") printf "%20s %10s
%-30s\n",process["VmSwap"],process["Pid"],process["Name"]}' '{}' \;|sort -n

Chez moi:

            10740 kB       1689 Xorg                         
            11908 kB       3288 WebExtensions                
            16728 kB       4140 java                         
            21688 kB       3148 firefox-esr                  
            24480 kB       7866 rpc.mountd                   
           149160 kB        942 mysqld                       

- j'ai un "top" en permanence ouvert, ce qui m'indique si la ram est
trop chargée. Il indique aussi (utilise les "<" et ">" pour changer
l'ordre de tri des lignes) quel programme est le plus consommateur de
ram. Donc si ta machine se trouve fortement ralentie, tu peux avoir une
idée de qui est le fautif

- sur un serveur (NFS/SMB) qui tourne en h24, j'ai observé que lorsqu'on
lui lisait/écrivait beaucoup de fichiers, le kernel migrait les
programmes en RAM pour les mettre en swap.

    Ceci, afin de libérer de la mémoire pour en faire du cache disque.

    C'est une bonne idée, mais cela fait ramer à mort les programmes qui
sont peu utilisés, car il faut beaucoup d'accès disques pour les
"sortir" du swap.

    Il y a un moyen de contrôler ce comportement : le
/proc/sys/vm/swappiness 
https://fr.wikipedia.org/wiki/Espace_d%27%C3%A9change#Noyau_Linux

    Un "cat /proc/sys/vm/swappiness" donne généralement 60 pour une debian

    Un "echo 20 > /proc/sys/vm/swappiness" va bien calmer l'utilisation
du swap

- enfin, pour ceux qui ont thunderbird, ce n'est pas ton cas, celui-ci a
un comportement assez étrange: Parfois, il se met à indexer les boîtes
email, ce qui fait des accès disques assez énormes, et ralentissent,
voir bloque, l'écriture des emails. Le déclenchement est assez
aléatoire, et forcement ce sont les grosses boîtes qui en pâtissent le
plus. Je n'ai pas encore trouvé de solution efficace.

    Cordialement,

                                                                       
                Olivier

-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!