В этом примере показано, как можно профилировать время выполнения задачи и функциональное время выполнения приложения реального времени, которое работает на целевом компьютере. Используя ту информацию, можно затем настроить ее эффективность.
Профилирование особенно полезно, если вы конфигурируете свое приложение реального времени, чтобы использовать в своих интересах многоядерные процессоры на целевом компьютере. Профилировать приложение реального времени:
В диалоговом окне Configuration Parameters для модели включите набор функциональных данных времени выполнения во время выполнения.
Создайте, загрузите и выполните модель.
Запустите и остановите профилировщик.
Отобразите данные профилировщика.
Блок Execution Profiler и SLRT Overload Options использует различные механизмы, чтобы измерить TET и не генерирует идентичные значения TET.
Моделью является slrt_ex_mds_and_tasks
. Чтобы открыть эту модель, откройте модели подсистемы сначала:
1. Открытая модель slrt_ex_mds_and_tasks
.
2. В топ-модели откройте диалоговое окно Configuration Parameters. Выберите Code Generation>> Verification.
3. В течение времен выполнения функции Меры выберите Coarse (только образцы модели и подсистемы). Флажок времени выполнения задачи Меры устанавливается и блокируется. Или в командном окне MATLAB введите:
set_param ('slrt_ex_mds_and_tasks','CodeProfilingInstrumentation ',' Крупный ');
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); my_app = slrealtime.Application('slrt_ex_mds_and_tasks'); my_app.Options.set("stoptime",20);
### Starting serial model reference simulation build ### Starting serial model reference code generation build ### Successful completion of build procedure for: slrt_ex_mds_subsystem1 ### Successful completion of build procedure for: slrt_ex_mds_subsystem2 ### Successful completion of build procedure for: slrt_ex_mds_and_tasks Invalid Simulink object name: slrt_ex_mds_subsystem1. ### Created MLDATX ..\slrt_ex_mds_and_tasks.mldatx Build Summary Code generation targets built: Model Action Rebuild Reason ================================================================================================= slrt_ex_mds_subsystem1 Code generated and compiled slrt_ex_mds_subsystem1.cpp does not exist. slrt_ex_mds_subsystem2 Code generated and compiled slrt_ex_mds_subsystem2.cpp does not exist. Top model targets built: Model Action Rebuild Reason ====================================================================================================== slrt_ex_mds_and_tasks Code generated and compiled Code generation information file does not exist. 3 of 3 models built (0 models already up to date) Build duration: 0h 0m 45.003s
Когда вы включаете профилирование, Отчет Генерации кода сгенерирован по умолчанию. Это содержит ссылки на сгенерированный код C, и включайте файлы. Путем щелчка по этим ссылкам можно исследовать сгенерированный код и интерпретировать Отчет Профиля Выполнения кода.
2. Запустите профилировщик, и затем выполните приложение реального времени.
startProfiler(tg); start(tg); pause(1) stopProfiler(tg); stop(tg);
3. Отобразите данные профилировщика.
profiler_data = getProfilerData(tg) plot(profiler_data) report(profiler_data)
Processing data on target computer ... Transferring data from target computer ... Processing data on host computer ... Code execution profiling data for model slrt_ex_mds_and_tasks.
Отображение расписания Профиля Выполнения в Инспекторе Данных моделирования показывает, как планирование сгенерировано в режиме реального времени симуляция. Открыть отображение расписания в Инспекторе Данных моделирования после создания executionProfile
объект, используйте executionProfile.schedule()
функция.
Отчет Профилирования Выполнения кода отображает результаты профиля выполнения модели для каждой задачи.
Чтобы отобразить данные о профиле для раздела модели, в столбце Раздела, нажимают кнопку Membrane рядом с задачей.
Чтобы отобразить данные TET для раздела в Инспекторе Данных моделирования, нажмите кнопку данных временных рядов Графика.
Чтобы просмотреть раздел в Редакторе Simulink, щелкните по ссылке рядом с кнопкой Expand Tree.
Чтобы просмотреть линии сгенерированного кода, соответствующего разделу, нажмите кнопку Expand Tree, и затем нажмите View Source button.
schedule
(Embedded Coder) | report
| plot
| ProfilerData
| stopProfiler
| startProfiler
| resetProfiler
| getProfilerData
| getAvailableProfile
| deleteProfilerData