👁 Бывает, сервис «тормозит», CPU вроде не забит, IO норм, но latency растёт. Часто причина — плохая работа с CPU cache (cache-miss), из-за чего процесс тратит время на ожидание памяти. Обычные метрики это не показывают, но в Linux можно посмотреть это напрямую через аппаратные счётчики.
📝 Быстрый анализ cache-miss и инструкций CPU
С помощью perf stat можно за несколько секунд понять, насколько эффективно работает код с точки зрения CPU. Это покажет количество промахов кэша, общее число инструкций и циклов CPU — базу для анализа производительности.
sudo perf stat -p 12345 -e cache-misses,cache-references,instructions,cycles sleep 5
📝 Интерпретация результатов
Если cache-misses высокий относительно cache-references — процесс плохо использует кэш и часто ходит в RAM. Высокое значение = плохая локальность данных, возможные проблемы со структурами данных или доступом к памяти.
cache-misses / cache-references
📝 Быстрое сравнение до и после оптимизации
Можно запускать perf stat до и после изменений, чтобы понять, реально ли стало лучше. Это особенно полезно при оптимизации Go/Python/C++ сервисов, где проблема не в CPU, а в памяти.
sudo perf stat -e cache-misses,cycles ./app
❗️ Многие «медленные» сервисы на самом деле упираются не в CPU, а в память. Если ты не смотришь на cache-miss — ты видишь только половину картины производительности.
tags: #linux #оптимизация #мониторинг


