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

20 марта 2012 года

Брендан Грег (Brendan Gregg), один из разработчиков DTrace, представил (Архивная копия от 10 января 2014 на Wayback Machine) проект 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":

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Инструментарий для наглядной оценки проблем с производительностью», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.