Я должен выяснить, который часть программы Linux, которую я запускаю, берет сколько (или процент, или абсолютная) память. Я должен создать профиль нескольких таких программ, так, чтобы я мог идентифицировать некоторых более крупных потребителей памяти в моем коде и видеть, могу ли я оптимизировать их для использования меньше. Мне нужен он на платформе MIPS, и к сожалению, Valgrind не работает над MIPS.
Любая справка/указатели значительно ценилась бы.
Вы можете заключить все свои вызовы в free
и malloc
своими собственными функциями, в которых вы также указываете, например, в каком файле и в какой строке число сделано каждое распределение. Из этой информации легко увидеть, какая память и где используется.
Beside Valgrind, there exists a lot of other memory debugger/profiler. All the following seems to support MIPS (but I've not tried them on that architecture) :
jemalloc, CCMALLOC, mpatrol, NJAMD, Dmalloc, and even Google's own google-perftools.
Вы можете использовать Perftools Google для профилирования памяти. Проект предоставляет очень быструю, многопоточную реализацию malloc , профилировщик кучи , средство проверки кучи и профилировщик процессора.
На потребление памяти не должна сильно влиять архитектура базового процессора, поэтому вы можете выполнить профилирование памяти в x86 Linux. Да, возможно, это затронет абсолютный объем памяти, но, поскольку вы ищете больше относительных, чем абсолютных чисел, это должно сработать.
Тем не менее, это решение вряд ли будет подходящим вариантом, если сборка Linux x86 больше, чем перекомпилируйте прочь.