2010-11-24 37 views
4

On m'a demandé de regarder une application interne écrite en C++ et fonctionnant sous Linux, qui a quelques difficultés. Périodiquement, il y aura une grande quantité de fautes de page majeures (~ 200k), ce qui fera augmenter le temps d'exécution de l'horloge murale de x10 +, alors sur certaines courses il n'en aura pas.Identification d'une cause majeure de panne de page

J'ai essayé d'isoler différentes parties du code mais j'ai du mal à répéter les erreurs de défaut de page lors du test.

Quelqu'un at-il des suggestions pour obtenir plus d'informations sur l'application/Linux sur les fautes de la page principale? Tout ce que j'ai vraiment est un total.

Répondre

3

Vous pouvez envisager Valgrid, décrit sur la page d'accueil comme:

Valgrind est un cadre d'instrumentation pour la construction d'outils d'analyse dynamique. Il existe des outils Valgrind capables de détecter automatiquement de nombreux bogues de gestion de la mémoire et de thread, et de profiler vos programmes en détail. Vous pouvez également utiliser Valgrind pour créer de nouveaux outils.

Plus précisément Valgrind contient un outil appelé Massif, pour lequel la liste suivante (paraphrase) est donnée dans le manuel:

Massif est un profileur de tas. Il mesure la quantité de mémoire utilisée par votre programme. [..]

Le profilage Heap peut vous aider à réduire la quantité de mémoire utilisée par votre programme. Sur les machines modernes avec la mémoire virtuelle, cela fournit les avantages suivants:

  • Il peut accélérer votre programme - un programme plus petit va mieux interagir avec les caches de votre machine et éviter la pagination. Si votre programme utilise beaucoup de mémoire, cela réduira les risques d'épuisement de l'espace de permutation de votre machine.

+0

J'ai juste essayé massif et son doesnt semblent signaler quoi que ce soit au sujet de (grand) défauts page :( – matt

+4

J'ai trouvé un autre outil valgrind 3e appelé « pagein » que presque fait ce que je voulais, mais pas tout à fait – matt