своем приложении профилировать потребление оперативной памяти, как потребление фиксировать всего приложения, так и желательно иметь возможность видеть потребление конкретной функции. valgrind в данном случае не поможет, потому что нужна рантайм аналитика и желательно без дополнительных приложений.. Есть мысли чтобы использовать jemalloc, но надо разобраться как получать с него статистику и возможно ли фиксировать потребление памяти по функциям? В качестве OS - это семейства UNIX: Linux, MacOS. В качестве компилятора, предпочтительно CLang LLVM.
Есть какие-то предложения, готовые решения?
@zamazan4ik ты вроде не так давно пытался нечто подобное решить?
мы используем валгринд с дебаггером. он позволяет остановить исполнение программы в любой момент и создать отчет. сравнивая два отчета, можно увидеть, что было выделено в памяти между двумя остановками
неудобно, так как может быть большая потеря производительности..
А что такое "потребление памяти по функциям"?
ну вот, например выполняется функция do_function(); мы можем замерить время через std::chrono, сколько потребуется на выполнение данной функции. но с потреблением памяти, дела идут сложнее.
Ну это можно сделать если стектрейсы в алокаторе анализировать
ну вот я и думаю, либо требуется писать свой аллокатор, либо попробовать как-то кастомизировать под это дело jemalloc или tcmalloc
Обсуждают сегодня