горячая точка - графический интерфейс для профилировщика перфоратора Linux - KDAB

  1. Что такое точка доступа?
  2. Чем не является точка доступа (пока)?
  3. Спасибо

После многих месяцев работы я очень рад наконец объявить о последнем проекте KDAB для широкой публики:   hotspot - графический интерфейс для Linux-профилировщика   ,   В последние годы я много использовал Linux Perf После многих месяцев работы я очень рад наконец объявить о последнем проекте KDAB для широкой публики: hotspot - графический интерфейс для Linux-профилировщика ,

В последние годы я много использовал Linux Perf. Это чрезвычайно мощный и полезный инструмент. Но его сложность делает его очень сложным в использовании. Вам нужно знать и включить немало параметров отчета о результатах, прежде чем результаты станут понятными. Чтобы обучать людей, я начал выступать на эту тему на различных конференциях. Кроме того, KDAB теперь также предлагает обучение Отладка и профилирование инструменты, с большим разделом по Linux перф. Наконец я начал способствуя вверх по течению чтобы сделать perf более удобным для моих нужд в качестве разработчика приложений на C ++.

Но все это время я думал: почему у нас не может быть подходящего графического интерфейса для Linux? Нечто похожее на KCachegrind уже было бы весьма полезно. И я знал, что я не единственный с таким желанием - за многие годы я слышал, как многие жалуются на отсутствие достойного графического интерфейса для Linux. К счастью, KDAB дал мне возможность исправить эту проблему. Сегодня я, наконец, достаточно уверен, чтобы выпустить первую версию горячей точки для широкой публики. Загрузите hotspot v1.0.0 с GitHub , это бесплатное программное обеспечение с открытым исходным кодом!

Что такое точка доступа?

В первую очередь, горячая точка является заменой перфотного отчета. Это графический интерфейс, который берет файл perf.data, анализирует и оценивает его содержимое, а затем отображает результат в графической форме. На скриншотах показаны наиболее важные текущие функции в действии:

По сравнению с отчетом о продуктах, у точки доступа есть следующие преимущества:

  • Интерактивный графический интерфейс с подсказками облегчает анализ данных различными способами. И вам не нужно перезапускать инструмент, чтобы переключаться между представлениями сверху вниз и снизу вверх. Вы также можете легко искать в представлениях символы или изменять порядок сортировки на лету.
  • В целом, мы стремимся сделать точку доступа максимально интуитивно понятной - это будет долгий путь, но уже вполне пригодный для использования. Мы всегда включаем встроенные кадры и показываем (в представлении вызывающего / вызываемого) исходный файл и информацию о строке. Просто откройте файл perf.data с помощью точки доступа, не нужно помнить магический отчет perf о вызовах -g srcline -s dso, sym, srcline --inline.
  • Кроме того, горячая точка имеет возможность отображать несколько событий в одном представлении, как показано на скриншотах выше. Например, когда вы записываете данные с циклами perf record -e, инструкциями, отчет perf будет отображать меню для выбора либо циклов, либо инструкций. Но это не показывает обе затраты бок о бок.
  • Агрегация сверху-вниз, снизу-вверх и вызывающий / вызываемый абоненты, как мы надеемся, более интуитивны в горячей точке. Я видел, как многие люди испытывают трудности с пониманием агрегации перф отчетов по умолчанию, которая представляет собой комбинацию представлений Caller / Callee и представления сверху вниз. Разделение Hotspot использует визуализации, известные из других инструментов, таких как KCachegrind, VTune или heaptrack, что делает его более привычным и понятным для новичков.
  • Встроенный флеймограф - особенность убийцы. Это легко самая важная особенность горячей точки. Я уже использовал это много раз, чтобы найти возможности оптимизации даже в больших базах кода.
  • Полная поддержка межмашинного анализа, необходимая для разработки встраиваемых систем. В отчете perf даже сегодня отсутствует надлежащая межплатформенная поддержка разматывания для анализа файла perf.data, записанного на 32-битной машине ARM на машине x86 (-64). Другие комбинации между aarch64 и x86 (-64) работают, но, по крайней мере, в моей повседневной работе мне все еще приходится много работать со 32-битными встроенными платами ARM, что делает отчет о работе практически бесполезным. Кроме того, отчет perf знает только один ключ командной строки --symfs для установки sysroot. Во многих ситуациях этого недостаточно, например, когда вы вручную развертываете скомпилированный код извне sysroot. Hotspot поставляется с четырьмя опциями для этой цели: --sysroot, --debugPaths, --appPath, --extraLibPaths. Взгляните на горячую точку --help для получения дополнительной информации, или обратитесь к официальному ПРОЧТИ МЕНЯ ,

