Как профилировать использование памяти программы на C - PullRequest
6 голосов
/ 15 декабря 2009

Мне нужно выяснить, какая часть программы linux, которую я запускаю, занимает сколько памяти (в процентах или в абсолютном выражении). Мне нужно создать профиль из нескольких таких программ, чтобы я мог определить некоторые из более крупных потребителей памяти в своем коде и посмотреть, смогу ли я оптимизировать их для меньшего использования. Мне это нужно на платформе MIPS, и, к сожалению, Valgrind не работает на MIPS.

Любая помощь / указатели будут с благодарностью.

Ответы [ 4 ]

8 голосов
/ 15 декабря 2009

Кроме Valgrind, существует много других отладчиков / профилировщиков памяти. Кажется, что все следующее поддерживает MIPS (но я не пробовал их на этой архитектуре):

jemalloc , CCMALLOC , mpatrol , NJAMD , Dmalloc и даже собственный Google Google-perftools .

6 голосов
/ 15 декабря 2009

Вы можете обернуть все свои вызовы в free и malloc своими собственными функциями, в которых вы также указываете, например, в каком файле и на каком номере строки выполняется каждое выделение. Из этой информации легко понять, какая память используется где.

4 голосов
/ 17 декабря 2009
1 голос
/ 15 декабря 2009

Потребление памяти не должно сильно зависеть от базовой архитектуры процессора, поэтому вы можете выполнить профилирование памяти в Linux x86. Да, возможно, это влияет на абсолютные объемы памяти, но поскольку вы ищете больше относительных, чем абсолютных значений, это должно сработать.

Тем не менее, это решение вряд ли подойдет, если сборка Linux x86 займет больше времени, чем перекомпиляция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...