Forum Linux.général Fuite mémoire

Posté par . Licence CC by-sa.
Tags : aucun
1
4
juil.
2018

Bonjour,

J'ai de temps en temps des problèmes de mémoire vive qui se remplit progressivement sans que je réussisse à en trouver la cause. Typiquement, en ayant fermé toutes mes applications, j'ai actuellement 20% de la mémoire occupée (sur 12Gb), alors que si je fais la somme de l'occupation mémoire de tous les processus listés par htop, j'atteins difficilement 10%. Il y a donc 10% de la mémoire occupée par je ne sais quoi, et que je ne peux pas vider.

C'est particulièrement gênant quand je fais de longues séances d'utilisation d'application gourmandes en mémoire (calcul ou jeux) où après plusieurs jours il peut arriver que je perde 40% de la mémoire disponible. Évidemment, il suffit que je redémarre pour régler le problème, mais ce n'est pas très pratique et assez frustrant.

Avez-vous une idée de comment je pourrais trouver ce qui occupe ma mémoire comme ça ?

  • # « Occupée » ?

    Posté par (page perso) . Évalué à 6.

    Attention, « mémoire occupée » peut vouloir dire beaucoup de choses différentes sur un système moderne. Qu'as-tu utilisé pour obtenir tes chiffres ? Que donne la commande vmstat ?

    Et j'anticipe sur l'explication : en quoi est-ce problématique que ta RAM soit utilisée ;-) ?

  • # au hasard de cache des fichiers ?

    Posté par . Évalué à 4.

    c'est une erreur classique, avec top ou free,
    on te dit

                 total   used          free       shared     buffers     cached
    Mem:      32936844   31994344     942500    1037292    1129792   20247292
    -/+ buffers/cache:   10617260   22319584
    Swap:      2095096    1344632     750464

    on voit qu'il y a 32Go de memoire total
    donc 31Go occupés mais 20Go par du cache et 11Go par des buffers

  • # Imparable

    Posté par (page perso) . Évalué à 3.

    Ok, tu as acheté de la mémoire pour ton ordi mais tu aimerais que celui-ci ne l'utilisât pas; j'ai bon?

    Dans ce cas, une solution simple: sort une ou plusieurs barrettes de l'ordinateur et pose les sur ton bureau. Voilà, ton ordinateur ne les utilisera plus!

    :*)

    Plus sérieusement, il y a de la mémoire, le système est fait pour l'utiliser. Une grande partie peut être vidée au besoin par le noyau; ne t'inquiète pas.

    La gelée de coings est une chose à ne pas avaler de travers.

    • [^] # Re: Imparable

      Posté par . Évalué à 4. Dernière modification le 04/07/18 à 21:16.

      Ok, tu as acheté de la mémoire pour ton ordi mais tu aimerais que celui-ci ne l'utilisât pas; j'ai bon?

      Je pense qu'il veut certainement comprendre à quoi est utilisée cette mémoire.

      J'apprécie l'effort que tu as fait pour ne pas mépriser le posteur initial (j'ai cru que le début de ton commentaire était sérieux, jusqu'à ce que kje vois le smiley), cependant il aurait été judicieux de préciser que lorsque le système dispose de mémoire non utilisé par les processus en cours d'exécution, le noyau s'attribue la mémoire disponible pour améliorer les performances du système, et la libère lorsqu'une application a besoin de cette mémoire.

    • [^] # Re: Imparable

      Posté par . Évalué à 1.

      Le problème n'est pas en soi que la mémoire soit occupée quand je n'en ai pas besoin, c'est qu'elle reste occupée même quand j'en ai besoin et qu'elle est pleine.
      Il arrive de temps en temps que la mémoire soit pleine, alors même que je ne vois pas ce qui occupe 40% de la mémoire.

      • [^] # Re: Imparable

        Posté par . Évalué à 3.

        Est-ce que ton système utilise le cache ? Si oui, en effet tu as un soucis de mémoire. Si non, alors ça veut dire qu'il est encore en zone de confort.

        Envoie un exemple de commande "free" à un moment où tu estimes que c'est anormal.

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: Imparable

          Posté par . Évalué à 1.

          Le cache, c'est à dire le swap ? Dans ce cas, non. Si c'est juste la partie de mémoire consacrée au cache, oui mon système l'utilise.

          Pour l'instant ça va, si je veux avoir un exemple extrême (du type je suis obligé d'utiliser un tty pour tuer un processus tant l'interface freeze), il va falloir que j'attende.

          • [^] # Re: Imparable

            Posté par . Évalué à 2.

            Pardon j'ai mis cache, je voulais dire swap bien sûr. C'est le seul signe qui dit que ton système "n'a pas assez de RAM". Pour le reste, il se contente de :
            - allouer la RAM nécessaire aux nouveaux processus
            - allouer de la RAM supplémentaire aux processus qui le demandent (malloc)
            - utiliser à volonté du cache disque pour accélérer les transferts futurs

            En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

            • [^] # Re: Imparable

              Posté par . Évalué à 1.

              Je n'ai pas de swap sur mon ordinateur. Du coup, lorsque que la mémoire est pleine, il se met à freezer violemment.

              • [^] # Re: Imparable

                Posté par (page perso) . Évalué à 2.

                Essaie alors d'ajouter du swap, avec un swapfile déjà pour voir:
                https://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/

                La gelée de coings est une chose à ne pas avaler de travers.

                • [^] # Re: Imparable

                  Posté par (page perso) . Évalué à 4. Dernière modification le 06/07/18 à 02:25.

                  Tu es sûr que c'est un problème de mémoire ? Si ton système n'a plus de mémoire disponible et n'a pas de swap il devrait tuer des processus au lieu de freezer.
                  Pour voir la mémoire réellement disponible:

                  $ grep MemAvailable /proc/meminfo
                  

                  Pour vider les caches:

                  # echo 3 > /proc/sys/vm/drop_caches
                  
                  • [^] # Re: Imparable

                    Posté par (page perso) . Évalué à 3.

                    Si ton système n'a plus de mémoire disponible et n'a pas de swap il devrait tuer des processus au lieu de freezer.

                    Ce qui est fortement possible c'est que le système en manque de RAM vide les caches notamment des fichiers ce qui dégrade très très fortement la réactivité du système même s'il en reste encore un peu de mémoire disponible.

                    En tout cas cela m'est arrivé régulièrement jusqu'à que je décide d'allouer un peu de place pour la swap. Avec la swap il y a moins de vidage du cache ce qui améliore les performances tant qu'on a une consommation RAM "dynamique" raisonnable.

                    • [^] # Re: Imparable

                      Posté par (page perso) . Évalué à 2.

                      Clairement ne pas utiliser de swap peut poser pas mal de problèmes, je ne recommande pas. Pour éviter d'utiliser la mémoire swap il est préférable de modifier le paramètre vm.swapiness plutôt que de la désactiver.

                      • [^] # Re: Imparable

                        Posté par . Évalué à 1.

                        il y a aussi la solution zram qui compresse les données en mémoire vive plutôt que de recourir au swap sur mémoire non volatile.
                        Pour 12Go de RAM ça me donne 9Go de "swap" zram : c'est toujours ça de pris.

      • [^] # Re: Imparable

        Posté par (page perso) . Évalué à 2. Dernière modification le 05/07/18 à 23:02.

        Une sortie de free et vmstat quand ça va et quand ça ne va pas pourrait nous aider.

        La gelée de coings est une chose à ne pas avaler de travers.

  • # tmpfs /tmp

    Posté par . Évalué à 4.

    Tous est dans le titre

    Merci aux personnes qui mon aidé a trouvé des solutions pour essayer d’écrire sans faute d’orthographe.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.