perf report показывает 38% в memmove, но непонятно, кто его вызывает
Сервис тормозит под нагрузкой. Сняли профиль:
$ perf record -p 4121 -- sleep 30
$ perf report
38.12% service libc.so.6 [.] __memmove_avx_unaligned_erms
9.40% service service [.] Parser::feed
6.02% service libc.so.6 [.] malloc
memmove в коде сервиса напрямую не вызывается. Как найти, откуда берутся эти 38%?
- Записать профиль с графом вызовов: perf record -g
- Пересобрать glibc с отладочными символами
- Добавить таймеры в каждую функцию сервиса
- Запустить сервис под Valgrind Memcheck
