← Ко всем open source проектам

FlameGraph

brendangregg/FlameGraph

FlameGraph — набор скриптов Brendan Gregg для визуализации профилей выполнения в виде flame graph.

Форки 2,106
Автор brendangregg
Язык Perl
Лицензия Не указано
Обновлено 2026-06-27

Что это такое

FlameGraph — репозиторий Brendan Gregg со скриптами для построения flame graph. Такой график помогает увидеть, какие пути выполнения занимают больше всего времени или памяти.

Идея стала популярной в системной производительности, потому что вместо длинной таблицы функций человек видит форму нагрузки. Широкие блоки сразу показывают места, куда стоит смотреть в первую очередь.

Что внутри

В репозитории есть скрипты для сворачивания стеков из разных источников и генерации SVG. Поддерживаются данные из Linux perf, DTrace, SystemTap, Xcode Instruments, Xperf и других профилировщиков.

Типовой путь состоит из трех шагов: снять стеки, преобразовать их в folded-формат и сгенерировать SVG. Получившийся файл можно открыть в браузере, увеличивать фреймы и искать функции по регулярному выражению.

Как используют

FlameGraph применяют при расследовании высокой нагрузки CPU, утечек памяти, медленных запросов и неожиданных задержек. Он особенно полезен, когда непонятно, где именно программа тратит время.

Инструмент не заменяет профилировщик: он визуализирует уже собранные сэмплы. Поэтому качество результата зависит от того, как сняты данные и насколько репрезентативна нагрузка.

Пример

Пример показывает классический путь на Linux: записать профиль через perf, развернуть стеки и построить SVG-граф.

Построение flame graph

Команды снимают профиль, преобразуют стеки и создают SVG, который удобно открыть в браузере.

Язык: Bash
perf record -F 99 -a -g -- sleep 60
perf script > out.perf
./stackcollapse-perf.pl out.perf > out.folded
./flamegraph.pl out.folded > flamegraph.svg

Сильные стороны и ограничения

Сильная сторона FlameGraph — мгновенная читаемость. Даже большая система становится понятнее, когда горячие пути занимают больше визуального пространства.

Ограничение — интерпретация. Flame graph показывает, где накопились сэмплы, но решение все равно требует знания приложения, нагрузки и цены каждого изменения.

Контекст проекта

FlameGraph ведется в репозитории brendangregg/FlameGraph; публичная история проекта начинается 2011-12-16. Основной язык, который показывает GitHub, — Perl, лицензия — не указана. Есть отдельный сайт проекта: http://www.brendangregg.com/flamegraphs.html.

Для страницы каталога это важно как практический контекст: читатель видит не абстрактное название, а реальный проект с владельцем, лицензией, технической базой и открытой историей изменений.