Journal Gestion de la mémoire sous Firefox 1.5

Posté par  .
Étiquettes :
0
10
jan.
2006
Tristan Nitot nous explique sur son blog [1] comment firefox 1.5 utilise la mémoire pour son système de cache des pages consultées (ou bfcache pour les intimes).

En gros, on y apprend que Firefox utilise la mémoire s'il y en a, et donc prends ses aises. Le système bfcache permet de prendre une photo des pages consultées pour les réafficher très rapidement.

Vous trouverez plus d'explication sur le web de pascal [2]. On y apprend alors que le nombre de photos stockées en mémoire dépend de la mémoire disponible sur le PC. Et qu'il est également possible de modifier ce nombre de photos (via about:config). Un cliché fait 4Mo en moyenne, et le nombre de cliché dépend également du nombre d'onglet. En gros, si votre firefox est configuré pour garder 2 clichés par pages (stocke donc en mémoire les 2 dernières pages consultées), alors vous devez multiplier ce nombre par le nombre d'onglet ouvert.


[1] http://standblog.org/blog/2006/01/10/93114599-occupation-mem(...)

[2] http://www.chevrel.org/fr/carnet/index.php?2006/01/05/545-pa(...)
  • # Mouais

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

    Si je lance FF, consulte plein de sites, et lance d'autres logiciels après, FF a déja pris ses aises, boom c'est les autres applis qui en souffre...

    D'après ce que dit T. Nitot, FF ne verifie jamais qu'on en veut maintenant de la memoire a un instant t+1, donc c'est galere, faut le fermer de temps en temps pour "reinitialiser" son algorithme...

    J'espere que FF fait des tests parfois, mais j'ai des doutes :)
    • [^] # Re: Mouais

      Posté par  . Évalué à 5.

      Je sais pas comment vous faites pour faire exploser la consommation de RAM de FF, sérieux...

      Je le démarre toujours avec 7 onglets ouverts, donc 3 se rechargent toutes les minutes (des webmails) et DLFP sur lequel je navigue pas mal durant la journée. Compter en plus de cela toute un floppée d'onglets issus de recherches Google, je suis quasiment chaque jour avec minimum une 15aine d'onglets ouverts quand je pars du taf. Et la conso de mémoire ne dépasse jamais les 60Mo!

      Et les autres applis lancées (généralement Eclipse, TOAD, IE et TeXnicCenter, toutes en même temps) ne souffrent jamais...

      /me, très satisfait de son FF qui ne lui bouffe "que" 60 de ses 512 Mo de mémoire...

      "Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).

      • [^] # Re: Mouais

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

        On entend effectivement souvent des plaintes quand à la consommation mémoire de Firefox, mais j'ai l'impression que les coupables sont, comme le dit Tristan, plus du coté des extensions ou des plugins (en particulier le plugin flash) que de Firefox lui même.
        • [^] # Re: Mouais

          Posté par  (Mastodon) . Évalué à 5.

          Je confirme avoir vu de gros pompages de RAM et de CPU avec le plugin java, même après avoir tué les pages avec des applets...
          Ca, ça force à fermer firefox :(

          Yth.
        • [^] # Re: Mouais

          Posté par  . Évalué à 3.

          Oui je m'en rends assez compte sur mon portable d'ailleurs ... Des qu'une page a une anim flash, le processeur se met a chauffer plus et donc, le ventilateur tourne plus vite (centrino avec acpi ...)
        • [^] # Re: Mouais

          Posté par  . Évalué à 3.

          Je confirme, personnellement je fais un usage intessif des onglets et même avec 40 à 50 onglets d'ouverts je ne dépasse jamais les 80 à 90Mo, ce qui fait un raisonnable 2Mo par onglet.
          Par contre avec un ou deux onglets d'ouverts qui ont du flash à l'interrieur j'arrive souvent vers les 110-120Mo :(

          Conclusion : Je ne visite pas couramment les sites où il y a du Flash.
        • [^] # Re: Mouais

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

          C'est pas tres compliqué à tester d'ailleurs, ca demande juste un peu de temps: créer un nouveau profil, tester sans plugins, extension, etc.

          Un bon billet d'un développeur mozilla sur comment faire des bon bug reports concernant tous les problemes de memory leak: http://dbaron.org/log/2006-01#e20060110a

          A lire absolumment. Certains tendent amha à oublier que firefox est libre: ca n'excuse peut etre pas ses bugs, mais cela n'empeche pas que vous pouvez contribuer, en prenant du temps pour reporter des bugs les plus complets possibles, en essayant de trouver quels sites posent probleme a firefox (voire meme pourquoi), etc. Meme sans renter dans les contributions au code en lui meme, il ya beaucoup à faire, et c'est AMHA bien plus gratifiant et interessant que de troller ici sur le sujet à longueur de journée.
      • [^] # Re: Mouais

        Posté par  . Évalué à 3.

        Firefox n'a pas du tout le même comportement sous Windows (trahi ici par IE et TOAD) que sous Linux avec X Window.
      • [^] # Re: Mouais

        Posté par  . Évalué à 2.

        Pour ma part, FF bouffe la mémoire aux alentours de 600Mo en 2-3 heures de temps. Le seul qui peut à la limite prendre de la mémoire ce sont les graphes munin raffraichis toutes les 5min de tout le réseau.

        Mais bon je ne serai pas contre la possibilité de mettre une limite haute dans firefox.
        • [^] # Re: Mouais

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

          Tu cherches un peu...

          http://www.google.fr/search?q=firefox+limit+memory+usage

          Et hop:
          http://forums.mozillazine.org/viewtopic.php?t=172041

          type about:config into the location bar, press enter, right click any line, choose "new">"integer", paste this into the dialogue that appears:

          browser.cache.memory.capacity

          click okay, specify the amount in kb in the next dialogue that appears, restart firefox.


          http://discuss.extremetech.com/forums/3/1004292531/ShowPost.(...)
          http://fusion94.org/archives/2005/07/firefox_memory.html

          1)Type about:config into the location bar and press enter
          2)Right click any line to bring up a sub-menu
          3)Choose "new">"integer"
          4)paste this into the dialogue that appears: browser.cache.memory.capacity
          5)Next click Okay
          6)Specify the amount in kb (about 60000 should do) in the next dialogue that appears
          7)Restart Firefox and happy surfing.


          Faut-il traduire ?

          Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

          • [^] # Re: Mouais

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

            Oué mais bon pour madame Michu qui ne sait pas chercher sur google, encore moins traduire, et encore moins manipuler about:config, FF il fait ramer son PC comme un cul.
            Que FF se mette à l'aise dans la mémoire quand il y en a OK, mais il faudrait qu'il s'adapte en cours de route plutôt que d'être obligé de le limiter.
            • [^] # Re: Mouais

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

              Je suis d'accord que ça serait mieux si c'était indiqué dans l'interface de config (c'est bien indiqué pour les ressources cache-disque).

              Mais là je ne répond pas à Mme Michu, mais à Nicolas Salles, dans un journal sur LinuxFR. J'imagine qu'il connaît un peu google et peut se débrouiller avec 7 lignes d'anglais.

              Sinon, quand tu parles d'adaptation...

              Lorsque tu fait un malloc, ton appli récupère un bloc que la librairie C a demandé au système. Par contre quand tu fait un free, tu libères le bloc au niveau de la librairie C... mais pas au niveau de l'OS et de la mémoire virtuelle. Faudrais descendre plus bas vers les appels système de gestion du heap & Co.

              Comment savoir à quel moment il est censé libérer la mémoire (qui décide qu'une appli est plus prioritaire qu'une autre pour ce qui concerne l'utilisation mémoire ?). Ce genre de choses devait être dispo sur les OS des gros systèmes (genre MVS et VMS) dans des worksets, et ça doit encore se retrouver dans certains Unix proprios... qq'un connait ?

              Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

              • [^] # Re: Mouais

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

                Je vais prendre un exemple :
                garbage collector.
                Le programme indique qu'un objet est "libérable" (weak reference dans les langages de haut niveau), dans notre exemple une page web sauvegardé.
                L'OS prévient le garbage collector quand il a besoin de ressources. Le GC libère l'espace dont il n'a plus besoin (objets plus accessibles), et les objets libérables.
                Le programme test (référence null dans un langage de haut niveau) si l'objet existe au moment d'y accéder :
                if(obj == null)//plus dans le cache, le GC la libéré parcque besoin de mémoire
                obj = new ...
                else //dans le cache

                Normalement si le GC est bien foutu, il va éviter de libérer systématiquement la mémoire des objets libérables (puisqu'il pourra potentiellement les recycler, et parcque c'est pas nécessaire, ca sert à rien de bouffer du CPU), on va donc avoir un cache qui va grossir, et qui va se "vider" lorsque l'OS aura besoin de mémoire.

                Evidemment, quand on programme encore en C avec des malloc et des free c'est une autre pair de manche :)
                • [^] # Re: Mouais

                  Posté par  . Évalué à 7.

                  L'OS prévient le garbage collector quand il a besoin de ressources.

                  vraiment ?
                  • [^] # Re: Mouais

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

                    Pas de façon direct, mais de façon indirecte oui :
                    - "désolé je peux plus t'allouer de mémoire" (comprendre ca sature)
                    - "va en arrière-plan" (comprendre t'es pas prioritaire, y'a d'autres applis qui ont besoin de ressources)
                    - "endors toi" (comprendre qu'on s'occupe pas de toi)

                    On peut aussi imaginer que le GC vérifie la quantité de mémoire disponible de temps en temps et s'assure d'en garder en permanence un certain pourcentage.
                • [^] # Re: Mouais

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

                  C'est pas avec le principe que ça me gène.
                  C'est que pour le moment les OS communs (Windows, Linux) ne fonctionnent pas comme ça.
                  Y'a aussi que ça n'est pas si simple (fragmentation, taille des pages vs taille des blocs alloués par le programme...).

                  Dans le genre réclamation mémoire, il y avait la gestion des handlers sur Macintosh (pré-MacOSX), où tu pouvait indiquer un handler mémoire comme purgeable, et à ce moment l'OS pouvait le libérer s'il était un peu court en mémoire - comme tu l'indiques. Bon, c'est vrai que toutes les applis se partagaient la mémoire... et qu'il n'y avait pas de swap, pagination & Co.

                  Et pour malloc et free... ça fait quand même pas mal d'applications qui sont basées dessus.

                  Q? Sous linux y'a pas moyen de lui coller un ulimit juste pour le process firefox ?

                  Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

                  • [^] # Re: Mouais

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

                    C'est que pour le moment les OS communs (Windows, Linux) ne fonctionnent pas comme ça.
                    Pas les OS, mais les machines virtuelles associés à un GC oui. Utiliser le GC pour faire un cache qui s'adapte à la taille de la mémoire c'est un pattern courant. Mais tu peux très bien le simuler en C/C++, il me semble que c'est plus ou moins ce que fait Apache par exemple.
                • [^] # Re: Mouais

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

                  C'est bien gentil de me moinsser de la sorte, mais en quoi mon commentaire est-il inutile ? J'ai dis une connerie ? J'essai de montrer qu'il existe des solutions "simples" avec un GC, et qu'un GC a un fonctionnement connu et donc reproductible en C standard (avec free/malloc), avec sans doute plus de boulot c'est sûr. Mais si un GC peut le faire, Firefox aussi, c'est pas à l'utilisateur de préciser en "dur" la limite mémoire de l'appli.
                  • [^] # Re: Mouais

                    Posté par  . Évalué à 1.

                    Si je me laissais aller je dirais que les intégristes du C et du malloc/free et du C++ avec new/delete sont allergique à toute idée de truc qui pourrait leur simplifier la vie ;)
                    • [^] # Re: Mouais

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

                      Ou : des personnes pensant qu'un malloc/new doit avoir un correspondant free/delete permetant de dire que le code est maitrisé, et non jeté en pature au premier bug venu...

                      Si on suis ton analogie, autant prendre Windows comme OS et IE comme navigateur : en effet, comme il y a l'antivirus derrire pour faire le ménage, pas la peine de prendre des choses plus sécurisés.

                      Comme tu es ici, je suppose que tu prefere utiliser Linux et FF (ou autre) pour ta sécurité/fiabilité, je suis surpris que tu ne souhaite pas faire la meme chose pour la programmation (qui est la base du systeme fiable que tu utilise, c'est en C sans GC...)
                      • [^] # Re: Mouais

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

                        Ou : des personnes pensant qu'un malloc/new doit avoir un correspondant free/delete permetant de dire que le code est maitrisé, et non jeté en pature au premier bug venu...
                        On peut aussi se dire :
                        On a envi d'avoir un programme pas buggué, et laisser ce boulot trop délicat qu'est la gestion mémoire a des algorithmes connus et bien implémenter.
                        Mais bon on sort du sujet. Moi je voulais juste dire que si un GC est capable de faire un cache adaptatif, Firefox doit être capable de le faire, même sans GC.
                      • [^] # Re: Mouais

                        Posté par  . Évalué à 2.

                        Il y a pleins de raisons qui font que j'utilise linux, et dire "que je préfère utiliser ff/linux" pour la fiabilité, c'est une extrapolation.

                        Je vois pas trop le rapport entre le libre et le garbage collecting. Avec l'antivirus non plus.

                        Si un outil permet une bonne gestion de la mémoire sans que le programmeur se prenne la tête et à de bonnes performances, le tout en se prenant moins la tête sur les bugs de mémoire, pourquoi pas ?

                        Cela dit, il peut quand même y avoir des problèmes de mémoire avec un gc, des fuites, des pointeurs NULL, etc.

                        Mais franchement, je ne vois le rapport ni avec la sécurité (qui pourrait être augmentée, en supprimant quelques problèmes de mémoires, donc quelques failles), ni avec un antivirus. Qui plus est, je suis pas dupe du fait que linux n'est pas théoriquement à l'abris des virus, plus sécurisé ou pas que windows, un virus qui tourne avec les privilèges d'un utilisateur et qui fait beaucoup de dégats, ca n'a pas grand chose d'impossible.

                        Bon, trève de troll, on sort effectivement pas mal du sujet.
          • [^] # Re: Mouais

            Posté par  . Évalué à 1.

            Merci,

            Sur le coup, je découvrais l'explication de l'utilisation de la mémoire par firefox et je n'avais pas encore pris le temps de chercher.
            J'aurai pu modérer davantage mes mots.
        • [^] # Re: Mouais

          Posté par  . Évalué à 3.

          Euh ca ce serait pas plutot a cause d'une extension mal concue ?
          Il ya un bug typique dans fx avec les addEventListener qui doivent etre enleves par les concepteurs des extensions eux-memes ....
        • [^] # Re: Mouais

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

          En plus de ce qui a été dit sur les extensions, les parametres cache/bfache tout ca, il ya aussi un probleme connu avec les images jpeg: https://bugzilla.mozilla.org/show_bug.cgi?id=259672

          Il yen a d'autres, mais celui la peut etre dévastateur avec plein d'images JPEG. Si tu veux faire avancer les choses, tu peux surveiller ton firefox avec xrestop, pmap, etc, et commenter/rapporter des bugs.
  • # Konqui

    Posté par  . Évalué à 6.

    Eh ben moi je suis passé à Konqueror: intégré à mon bureau, plus rapide au lancement et à la navigation, intégration de kpdf etc.
    J'aime bien FF pour ses extensions, mais sur une petite machine, c'est insupportable...
    • [^] # Re: Konqui

      Posté par  . Évalué à 10.

      Konqui s j t'adore

      Désolé ========> [ ]
      • [^] # Re: Konqui

        Posté par  . Évalué à 4.

        ça fait combien de temps que tu attends pour la placer celle-là ? ;-)

        parce que konqui, on en parle pas souvent :-P

        (bien vu quand même)
    • [^] # Re: Konqui

      Posté par  . Évalué à -3.

      et je suis sûr, de par ta façon à sortir du sujet initial, que ta distribution préférée est kubuntu
    • [^] # Re: Konqui

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

      J'aime bien : Le journal parle de FF et uniquement de lui, ne fait aucune allusion à quelque autre navigateur, et hop une tentative de troll en placant un autre navigateur Plus-mieux-bien-que-FF-qui-dechire-tout-et-est-le-mieux-pour-tout-le-monde.

      J'adore Linuxfr pour ca :-D

      PS : pour alimenter le troll, FF me parait bien plus leger que Konqueror, en effet pour Konqueror faut lancer une bonne partie de KDE quand meme, c'est pas rien (ben oui, il y a des gens qui utilise autre chose que KDE, donc pour eux Konqueror est super-lourd... Donc lacher un "Konqueror c'est plus rapide au lancement" sans preciser dans quelles conditions, désolé mais c'est faux sans préciser que tu as lancé KDE avant. Ca depend de ce que tu as lancé avant)
      • [^] # Re: Konqui

        Posté par  . Évalué à 4.

        Absolument.
        Mais il me semble que l'atmosphère est un peu tendue ici :)
        On ne peut plus donner son avis sans se faire traiter de troll vicieux...
        Ce que j'aurais du rajouter, c'est "comme j'utilise KDE malgré ma petite machine, ... etc."
        Il commence à falloir prendre beaucoup de précautions avant de poster, c'est désagréable...

        Mais bon si tu insiste on peut s'enfoncer dedans : konqui au moins il passe le test acid2 ...

        bon ok je sors -> [ ]
  • # Allocation de 500Mo de RAM pendant 30 seconde à l'ouverture d'une page

    Posté par  . Évalué à 2.

    Moi qui suis adepte de la 50aine d'onglets ouverts, je souffre particulièrement de la gestion mémoire de cette nouvelle version.

    Sous Windows(sic) la consultation du site de Dag Wieers sous FF 1.5 affole complètement le gestionnaire des tâches.
    Le système devient inopérant pendant 30 longues secondes.
    En observant la capacité mémoire on observe une allocation de 500 Mo pendant 30 secondes puis un retour à la normale.

    Faites le test vous-même...
    DAG: Red Hat/Fedora RPM package listing
    http://dag.wieers.com/packages/
  • # XML

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

    Fichier XML de 30 Mo, pas très complexe, juste très long. Je visualise par accident dans Firefox (qui se lance pour l'occasion), ça rame, je ferme Firefox, je jette un coup d'oeil à la consommation de RAM : hop, 400 Mo libérés. :-)

Suivre le flux des commentaires

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