Вы запускаете программное обеспечение в цикле (SIL) или процессоре в цикле (PIL) симуляция, которая производит метрики времени выполнения для задач и функций в вашем сгенерированном коде. Во время симуляции можно использовать Инспектора Данных моделирования, чтобы наблюдать переданные потоком времена выполнения. В конце симуляции вы можете:
Просмотрите метрики времени выполнения для профилируемого компонента модели.
Откройте отчет метрик времени выполнения для всех профилируемых компонентов. Через значки отчета можно просмотреть, например, профилируемую секцию кода и распределение времени выполнения для каждой профилируемой функции.
Используйте Инспектора Данных моделирования, чтобы построить и сравнить времена выполнения от различных симуляций.
Откройте rtwdemo_sil_topmodel
модель, которая имеет две подсистемы CounterTypeA
и CounterTypeB
.
Чтобы запустить SIL симуляцию, которая генерирует метрики времени выполнения на вкладке SIL/PIL:
В разделе Mode выберите SIL/PIL Simulation Only.
В разделе Prepare задайте эти настройки:
System Under Test — Top model
SIL/PIL Mode — Software-in-the-Loop (SIL)
Измерять времена выполнения кода для подсистем:
Щелкнуть.
В диалоговом окне Configuration Parameters выберите Measure task execution time, который обеспечивает метрики времени выполнения для задачи, сгенерированной от топ-модели rtwdemo_sil_topmodel
.
Установите Measure function execution times на Coarse (referenced models and subsystems only)
, который обеспечивает метрики времени выполнения для функций, сгенерированных от подсистем CounterTypeA
и CounterTypeB
.
Задайте Workspace variable, например, executionProfile
.
От Save options выпадающий список выберите All data
.
Нажмите OK.
Нажмите Settings. Под Coverage нажмите кнопку Coverage Collection прочь.
В разделе Run нажмите Run SIL/PIL.
Симуляция генерирует переменную executionProfile
в базовом рабочем пространстве MATLAB®.
Если вы устанавливаете флажок Data Import/Export> Single simulation output, симуляция создает переменную в вашем заданном Simulink.SimulationOutput
объект.
Чтобы просмотреть переданные потоком времена выполнения во время симуляции, откройте Инспектора Данных моделирования. В разделе Results щелкнуть.
Когда симуляция завершена, профилируемые компоненты модели окрашены в синий. Чтобы просмотреть метрики времени выполнения для профилируемого компонента, кликните по компоненту. Например, подсистема CounterTypeB
.
Окно экрана также имеет ссылки на:
Полный профильный отчет, который обеспечивает метрики времени выполнения для всех профилируемых секций кода.
Профилируемая секция кода в отчете генерации кода.
Инспектор Данных моделирования, который позволяет вам строить и сравнивать измерения времени выполнения для профилируемой секции кода.
Распределение времени выполнения для профилируемой секции кода.
Для топ-модели SIL или PIL симуляции, Редактор Simulink® фон также окрашен в синий. Когда вы кликаете по фону, окно экрана показывает метрики времени выполнения для задач топ-модели.
Если вы закрываете модель или окно экрана, можно вновь открыть цветную модель и окно экрана с этой командой линии:
>> annotate(executionProfile)
В конце симуляции можно открыть этот отчет через метрическое окно экрана или с этой командой линии:
>> report(executionProfile)
Часть 1 предоставляет сводные данные. Часть 2 содержит информацию о профилируемых секциях кода. Расширьте и сверните профилируемые разделы в части 2 путем нажатия [+] и [–] соответственно. Эта диаграмма показы полностью расширила разделы.
Отчет содержит измерения времени для:
Инициализация модели функционирует rtwdemo_sil_topmodel_initialize
.
Задача представлена ступенчатой функцией rtwdemo_sil_topmodel_step [0.1 0]
.
Функции сгенерировали от подсистем CounterTypeA
и CounterTypeB
.
Можно перейти к профилируемой секции кода в представлении Generated Code Отчета Генерации кода. В Отчете Профилирования Выполнения кода, на строке секции кода, кликают по значку. Например, если вы кликаете по значку для rtwdemo_sil_topmodel_initialize
задача, вы видите зонды измерения вокруг сайта вызова в приложении SIL.
Если вы кликаете по значку для функции, сайт вызова подсвечен.
Из Отчета Профилирования Выполнения кода можно проследить компонент модели, который производит набор метрик. Например, в столбце Section, если вы нажимаете CounterTypeA
гиперссылка, Редактор Simulink идентифицирует подсистему.
По умолчанию отчет отображает время в наносекундах (10-9 секунд). Можно задать формат цифрового дисплея и единица измерения времени. Например, чтобы отобразить время в микросекундах (10-6 секунд), используйте следующую команду:
report(executionProfile,... 'Units', 'Seconds', ... 'ScaleFactor', '1e-06', ... 'NumericFormat', '%0.3f')
Отчет отображает время в секундах, только если таймер калибруется, то есть, количество меток деления таймера в секунду известно. На машине Windows® программное обеспечение определяет это значение для SIL симуляции. На машине Linux® калибруйте таймер вручную. Например, если ваша скорость процессора составляет 1 ГГц, задайте количество меток деления таймера в секунду:
executionProfile.TimerTicksPerSecond = 1e9;
Просмотреть метрики времени выполнения для задачи или функции в Командном окне, на соответствующей строке, нажатии кнопки.
>> executionProfile.Sections(5) ExecutionTimeCodeSection with properties: Name: 'CounterTypeA' Number: 5 ExecutionTimeInTicks: [1×101 uint64] SelfTimeInTicks: [1×101 uint64] TurnaroundTimeInTicks: [1×101 uint64] TotalExecutionTimeInTicks: 12998 TotalSelfTimeInTicks: 12998 TotalTurnaroundTimeInTicks: 12998 MaximumExecutionTimeInTicks: 374 MaximumExecutionTimeCallNum: 60 MaximumSelfTimeInTicks: 374 MaximumSelfTimeCallNum: 60 MaximumTurnaroundTimeInTicks: 374 MaximumTurnaroundTimeCallNum: 60 NumCalls: 101 ExecutionTimeInSeconds: [1×101 double] Time: [101×1 double]
Чтобы отобразить измеренные времена выполнения в Инспекторе Данных моделирования, кликните по значку. Используйте Инспектора Данных моделирования, чтобы управлять и сравнить графики от различных симуляций.
Чтобы отобразить распределение времени выполнения, кликните по значку.
В этом примере, чтобы создать гистограмму, программное обеспечение использует эти команды:
section=executionProfile.Sections(5); data=section.ExecutionTimeInSeconds; histogram(data, 30,'Normalization','probability');
Чтобы наблюдать, как секции кода вызываются по временной шкале выполнения, используйте timeline
функция.
Следующая таблица описывает информацию, предоставленную в профилях секции кода.
Столбец | Описание |
---|---|
Раздел | Имя задачи, топ-модели, подсистемы или блока Model. Щелкните по ссылке, чтобы перейти к модели. С задачей период расчета и демонстрационное смещение перечислены рядом с именем задачи. Например, |
Максимальный Срок выполнения работы (Simulink Real-Time™ и пакеты поддержки в режиме реального времени режим) | Самое долгое время между началом и концом секции кода. Включает время вытеснения. |
Среднее время цикла (Simulink Real-Time и пакеты поддержки в режиме реального времени режим) | Среднее время между началом и концом секции кода. Включает время вытеснения. |
Максимальное время выполнения | Самое долгое время между началом и концом секции кода. |
Среднее время выполнения | Среднее время между началом и концом секции кода. |
Максимум сам время | Максимальное время выполнения, исключая время в дочерних разделах. |
Среднее значение сам время | Среднее время выполнения, исключая время в дочерних разделах. |
Вызовы | Количество вызовов секции кода. |
Значок, по которому вы кликаете, чтобы видеть профилируемую секцию кода в представлении Generated Code Отчета Генерации кода. Секция кода может быть задачей или функцией. Заданная переменная рабочей области, например, | |
Значок, по которому вы кликаете, чтобы отобразить профилируемую секцию кода в Командном окне. Эквивалентный выполнению команды Заданная переменная рабочей области, например, | |
Значок, по которому вы кликаете, чтобы отобразить измеренные времена выполнения с Инспектором Данных моделирования. Заданная переменная рабочей области, например, | |
Значок, по которому вы кликаете, чтобы отобразить распределение времени выполнения для профилируемой секции кода. Заданная переменная рабочей области, например, |
Чтобы помочь вам решить, можно ли запустить сгенерированный код на целевом компьютере, часть 3 отчета профилирования выполнения кода предоставляет информацию о рабочей нагрузке центрального процессора:
Среднее и максимальное процессорное время требуется каждой задачей в течение периода расчета.
Общее использование ЦП в период расчета.
Программное обеспечение вычисляет процент процессорного времени, присвоенного задаче путем деления времени выполнения задачи шагом расчета.
Программное обеспечение генерирует CPU Utilization, только если количество меток деления таймера в секунду задано.
Можно создать отчет профилирования выполнения кода, который сравнивает производительность сгенерированного кода против производительности ссылочной версии. Например, предположите, что вы хотите использовать текущие метрики времени выполнения в executionProfile
как базовая линия для rtwdemo_sil_topmodel
.
В браузере Рабочей области переименуйте executionProfile
к executionProfileBaseline
.
Запустите другую SIL симуляцию.
Чтобы создать отчет, который сравнивает последнюю производительность с базовой линией, в Командном окне, запуске:
report(executionProfile,'baseline', executionProfileBaseline)
В части 3 (Comparison with Baseline Performance) и часть 4 (CPU Utilization), отчет обеспечивает сравнение метрик времени выполнения. На различия в метриках времени выполнения наносят цветную маркировку:
Красный — увеличение во времена выполнения или использование ЦП.
Зеленый — уменьшение во времена выполнения или использование ЦП.
Черный — Никакое изменение.