есть некий сервис на С++, который состоит из множества частей. Хотелось бы понимать в разные моменты времени, какие части приложения сколько выжрали оперативной памяти. То есть организовать достаточно детализированный профайлинг памяти для приложения.
Сейчас регулярно снимается стастика с аллокатора (jemalloc), но понятное дело, что это говорит только о ситуации для всего приложения.
Есть идеи, как подобное организовать?
Первое, что мне приходит в голову - разным частям приложения раздать разные аллокаторы и зафорсить по крайней мере для начала административно их использование в различных подсистемах приложения. Ну или свой аллокатор с какими-то метками для каждой части приложения, которые при аллоках\деаллоках будет заниматься подсчётом нужной статистики.
Почему не используются готовые утилиты профайлинга - они не дают нужной точности.
Если важно - С++14
Там у jemalloc есть особый режим профилировки, он выдаёт достаточно подробную инфу о том, кто сколько сейчас держит памяти, кажется с трейсами. Включается какими-то рантайм флагами