Comment obtenir la consommation de mémoire par thread d'un processus sous Linux? Je comprends que nous pouvons utiliser/proc/pid/tâche/tid/statm, mais cela n'aide pas mon cas. Tous les threads affichent la même valeur et sont identiques à ceux de PID.consommation de mémoire de niveau de thread de processus
Nous pouvons faire valgrind mais je ne cherche pas de lecture/écriture ou de fuites. Valgrind ne m'indiquera aucune information de niveau de fil.
D'autres suggestions?
EDIT: Comment profiler mon code? Combien de mémoire a été allouée dans quelle fonction/numéro de ligne, etc.?
Eh bien, sur le plan conceptuel, toutes les discussions ont accès au même pool de mémoire, alors ils utilisent tous la même quantité. Ce que vous voulez suivre est le nombre d'allocations par thread - et je ne pense pas que glibc ou le noyau le fasse. Et considérez: comment comptez-vous un bloc de mémoire alloué dans un thread et libéré dans un autre? –
Je peux écrire un wrapper au-dessus de malloc qui peut collecter des stats mais c'est difficile si je suis en train de profiler énormément de code avec beaucoup de malloc. – Jack
Que diriez-vous d'utiliser un wrapper autour de malloc qui appelle 'gettid (2)'? De cette façon, vous pouvez garder le même code appelant tout en gardant la trace du thread qui appelle le wrapper. –