MyTetra Share
Делитесь знаниями!
Что такое Flamegraph и как его читать
Время создания: 05.07.2024 13:58
Текстовые метки: flame, graph, flamegraph, понимание, чтение, данные, значение, обозначение, ось, оси
Раздел: Компьютер - Программирование - Компилятор GCC
Запись: xintrea/mytetra_syncro/master/base/17201771256g3nmf88ak/text.html на raw.github.com

Flame Graph – это визуализация иерархических данных трассировки стека профилированного ПО, которая была разработана инженером Netflix Бренданом Греггом для решения проблем с производительностью MySQL. Чтобы быстро и подробно понять потребление ресурсов ЦП вместо изучения большого количества текстовой информации, генерируемой обычными средствами профилирования и трассировки ПО, Брендан Грегг проследил вызовы функций ЦП и визуализировал их. Получившиеся графики были похожи на пламя с отслеживанием времени по оси Х. Чтобы снизить накладные расходы на трассировку функций, Брендан сделал выборку (профилирование) синхронизированным и изменил порядок выборки, чтобы максимизировать слияние кадров. Для повышения наглядности потребления ресурсов ЦП Брендан решил использовать только теплые цвета, чтобы показать занятость CPU.


Flame-график сортирует и агрегирует трассировки на каждом уровне стека, чтобы их количество отражало процент от общего времени, затраченного ЦП в этой части кода.

По оси X отображается заполнение профиля стека, отсортированное в алфавитном порядке, а по оси Y показана глубина стека, считая снизу от нуля. Каждый прямоугольник представляет кадр стека. Чем шире рамка, тем чаще она встречается на графике. Flame-графики строятся путем многократной выборки трассировки стека. Каждый вызов метода представлен полосой, длина которой пропорциональна тому, сколько раз она присутствует в выборке. Верхний край показывает, что находится на ЦП, а под ним — его происхождение.


Flame-графики могут представлять как статическую, так и динамическую (интерактивную) визуализацию, если они показываются как анимация друг за другом в течении времени.

Пример Flame-графика:



Данный график позволяет ответить на следующие вопросы:

  • Какие методы в настоящее время потребляют ресурсы ЦП?
  • Как потребление одним методом по сравнению с другими?
  • Какая серия вызовов в стеке привела к выполнению определенного метода?


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования