2017-02-10 12 views
0

Я использую первичную запись в старой версии ядра на плате ARM. Версия ядра - 3.18.21-rt19Как использовать новый интерфейс с первичным инструментом с записью из более старой версии версии

Первичная версия на доске аналогична перфокарте 3.18.21.

Хотя я могу записывать и использовать функцию отчета на этом перфомансе, TUI для отчета по этой версии довольно ужасен/не существует. Вместо расширяемых разделов (в графическом режиме) он просто отображается как гигантский прокручиваемый список функций, с которыми очень сложно работать. Также по какой-то причине мои имена функций C++ не дезактивированы, поэтому их действительно трудно прочитать.

Можно ли как некоторые либо:

  1. Экспортируйте perf.data, созданные на этом старшем ядре ARM на x86 машину под управлением более новое ядро ​​и более новую версию перфорации и использовать отчет перфорации на указанная машина. Когда я пытаюсь это сделать (я запускаю на ядре 4.4.0-31-generic, работая с первичным версией 4.4.13), я теряю все символы, даже несмотря на то, что работающий отчет на ARM-машине показывает символы просто отлично (имена C++ все еще искажены). Я не уверен, что это только потому, что формат perf.data изменился между этими версиями ядра или если версия x86 просто не способна считывать данные, сгенерированные машиной ARM.

  2. Создайте более новую версию перфоратора (по крайней мере, переднюю часть) для моего старого ядра, которое выполняет дезакцию и предоставляет более новый TUI.

Изменение версии ядра на моей плате ARM для меня не является вариантом.

+0

Возможно создание более совершенного инструмента пользовательского пространства. Возможно, ваш перст был построен без TUI. Чтобы экспортировать perf.data на другую машину, вы должны использовать команду '' perf archive' (http://man7.org/linux/man-pages/man1/perf-archive.1.html), которая скопирует всю информацию о символах с помощью 'perf.data' (или попробуйте скопировать файлы с корневого fs или полного изображения root fs, так как' perf.data' после 'perf record' имеет только адреса инструкций, а не полные карты obejct/functions). – osgx

ответ

1

Экспорт perf.data

Экспорт из perf.data должен поддерживаться perf archive команды, проверьте человек парфюм-архива - http://man7.org/linux/man-pages/man1/perf-archive.1.html

perf-archive - Создать архив с объектными файлами с Build- ids найдено в файле perf.data

perf archive [file] 

Эта команда запускает perf-buildid-list --with-hits и собирает файлы с найденными buildids, так что анализ содержимого perf.data может быть возможен на другом компьютере.

Там нет примера использования перфорации архива в Perf руководстве: https://perf.wiki.kernel.org/index.php/Tutorial но упоминается в http://events.linuxfoundation.org/sites/events/files/slides/LinuxConJapan2015-DynamicProbes.pdf#page=22 «Что Buildid-кэш .. Это также позволяет анализировать perf.data от удаленной машины (перфорация-архив делает? что)»

Это может быть трудно использовать Perf с другой архитектурой (x86) рассверлить ARM файлы, так что вы, вероятно, можете попробовать некоторые системы ARM эмулятор (например, qemu/qemu-system-arm) с некоторыми недавними Ubuntu/руками или Линаро/руками iso или root (они должны иметь полнофункциональный perf).

Вы также можете попробовать загрузить лучшую версию утилиты perf (построенной вами или скопированной с ubuntu или linaro) на ваш совет. Инструмент для простого пользовательского пространства совместим с интерфейсом ядра perf_events в широком диапазоне версий ядра, и он может читать perf.data, записанный с использованием другой версии инструмента.

+0

Это похоже на правильный способ заставить его работать. Моя перформационная версия показывает архив как одну из доступных команд, но когда я запускаю первичный архив, он говорит: 'perf: 'archive' не является перманентной командой. См. «Perf -help». Вы имели в виду это? \t archive' – Rajiv

+0

Rajiv, Это странно, но я не вижу команды «архив» в первичном 'main()' и внутреннем [списке команд] (http://lxr.free-electrons.com/source/tools/perf /perf.c?v=3.18#L36), но есть скрипт 'perf-archive.sh' bash - попробуйте - http://lxr.free-electrons.com/source/tools/perf/perf-archive .sh? v = 3.18 (скачать с https://github.com/torvalds/linux/blob/master/tools/perf/perf-archive.sh). Вероятно, это может быть ошибкой в ​​документации перформанса (если только у нее есть документация). – osgx

+0

Мне удалось запустить perf-archive.sh. Я заметил, что в папке ~/.debug были только файлы для [kernel.kallsyms]. Поэтому, когда я использую файл архива на другом хосте и заполняю его папку ~/.debug содержимым архивного файла, первичный отчет может разрешать символы ядра. Я не уверен, как получить другие символы. perf-buildid-list --with-hits показывает записи типа '00000000000000000000000000000000000000000000/lib/libc-2.21.so' для всех записей, кроме [kernel.kallsyms] на главной плате AMR. Не знаете, где перформативный отчет на плате ARM может найти эти символы. – Rajiv