Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Проблема возникает тогда, когда заинлайненый код тормозит, а а стеке показывается, что тормозит другая функция. И ты ломаешь голову, какой же именно код тормозит)
Приходилось только несколько лет назад профилировать win32/64 приложения под VS. Вроде результаты добывались несложно и были адекватными.
Ломаю голову, пытаясь профилировать read-write блокировки (pthread_rwlock). Очень хочется узнать время ожидания на каждой блокировке, т.е. найти самую дорогую. Есть варианты?
echo 1 | sudo tee /proc/sys/kernel/sched_schedstats # надо разрешить сбор статов планировщика
sudo perf record -e sched:sched_stat_sleep -e sched:sched_switch -e sched:sched_process_exit -g --call-graph=dwarf -- ./a.out # a.out -- ваш бинарь, скомпиленный с дебаг символами (иначе стека не увидим)
# Ждём пока программа завершиться и perf выплюнет perf.data файл
sudo perf report # запускается tui'шка в которой можно посмотреть где эти евенты происходили
Особенности профилирования программ на C++