2010-01-22 1 views
0

Je veux voir est la fragmentation de la raison de l'augmentation de l'utilisation de la mémoire de mon serveur tordu. J'ai posté une question ici: How to find the source of increasing memory usage of a twisted server?Comment enregistrer toutes les allocations et désallocations de mémoire sur un programme?

Maintenant, ce que je vais faire est de visualiser le tas. J'ai trouvé un article: Memory fragmentation. La figure de tas dans cet article est quelque chose comme ce que je veux. Il n'est pas difficile pour moi de dessiner une telle figure avec matplotlib ou d'autres outils. Le travail le plus difficile est: comment enregistrer l'allocation de la mémoire et la désallocation?

Je sais que je peux modifier le code source de CPython, ajouter du code de journalisation dans omalloc.c et recompiler le Python, et utiliser le CPython modifié pour exécuter mon serveur. Mais cependant, je ne veux pas perdre de temps avec ça. Ensuite, je cherche des outils disponibles. Je sais qu'il existe un outil valgrind peut être utilisé pour détecter les fuites de mémoire, mais je ne sais pas comment enregistrer l'allocation et la désallocation. Je vois son memcheck peut détecter quelque chose comme:

  • incorrect lire
  • uninitialised
  • non valide sans

Mais ce n'est pas ce que je veux, tout ce que je besoin est:

  • Enregistrer chaque allocation et désallocation de mémoire avec l'heure, l'adresse et la taille

Mes questions sont les suivantes:

  1. Comment puis-je faire avec valgrind?
  2. Si je ne peux pas, devrais-je écrire un module pour cela?
  3. Ou y a-t-il de meilleurs outils pour y parvenir?

Merci.

+0

Avez-vous regardé dans Valgrind Massif? http://www.valgrind.org/docs/manual/ms-manual.html –

Répondre

0

Répondant à la question sur les outils alternatifs:

Je sais qu'il y est un outil « Pin », peut-être il vaut la peine de le vérifier: http://www.pintool.org/

Questions connexes