 | Сбор и обработка данных трассировки
Утилита PDT собирает данные трассировки, которые можно просматривать и анализировать при помощи утилиты Trace Analyzer. Для корректного сбора данных трассировки необходимо перекомпилировать приложение fft в соответствии с требованиями PDT.
Шаг 1. Сбор данных трассировки при помощи PDT
- Подготовьте make-файл для spu в соответствии с требованиями PDT, в зависимости от того, какой компилятор используется.
########### Modifying ~/FFT16M/spu/Makefile for gcc compiler ##########
#######################################################################
## Target
#######################################################################
#
PROGRAMS_spu:= fft_spu
LIBRARY_embed:= fft_spu.a
#######################################################################
## Local Defines
#######################################################################
#
CFLAGS_gcc:= -g --param max-unroll-times=1 -Wall -Dmain=_pdt_main
-Dexit=_pdt_exit -DMFCIO_TRACE -DLIBSYNC_TRACE
LDFLAGS_gcc = -Wl,-q -g -L/usr/spu/lib/trace
INCLUDE = -I/usr/spu/include/trace
IMPORTS = -ltrace
#######################################################################
## buildutils/make.footer
#######################################################################
#
ifdef CELL_TOP
include $(CELL_TOP)/buildutils/make.footer
else
include ../../../../buildutils/make.footer
endif
|
########### Modifying ~/FFT16M/spu/Makefile for xlc compiler ##########
#######################################################################
## Target
#######################################################################
#
SPU_COMPILER = xlc
PROGRAMS_spu:= fft_spu
LIBRARY_embed:= fft_spu.a
#######################################################################
## Local Defines
#######################################################################
#
CFLAGS_xlc:= -g -qnounroll -O5
CPP_FLAGS_xlc := -I/usr/spu/include/trace -Dmain=_pdt_main
-Dexit=_pdt_exit -DMFCIO_TRACE -DLIBSYNC_TRACE
LDFLAGS_xlc:= -O5 -qflag=e:e -Wl,-q -g -L/usr/spu/lib/trace -ltrace
#######################################################################
## buildutils/make.footer
#######################################################################
#
ifdef CELL_TOP
include $(CELL_TOP)/buildutils/make.footer
else
include ../../../../buildutils/make.footer
endif
|
- Пересоберите приложение fft при помощи команды
cd ~/FFT16M ; CELL_TOP=/opt/cell/sdk make.
- Укажите в файле конфигурации использование только соответствующих остановов (почтовые ящики и чтение статуса тегов для SPE), поскольку здесь настоятельно рекомендуется сосредоточиться на остановах:
- Скопируйте XML-файл по умолчанию в рабочий каталог FFT при помощи команды
cp /usr/share/pdt/config/pdt_cbe_configuration.xml ~/FFT16M, чтобы его можно было отредактировать.
- Откройте скопированный файл для редактирования.
- В первой строке измените имя приложения на fft.
- Найдите строку
<configuration name="SPE">. Ниже этой строки вы найдете тег группы MFCIO. Установите значение тега группы равным
active="false".
- Удалите группу SPE_MFC. Этого должно быть достаточно для трассировки в SPE только остановов.
- Подготовьте среду, настроив следующие переменные:
export LD_LIBRARY_PATH=/usr/lib/trace
export PDT_KERNEL_MODULE=/usr/lib/modules/pdt.ko
export PDT_CONFIG_FILE=~/FFT16M/pdt_cbe_configuration.xml
- Запустите приложение fft по крайней мере три раза для получения адекватной выборки при помощи команды
cd ~/FFT16M/ppu ; ./fft 1 1 4 1 0. Должно получиться три файла трассировки (.pex, .map и .trace).
Обратите внимание, что стандартный файл настроек PDT_CONFIG_FILE для SDK указывает для файлов трассировки префикс test. Если этот файл не изменялся, ищите файлы трассировки с таким префиксом. Кроме того, не забудьте сбросить переменную среды LD_LIBRARY_PATH перед запуском стандартного (не-PDT) исполняемого файла.
Шаг 2. Создание отчета трассировки при помощи PDTR
Чтобы создать полный сводный текстовый отчет на основании сгенерированных файлов трассировки, можно использовать утилиту PDTR. Для создания файлов .pep в формате ASCII используйте команду
/opt/cell/sdk/prototype/usr/bin/pdtr -trc <имя файла трассировки (без суффикса)>
Шаг 3. Импорт данных PDT в Trace Analyzer
Утилита Trace Analyzer позволяет создавать наглядное представление этапов работы приложения. Она работает с данными, созданными утилитой PDT. Точнее, она считывает информацию, имеющуюся в созданном файле .pex. Для визуализации данных в Trace Analyzer выполните следующие действия:
- Откройте VPA и перейдите в меню Tools > Trace Analyzer.
- Откройте меню File > Open File и укажите файл .pex, созданный ранее. Должен появиться экран, показанный на рисунке 13.
Рисунок 13. Trace Analyzer
На этом экране показано представление для приложения FFT16M, запущенного на 16 блоках SPE без использования больших страниц памяти. Как вы можете видеть, для группы MFC_IO выбран неяркий голубой цвет, и теперь можно увидеть разницу между границами и содержимым интервалов. Также в этом примере с помощью цветовой карты изменили цвет read_in_mbox на красный вместо голубого цвета по умолчанию. Можно видеть большой останов в середине. Это отрезок, во время которого драйвер теста проверяет результат запуска теста, чтобы убедиться в том, что тест работает правильно. Тонкая голубая полоска после останова - это запуск программы по расписанию.
Теперь увеличим эту область, которая представляет в данном тесте наибольший интерес, как показано на рисунке 14.
Рисунок 14. Увеличенное отображение трассировки
Как можно видеть, почтовые ящики (красные полоски), разделяют исполнение на шесть этапов. У различных этапов – разные цели. Например, третий и шестой этапы заметно дольше остальных, и сопровождаются множеством серьезных остановов. Чтобы узнать подробности, Trace Analyzer позволяет выбрать останов простым щелчком по нему (показано на рисунке 14 желтой подсветкой). Риски на линейках слева и вверху показывают расположение выделенного фрагмента (и могут использоваться для перехода обратно, если его не видно на экране). Данные, собранные PDT для выбранного останова, показаны в окне Record details (Подробности записи). Видно, насколько велик останов: почти 12000 тактов. Теперь можно просмотреть советы по производительности Cell/B.E., чтобы выяснить возможную причину останова. Возможной причиной может быть ошибка TLB, а возможным решением – использование больших страниц.
|  |