В целом, я призываю вас попробовать это. Hotspot зависит от нескольких внешних библиотек, таких как elfutils, Qt 5.6+ и некоторых KDE Frameworks. В современных дистрибутивах это должно быть просто скомпилировать. Если у вас есть какие-либо проблемы, читать документацию и сообщать об ошибках, с которыми вы сталкиваетесь в трекер ,

Чем не является точка доступа (пока)?

До сих пор я сконцентрировался на том, чтобы сделать горячую точку хорошей заменой общепринятому сценарию использования отчетов о производительности. Но набор инструментов perf чрезвычайно большой и универсальный. Многие из более продвинутых процедур анализа еще не поддерживаются горячей точкой. В план на следующую версию точки доступа мы планируем добавить следующие функции:

  • Внепрофильное профилирование через точки трассировки планировщика, чтобы найти конфликт блокировки, спящие и время ожидания ввода / вывода
  • Визуализация событий на временной шкале для каждого потока (подтверждение концепции доступно в ветке wip / timeline)
  • Фильтрация по временным интервалам, выбранным на временной шкале
  • Расширенные возможности агрегирования и фильтрации, т.е.
    • Ядро процессора
    • процесс
    • нить
    • DSO
    • файл
  • Дальнейшее повышение удобства использования за счет добавления более контекстно-зависимой документации и информации
  • Непосредственно запустите perf запись из горячей точки, так что вам не нужно постоянно вводить perf --call-graph dwarf. Мой коллега Нейт работая над этим уже.

В долгосрочной перспективе я также рассматриваю вопрос о том, чтобы сделать точку доступа универсальным графическим интерфейсом для всех видов данных о производительности - например, она может стать основой анализа heaptrack данные.

Также обратите внимание, что точка доступа предназначена для автономного применения. У меня нет намерения интегрировать его в IDE. Если вы ищете такую ​​вещь, посмотрите на Анализатор использования ЦП QtCreator , Он имеет один и тот же бэкэнд с горячей точкой и имеет много одинаковых визуализаций, доступных в горячей точке.

Если вы заинтересованы в проекте и хотите помочь, пожалуйста, внесите свой вклад! Вы можете отправить патчи через GitHub тянуть запросы ,

Спасибо

Я хотел бы закончить это объявление, сказав спасибо нескольким людям, которые помогли мне довести этот проект до конца:

  • Мой работодатель KDAB, для того, чтобы выделить бюджет для таких проектов НИОКР и позволить мне опубликовать результат как FOSS
  • Мои коллеги из KDAB, которые внесли большой вклад в этот проект, дали мне ценные отзывы и заблаговременно сообщали об ошибках
  • Ульф Херманн из компании Qt, автор perfparser и анализатора использования процессора в Qt Creator. Без его предыдущей работы я был бы далеко от того места, где я сегодня. Надеюсь мой вклады вверх по течению восполнить это!
  • Всем людям, которые работали над Linux Perf на протяжении многих лет - удивительно видеть, насколько мощным он стал!
Милиан Вольф

создал инструменты Massif-Visualizer, heaptrack и hotspot, которые теперь широко используются для повышения производительности приложений на C ++ и Qt. Со-сопровождающий KDevelop IDE, в 2015 году он получил награду KDE Akademy Award за постоянную работу в этом направлении. Милиан имеет степень магистра физики и живет в Берлине. Свободно владеет английским и немецким языками.

Что такое точка доступа?
Чем не является точка доступа (пока)?
Но все это время я думал: почему у нас не может быть подходящего графического интерфейса для Linux?
Что такое точка доступа?