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

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

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

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

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

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

  • Отобразите данные профилировщика.

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

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

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

1. Откройте slrt_ex_mds_and_tasks модели.

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

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

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

4. Нажмите OK. Сохранить модель 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, нажмите кнопку Membrane рядом с задачей.

  • Чтобы отобразить данные TET для раздела в Данные Моделирования Inspector, нажмите кнопку Plot данные временных рядов.

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

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