Когда сервис забирает почти весь
CPU, важно быстро понять, где именно тратится время — в user-коде, ядре, библиотеках или на блокировках.Найти
PID:pgrep -f myservice
Горячие функции в реальном времени:
sudo perf top -p <PID>
Показывает, какие функции потребляют больше всего
CPU прямо сейчас.Короткий профиль для детализации:
sudo perf record -F 99 -p <PID> -- sleep 15
sudo perf report
Небольшой профиль даёт репрезентативный срез и позволяет проваливаться в стеки.
User-space-only + стеки:
sudo perf record -F 99 -p <PID> -e cycles:u --call-graph=dwarf -- sleep 15
sudo perf report
Фокус на пользовательском коде и детальные стеки вызовов для точной локализации.
Проверка системных вызовов:
sudo strace -p <PID> -tt -T -f -o /tmp/strace.log
Нагрузка по потокам:
top -H -p <PID>
Помогает обнаружить конкретный поток, создающий основную нагрузку.
Права на профилирование:
cat /proc/sys/kernel/perf_event_paranoid
🔥 Этот набор команд позволяет без остановки сервиса быстро понять, куда именно уходит
CPU, и принимать решения на основе объективного профиля.🚪 Linux Ready | #практика