Дорогой ЛОР, совсем беда с профилированием си кода под Линукс.
Oprofile прекрасная тулзень, но она считает лишь чистое время проведённое внутри функции. В результате он мне выдаёт, что 70% времени потрачено в вызовах ядра линукса, 15% в вызовах операций над базой, а в каждой библиотеке логики приложения жалкие доли процента. И самая затратная по времени функция memcpy. А мне бы хотелось, чтобы было как в callgrind, время проведённое внутри функции приплюсовывалось к функции её вызвавшей. Может кто осилил все флаги этого профайлера и там можно сделать что-то похожее?
И чтобы два раза не вставать, совсем не получается профилировать мой продукт при помощи callgrind. Видимо напоролся на 12309. Падение производительности в 30-50 раз ещё можно пережить. Но система становится абсолютно неотзывчивой после запуска профилируемого теста через valgrind. Там происходит просто огромное количество операций над базой. А в top видно, что загрузка процессора/памяти не превышает 5%. Но линукс практически зависает. Ввод одного символа в консоли происходит раз в 20-30 минут, top обновляется так же часто.
Все остальные тулзы для профилирования что я пробовал совсем не умеют многопроцессные/многопоточные приложения.
Может кто сталкивался с похожим и победил?