Nano Hash - криптовалюты, майнинг, программирование

Perf Tool Linux — без Call-Graph

Я пытаюсь использовать perf version 3.0.8 для профилирования моей встроенной системы Linux kernel version 3.0.8.

Я кросс-компилировал tools/perf, используя zlib и elfutils.

Чтобы ознакомиться с этим инструментом, я использую простой пример быстрой сортировки, скомпилированный с использованием опции -g.

Я запускаю perf record -F 99 -g -- ./qsort (скопировано из примера), а затем perf report --stdio, чтобы увидеть результаты своего профиля.

Это снимок вывода perf report -g --stdio:

No kallsyms or vmlinux with build-id f41dfb5606beda1d75171db69f1e9466cb4868ba was found
[hi3518_dsu] with build id f41dfb5606beda1d75171db69f1e9466cb4868ba not found, continuing without symbols
No kallsyms or vmlinux with build-id a0f9a05faf6bcfb72282a03e048b47e8a8c0f2ec was found
[hi3518_tde] with build id a0f9a05faf6bcfb72282a03e048b47e8a8c0f2ec not found, continuing without symbols

# Events: 256  cpu-clock
    #
    # Overhead  Command      Shared Object                  Symbol
    # ........  .......  .................  ......................
    #
        96.88%    qsort  qsort              [.] partition
         0.78%    qsort  [kernel.kallsyms]  [k] __do_softirq
         0.39%    qsort  [kernel.kallsyms]  [k] __wake_up_sync_key
         0.39%    qsort  [kernel.kallsyms]  [k] get_page_from_freelist
         0.39%    qsort  [kernel.kallsyms]  [k] __memzero
         0.39%    qsort  [kernel.kallsyms]  [k] div_s64_rem
         0.39%    qsort  [hi3518_tde]       [k] 0x58
         0.39%    qsort  [hi3518_dsu]       [k] 0x8154

Как видите, трассировки вызовов нет вообще. Мне действительно интересно глубоко изучить мою систему, и без трассировки вызовов эти результаты бесполезны.


Ответы:


1

Возможно, вам повезет с флагом -fno-omit-frame-pointer при компиляции программы, которую вы пытаетесь профилировать. У меня также возникают проблемы с работой графиков вызовов с производительностью во встроенной системе ARM.

25.07.2016
  • Уже сделано. Это не работает. Итак, я попробовал другую плату (другая SoC и более новая версия ядра), и волшебным образом она работает хорошо. Ясно, что проблема в моей производительности. Вероятно, у меня очень-очень старая версия ядра... Однако даже без опции -g я могу читать и использовать результаты анализа производительности. 27.07.2016

  • 2

    Я нашел решение. Запустите perf --call-graph dwarf -- ./qsort Убедитесь, что вы скомпилировали программу с символами отладки dwarf (флаг -g, -ggdb или -gdwarf). Кроме того, вам может потребоваться установить символы отладки для любых библиотек, которые вы используете в своей системе. https://fedoraproject.org/wiki/StackTraces показывает, как установить пакеты символов отладки для Fedora.

    Если команда perf не работает с --call-graph dwarf, вам может понадобиться скомпилировать perf с помощью libunwind в дополнение к elfutils.

    13.08.2016

    3

    Вероятно, моя предварительная версия действительно старая (или/и инструмент ядра). Я пробовал с другим соком (с более новым ядром и инструментом perf), и стек вызовов работает правильно. Однако даже без этой функции я использую этот инструмент с пользой.

    15.08.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..