Forum Linux.général Eliminer les fuites mémoires

Posté par  .
Étiquettes :
0
9
sept.
2004
Bonjour,

J'ai installé un logiciel d'analyse de logs (Sawmill 7) sur mon serveur Debian 3.0r2 et je suis quasiment sur que celui-ci me génère d'énormes fuites mémoires.

En fait quand je lance la génération des rapports d'activité (plusieurs centaines de Mo de logs) Sawmill occupe jusqu'a 80% de ma mémoire RAM (soit environ 750 sur 900 Mo de RAM). Je vois sa grâce au commandes top et free. Une fois mes rapports générés, je n'ai plus besoin du logiciel, je le tue pour récupérer ma mémoire (kill xxx). Mais la il y a près de 500 Mo qui restent "occupés" par je ne sais quoi.

C'est pourquoi je cherche un logiciel pour voir le contenu de ma mémoire RAM et qui puisse la "nettoyer". En effet, je ne suis pas sur à 100% que cette perte de mémoire soit due au logiciel car je ne vois pas la mémoire prise par le noyau.

J'ai également remarqué que ntop3.0 remplit ma mémoire RAM au fur et à mesure (10ko/s). Est ce normal ?
  • # Gimp, profession nettoyeur

    Posté par  . Évalué à 3.

    ouvre GIMP,
    crée une image 4000x4000,
    joue avec les filtres,
    ferme GIMP.

    :)

    Est-tu sûr que la mémoire est occupée, et non occupable ? Il est fort probable que les données soient toujours là "juste au cas où" mais que la mémoire soit disponible cependant.
    • [^] # Re: Gimp, profession nettoyeur

      Posté par  . Évalué à 0.

      1) C'est un serveur de prod, je n'ai pas d'environnement graphique et donc forcément je ne peux pas installer gimp

      2) Il est possible que la mémoire soit toujours disponible. Mais dans ce cas, comment je fais pour savoir quelle quantité de mémoire est disponible ?

      3) y a t-il d'autres logiciels que top et free pour gérer la mémoire sous linux (en mode console) ?
      • [^] # Re: Gimp, profession nettoyeur

        Posté par  . Évalué à 3.

        2) Il est possible que la mémoire soit toujours disponible. Mais dans ce cas, comment je fais pour savoir quelle quantité de mémoire est disponible ?

        $ free
        (ou cat /proc/meminfo)

        3) y a t-il d'autres logiciels que top et free pour gérer la mémoire sous linux (en mode console) ?

        Valgrind ?
        • [^] # Valgrind

          Posté par  . Évalué à 1.

          Merci pour Valgrind. J'ai fais une recherche sur Google, ça à l'air pas mal. Je le testerai des que j'ai un peu plus de temps.
        • [^] # Re: Gimp, profession nettoyeur

          Posté par  . Évalué à 3.

          Encore quelques précisions:

          1) lance « xosview ». Tu auras, parmis d'autres infos, l'état de ta RAM et tu y verras clairement ce qui est réellement occupé, ce qui relève du buffer, ce qui est en cache (la majorité de la RAM occupé), c'est-à-dire marqué comme utilisable si besoin (donc libre), et la RAM réellement vide.

          2) Récupère la dernière version de valgrind ( http://linuxfr.org/2004/09/01/17137.html(...) ), compile-le, installe-le en bonne et dûe forme, puis lance:

          $ valgrind --tool=memcheck --leak-check=yes tonprogramme

          Tu auras un compte-rendu de l'état des fuites mémoire en fin de rapport.

          Bon courage.
          • [^] # Re: Gimp, profession nettoyeur

            Posté par  . Évalué à 1.

            Merci :)

            J'essaierai sa demain dès que j'ai un peu de temps parce que la faut que je retourne bosser sur Sawmill.
        • [^] # Valgrind

          Posté par  . Évalué à 1.

          Merci pour Valgrind. J'ai fais une recherche sur Google, ça à l'air pas mal. Je le testerai des que j'ai un peu plus de temps.
          • [^] # Re: Valgrind

            Posté par  . Évalué à -1.

            oups. petite erreur de manip. faut dire que le système de commentaire est pas très intuitif...
      • [^] # Re: Gimp, profession nettoyeur

        Posté par  (site web personnel) . Évalué à 4.

        1) Sans Gimp (mais avec libgd pour Perl), tu dois pouvoir arriver à un résultat similaire comme ça:
        perl -e 'use GD; $img = new GD::Image(4000, 4000)'
        mais 4000*4000 ça fait pas tant que ça.

        2) Normalement si le programme ne tourne plus la mèmoire est belle et bien libérée mais elle est peut-être "cachée" (la colonne "cached" de free(1)), ce qui veut dire qu'elle sera réellement libérée quand tu en aura besoin mais en attendant le système conserve ce qu'il y a dedans au cas où tu déciderais de relancer le programme (histoire de pas avoir à le recharger entièrement).

        3) vmstat(8) est ton ami.

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: Gimp, profession nettoyeur

          Posté par  (site web personnel) . Évalué à 2.

          Encore mieux :op
          perl -eMGD 'new GD::Image(4000, 4000)'

          pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: Gimp, profession nettoyeur

          Posté par  . Évalué à 1.

          free -m:
          total used free shared buffers cached
          Mem: 878 749 129 0 2 678
          -/+ buffers/cache: 68 810
          Swap: 1908 67 1840

          Il y a donc 678Mo de cache ! Merci pour tes explications Krunch, je n'avais jamais entendu parler ce système de cache. D'ailleurs quand tu dis que la mémoire est "caché", tu veux dire qu'elle est "mise en cache" c'est sa ?

          En regardant dans le gestionnaire de tache d'un PC sous Windows, je me suis aperçu qu'il y avait aussi une section 'cache système' en dessous de la mémoire RAM disponible. Ce cache est-il similaire à celui de Linux ?

          Sinon j'ai bien perl 5.8 mais je n'ai pas la GD perl d'installée. Merci quand même.
          • [^] # Re: Gimp, profession nettoyeur

            Posté par  (site web personnel) . Évalué à 2.

            D'ailleurs quand tu dis que la mémoire est "caché", tu veux dire qu'elle est "mise en cache" c'est sa ?
            oui

            En regardant dans le gestionnaire de tache d'un PC sous Windows, je me suis aperçu qu'il y avait aussi une section 'cache système' en dessous de la mémoire RAM disponible. Ce cache est-il similaire à celui de Linux ?
            J'en sais rien, je suppose que oui.

            pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Cache & buffer

    Posté par  (site web personnel) . Évalué à 1.

    regarde le free -m regarde les trois premieres lignes
    exemple chez moi:
    total used free shared buffers cached
    Mem: 724 300 423 0 42 118
    -/+ buffers/cache: 140 584
    Bon 300Mo d'utilisé ca fait beaucoup pour juste Kde xchat et konqueror et konsole c'es ca?
    Bon ben t'as mal lu ca c'est au total avec le cache et tout le bordel
    Exemple je fais un find / et je refais le free -m(bon il est pas encore terminé et j'ai la flemme d'attendre) ca donne donc:
    total used free shared buffers cached
    Mem: 724 359 364 0 82 118
    -/+ buffers/cache: 158 565
    59Mo utilisé pour un find??
    Ben nan c'est parce que y a plus de truc qui sont passé dans les buffers (par contre je connais tjs pas la dif avec le cache en fait mais bon:)
    Donc si t'as lu les logs en entier ben c normal que ca fasse ca
    sinon pour ntop3.0 pas la moindre idée fait un valgrind dessus et reporte le bug :)

Suivre le flux des commentaires

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