👁 Когда сервис начинает потреблять CPU, многие идут в логи или пытаются воспроизвести проблему локально. Это долго и часто бесполезно. В Linux можно прямо на проде посмотреть, где именно процесс тратит CPU, без пересборки и без остановки — через perf.
📝 Снятие профиля CPU с работающего процесса
perf позволяет за несколько секунд собрать статистику по функциям, где процесс реально проводит время. Ты сразу видишь «горячие» функции в реальном времени — будь то системные вызовы, libc или твой код.
sudo perf top -p 12345
📝 Запись профиля для последующего анализа
Если нужно более детально разобрать поведение, можно записать профиль и потом изучить его. Флаг -g добавляет call stack, что позволяет понять не только где CPU тратится, но и по какому пути вызовов.
sudo perf record -p 12345 -g -- sleep 10 sudo perf report
📝 Быстрый flamegraph без пересборки приложения
Для наглядности можно собрать flamegraph и увидеть узкие места визуально. Это даёт чёткое понимание, какие функции реально «горят» под нагрузкой.
sudo perf script > out.perf stackcollapse-perf.pl out.perf > out.folded flamegraph.pl out.folded > flame.svg
❗️ perf — один из самых мощных инструментов Linux, который часто игнорируют. Он позволяет за минуты найти реальные узкие места CPU, не трогая код и не останавливая прод.
tags: #linux #полезно #оптимизация



