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

Брендан Грег (Brendan Gregg), один из разработчиков DTrace, представил проект FlameGraph, одна из областей использования которого связана с выявлением узких мест, влияющих на производительность ядра Linux. FlameGraph создан как средство для наглядной визуализации проблемных мест в ядре, потребляющих наибольшее число процессорных ресурсов. Код проекта написан на языке Perl и открыт под лицензией CDDL.

В качестве исходных данных поддерживается сбор информации о состоянии системы через такие механизмы, как DTrace, perf_events и SystemTap. Практически, FlameGraph может визуализировать не только статистику работы ядра, но и данные о выполнении любых приложений, которые могут быть получены при помощи вышеотмеченных инструментов DTrace, perf_events и SystemTap. На графиках также могут быть проанализированы сетевые операции, файловый ввод/вывод, статистка выполнения процессов и другие данные. Результаты анализа генерируются в виде графика, экспортируемого в формате SVG.

Формирование графика производится в три этапа: накопление данных, сброс накопленной статистики и создание графика. Например:

   perf record -a -g -F 1000 sleep 60
   perf script | ./stackcollapse-perf.pl  out.perf-folded
   cat out.perf-folded | ./flamegraph.pl  perf-kernel.svg

Последний этап можно расширить, отфильтровав только интересующую информацию (например, статистику по потреблению CPU, работе ext4 или определённым системным вызовам):

   grep -v cpu_idle out.perf-folded | ./flamegraph.pl  nonidle.svg
   grep ext4 out.perf-folded | ./flamegraph.pl  ext4internals.svg
   egrep 'system_call.*sys_(read|write)' out.perf-folded | ./flamegraph.pl  rw.svg

Как правило в результате работы DTrace, perf_events и SystemTap накапливается большой объем данных. Обобщённую информацию можно получить при помощи команды «perf report», но результаты достаточно трудны для анализа, так как отчёт создаётся в текстовом представлении, как правило на нескольких страницах, которые невозможно сразу охватить взглядом и требуется сопоставление относительных процентов. В случае FlameGraph данные представлены на одном экране с выделением цветом проблемных мест и возможностью получения подробностей при наведении курсора на интересующую область.

Для сравнения, часть вывода «perf report»:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.