exponenta event banner

Профилирование выполнения для приложений реального времени

В этом примере показано, как можно профилировать время выполнения задачи и время выполнения функции приложения реального времени, запущенного на целевом компьютере. Используя эту информацию, можно настроить ее производительность.

Профилирование особенно полезно, если приложение реального времени настроено на использование преимуществ многоядерных процессоров на целевом компьютере. Для профилирования приложения в реальном времени:

  • В окне Параметры конфигурации модели включите сбор данных о времени выполнения функции во время выполнения.

  • Создание, загрузка и выполнение модели.

  • Запустите и остановите профилировщик.

  • Просмотрите данные профилировщика.

Профилирование немного увеличивает время выполнения приложения в реальном времени.

Настройка приложения реального времени для профилирования выполнения функций

В этом разделе модель slrt_ex_mds_and_tasks. Чтобы открыть эту модель, сначала откройте модели подсистем:

1. Открытая модель slrt_ex_mds_and_tasks.

2. В верхней части модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters). Выберите Создание кода > > Проверка.

3. Для параметра Время выполнения функции измерения (Measure function execution time) выберите Грубый (Coarse) (только ссылочные модели и подсистемы). Флажок Время выполнения задачи измерения установлен и заблокирован. Или в окне команды MATLAB введите:

set_param('slrt_ex_mds_and_tasks','CodeProfilingInstrumentation','Coarse');

4. Нажмите кнопку ОК. Сохранить модель slrt_ex_mds_and_tasks в локальной папке.

Создание профиля выполнения приложения в реальном времени

В этом разделе создайте данные профиля для модели slrt_ex_mds_and_tasks на многоядерном целевом компьютере.

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

1. Откройте, создайте и загрузите модель.

mdl = 'slrt_ex_mds_and_tasks';
open_system(mdl);
slbuild(mdl);
tg = slrealtime;
load(tg,mdl);

При включении профилирования по умолчанию создается отчет о создании кода. Он содержит ссылки на сгенерированный код C и включает файлы. По этим ссылкам можно просмотреть созданный код и интерпретировать отчет о профиле выполнения кода.

2. Запустите профилировщик и затем запустите приложение реального времени.

startProfiler(tg);
start(tg);
pause(1)
stopProfiler(tg);
stop(tg);

3. Просмотрите данные профилировщика.

profiler_data = getProfilerData(tg)
plot(profiler_data)
report(profiler_data)

График «Профиль выполнения» показывает распределение циклов выполнения между четырьмя процессорами, на что указывают цветные горизонтальные полосы. Разделы модели перечислены в отчете по профилированию выполнения кода. Сердечники обозначены номерами под столбцами.

Отчет о профилировании выполнения кода отображает результаты профиля выполнения модели для каждой задачи.

  • Чтобы отобразить данные профиля для сечения модели, в столбце Сечение (Section) нажмите кнопку Мембрана (Member) рядом с задачей.

  • Для отображения данных TET для раздела в инспекторе данных моделирования нажмите кнопку «Печать данных временных рядов».

  • Чтобы просмотреть раздел в Simulink Editor, щелкните ссылку рядом с кнопкой «Развернуть дерево».

  • Чтобы просмотреть строки сгенерированного кода, соответствующие разделу, нажмите кнопку Развернуть дерево, а затем кнопку Показать источник.