Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Здравствуйте :)
Flame graph:
новый взгляд на 

старое профилирование
10 лет профессионального программирования
Python, JavaScript, C/C++, Perl, Java, PHP
В Яндексе с 2014 года
Характер нордич...
- О чем этот доклад?
- Профилирование?
Позволяет найти “узкие места” в вашем коде
Быстрее код - больше полезной работы за единицу времени
Хороший повод узнать, ч...
Форма динамического анализа программы
Основной способ - замеры:
〉 CPU
〉 Потребляемая память
〉 Частота/продолжительность вы...
- Что-нибудь для Python?
Сбор данных:
〉 cProfile/profile, hotshot, line_profiler
〉 guppy, Dowser, memory_profiler
〉 valgrind, SystemTap, DTrace, perf
В...
- Так в чем проблема?
Огромный объем данных на реальных системах
Сложность со сбором данных по кластеру
Невозможность увидеть общую картину
12
С...
13
Суровая реальность
14
Суровая реальность
- “Flame graph”?
Flame graph.

Кажется, здесь стоит пояснить.
Flame graph.

Кажется, здесь стоит пояснить.
- …Что это?
Метод визуализации собранных фреймов стека
Введены в обиход Бренданом Греггом (Brendan Gregg)
Помогают понять общую картин...
Каноничный формат вывода - SVG
Ось X - число появлений кадра стека среди всех семплов
Ось Y - глубина нахождения в стеке
Е...
20
Процесс построения
21
Шаг 1: сбор данных
22
Шаг 2: слияние стеков
23
Шаг 3: построение графика
- Примеры?
Сбор данных через python-flamegraph

https://github.com/evanhempel/python-flamegraph
Сэмплирование отдельным потоком каждые ...
26
Получившийся график
27
Получившийся график
28
Получившийся график
- А в динамике?
- Планы на будущее?
Свой набор инструментов для визуализации
Группы цветов для раскрашивания графика
Попробовать SystemTap / perf
“Full-stack ...
- Есть вопрос!
Спасибо :)
Борисов Кирилл
Разработчик ПО
Контакты
@lensvollensvol@yandex-team.ru
lensvol
“The Flame Graph”
http://cacm.acm.org/magazines/2016/6/202665-the-flame-graph
“FreeBSD 2014 Flame Graphs"
http://www.slides...
Flame graph: новый взгляд на старое профилирование
Upcoming SlideShare
Loading in …5
×

Flame graph: новый взгляд на старое профилирование

0 views

Published on

Все хотят знать, как выполняется их код. Многие догадываются, чем это можно измерить. И лишь немногие находят в себе силы продраться через результаты измерений. Проблема ещё более усложняется, если приложение исполняется в нескольких процессах, потоках или на разных серверах. Вал измерений захлестывает разработчика, и уже не видно конца...

В этом докладе мы попытаемся упростить все это с помощью визуализации, а именно — flame graph'ов, красивых и наглядных . Также вместе рассмотрим процесс сбора данных, их подготовку и на примерах поучимся читать получившиеся графики.

Published in: Software
  • Привет Кирилл. В 2016 году уже был доступен инструмент 0x из npm. У позволяет разделять код по языкам, раскрашивать, отображает оптимизированные и деоптимизированные вызовы кода и т.е. Обязательно посмотри его. Спасибо.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Flame graph: новый взгляд на старое профилирование

  1. 1. Здравствуйте :)
  2. 2. Flame graph: новый взгляд на 
 старое профилирование
  3. 3. 10 лет профессионального программирования Python, JavaScript, C/C++, Perl, Java, PHP В Яндексе с 2014 года Характер нордический, люблю поесть :) 4 О докладчике
  4. 4. - О чем этот доклад?
  5. 5. - Профилирование?
  6. 6. Позволяет найти “узкие места” в вашем коде Быстрее код - больше полезной работы за единицу времени Хороший повод узнать, что же происходит “под капотом” Отлично смотрится в резюме 7 Профилирование for fun & profit
  7. 7. Форма динамического анализа программы Основной способ - замеры: 〉 CPU 〉 Потребляемая память 〉 Частота/продолжительность вызовов функций Методы: 〉 Статистический профайлинг (сэмплирование) 〉 Инструментирование 8 Минутка информации
  8. 8. - Что-нибудь для Python?
  9. 9. Сбор данных: 〉 cProfile/profile, hotshot, line_profiler 〉 guppy, Dowser, memory_profiler 〉 valgrind, SystemTap, DTrace, perf Визуализация: 〉 pycallgraph, gprof2dot 〉 RunSnakeRun, KCacheGrind, SnakeViz 10 Что мы имеем
  10. 10. - Так в чем проблема?
  11. 11. Огромный объем данных на реальных системах Сложность со сбором данных по кластеру Невозможность увидеть общую картину 12 Суровая реальность
  12. 12. 13 Суровая реальность
  13. 13. 14 Суровая реальность
  14. 14. - “Flame graph”?
  15. 15. Flame graph. Кажется, здесь стоит пояснить.
  16. 16. Flame graph. Кажется, здесь стоит пояснить. - …Что это?
  17. 17. Метод визуализации собранных фреймов стека Введены в обиход Бренданом Греггом (Brendan Gregg) Помогают понять общую картину выполнения приложения Работает с разными формата результатов (perf, DTrace и т.д.) 18 Flame graph
  18. 18. Каноничный формат вывода - SVG Ось X - число появлений кадра стека среди всех семплов Ось Y - глубина нахождения в стеке Есть различные варианты: CPU (Off-CPU), память, IO и т.п. 19 Технические детали
  19. 19. 20 Процесс построения
  20. 20. 21 Шаг 1: сбор данных
  21. 21. 22 Шаг 2: слияние стеков
  22. 22. 23 Шаг 3: построение графика
  23. 23. - Примеры?
  24. 24. Сбор данных через python-flamegraph
 https://github.com/evanhempel/python-flamegraph Сэмплирование отдельным потоком каждые 100 мс Подключение в файле конфигурации gunicorn, 
 обработчики post_worker_init и worker_int Результаты сбрасываются при получении SIGQUIT воркером
 и объединяются 25 Case study: yandex-tinyurl
  25. 25. 26 Получившийся график
  26. 26. 27 Получившийся график
  27. 27. 28 Получившийся график
  28. 28. - А в динамике?
  29. 29. - Планы на будущее?
  30. 30. Свой набор инструментов для визуализации Группы цветов для раскрашивания графика Попробовать SystemTap / perf “Full-stack flame graph” 31 Планы на будущее
  31. 31. - Есть вопрос!
  32. 32. Спасибо :)
  33. 33. Борисов Кирилл Разработчик ПО Контакты @lensvollensvol@yandex-team.ru lensvol
  34. 34. “The Flame Graph” http://cacm.acm.org/magazines/2016/6/202665-the-flame-graph “FreeBSD 2014 Flame Graphs" http://www.slideshare.net/brendangregg/freebsd-2014-flame-graphs “Blazing Performance with Flame Graphs” http://www.youtube.com/watch?v=nZfNehCzGdw BIG DATA #9 «Анализ производительности Хадуп-кластера» https://www.youtube.com/watch?v=Yh9KxQ3fKy0 35 Ссылки и дополнительные материалы

×