Просмотр и сравнение времен выполнения кода

Вы запускаете симуляцию цикл (SIL) или цикл (PIL), которая производит метрики времени выполнения для задач и функций в вашем сгенерированном коде. Во время симуляции можно использовать Данные моделирования Inspector для наблюдения потоковых времен выполнения. В конце симуляции можно:

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

  • Откройте отчет о метриках времени выполнения для всех профилированных компонентов. Через значки отчета можно просмотреть, для примера, профилированные секции кода и распределение во время выполнения для каждой профилированной функции.

  • Используйте Данные Моделирования Inspector, чтобы построить график и сравнить времена выполнения из различных симуляций.

Запустите SIL симуляцию, которая генерирует метрики времени выполнения

Откройте rtwdemo_sil_topmodel модель, которая имеет две подсистемы CounterTypeA и CounterTypeB. В командной строке введите rtwdemo_sil_topmodel.

Чтобы запустить SIL симуляцию, которая генерирует метрики во время выполнения, на вкладке SIL/PIL:

  1. В Mode разделе выберите SIL/PIL Simulation Only.

  2. В Prepare разделе задайте следующие настройки:

    1. System Under TestTop model

    2. SIL/PIL ModeSoftware-in-the-Loop (SIL)

  3. Для измерения времен выполнения кода для подсистем в разделе Prepare:

    1. Нажмите Settings.

    2. В разделе Profiling:

      • Нажмите кнопку Task Profiling. Это действие выбирает параметр конфигурации Measure task execution time, который обеспечивает метрики времени выполнения для задачи, сгенерированной из верхней модели rtwdemo_sil_topmodel.

      • Нажимайте кнопку Save Options пока она не отобразится ALL DATA. Это действие устанавливает параметр конфигурации Save options равным All data.

      • Нажимайте кнопку Functions пока она не отобразится COARSE. Это действие устанавливает параметр конфигурации Measure function execution times равным Coarse (referenced models and subsystems only), который обеспечивает метрики времени выполнения для функций, сгенерированных из подсистем CounterTypeA и CounterTypeB.

    3. В разделе Coverage нажмите кнопку Coverage Collection off, которая отключает анализ покрытия кода. Данные покрытия кода собираются отдельно от данных профилирования.

    4. Нажмите кнопку Settings, чтобы открыть диалоговое окно Параметров конфигурации. На панели Data Import/Export очистите Single simulation output.

  4. Чтобы просмотреть потоковые времена выполнения во время моделирования, откройте Данные моделирования Inspector. В Results разделе нажмите.

  5. В Run разделе нажмите Run SIL/PIL.

В MATLAB® базовое рабочее пространство, симуляция генерирует переменную с именем по умолчанию, executionProfile, который хранит данные профилирования выполнения. Вы можете задать альтернативное имя через параметр Workspace variable конфигурации.

Примечание

Если установлен флажок Data Import/Export > Single simulation output, симуляция создаёт переменную в заданном Simulink.SimulationOutput объект.

Когда симуляция завершена, компоненты профилированной модели окрашены в синий цвет, и представление кода отображает сгенерированный код. Чтобы просмотреть метрики во время выполнения для профилированного компонента, щелкните компонент. Для примера, подсистемы CounterTypeB.

Для SIL или PIL симуляций верхней модели, Simulink® Фон редактора также окрашен в синий цвет. При клике по фону в окне отображения показываются метрики времени выполнения для задач верхней модели.

Можно проследить от компонента модели до профилированной секции кода в Представление кода. В окне отображения профилей в строке раздела кода щелкните значок. Например, если вы кликните фон модели и затем щелкните значок для rtwdemo_sil_topmodel_initialize задача, вы видите измерение зонды вокруг сайта вызова в приложении SIL. Чтобы просмотреть метрики профилирования для компонента, поместите курсор на эллипсы над узлом вызова.

Initialization function call with tooltip showing table of code profiling metrics.

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

Highlighted function call site for CounterTypeA function.

Окно отображения профилирования также имеет ссылки на:

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

  • Данные моделирования Inspector, который позволяет вам построить график и сравнить измерения во время выполнения для профилированной секции кода.

  • Распределение во время выполнения для профилированной секции кода.

  • Круговые диаграммы, которые показывают относительные времена выполнения функций вызывающего и вызываемого абонента

Если вы закрываете модель или окно отображения, можно снова открыть цветную модель и отобразить окно с помощью этой команды line:

>> annotate(executionProfile)

Отчет о профилировании выполнения кода

В конце симуляции можно открыть этот отчет в окне отображение или с помощью этой команды line:

>> report(executionProfile)

Часть 1 содержит сводные данные. Часть 2 содержит информацию о профилированных секциях кода. Разверните и сверните профилированные сечения в части 2, нажав [+] и [-] соответственно. Этот рисунок показывает полностью развернутые разделы.

Отчет содержит измерения времени для:

  • Функция инициализации модели initialize.

  • Задача, представленная функцией шага step [0.1 0].

  • Функции, сгенерированные из подсистем CounterTypeA и CounterTypeB.

Из отчета профилирования выполнения кода можно проследить компонент модели, который создает набор метрик. Например, в столбце Section, если вы кликните CounterTypeA гиперссылка, Редактор определяет подсистему.

По умолчанию в отчете отображается время в наносекундах (10-9 секунд). Можно задать модуль времени и численный формат отображения. Для примера отобразить время в микросекундах (10-6 секунд), используйте следующую команду:

report(executionProfile,...
         'Units', 'Seconds', ...
         'ScaleFactor', '1e-06', ...
         'NumericFormat', '%0.3f')

Отчет отображает время в секундах только, если таймер калиброван, то есть известно количество тактов в секунду. В Windows® machine, программное обеспечение определяет это значение для SIL симуляции. На Linux® machine, калибруйте таймер вручную. Например, если скорость процессора составляет 1 ГГц, задайте количество тактов в секунду:

executionProfile.TimerTicksPerSecond = 1e9;

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

>> out.get('executionProfile').Sections(5)
  ExecutionTimeCodeSection with properties:

                            Name: 'CounterTypeA'
                          Number: 5
            ExecutionTimeInTicks: [1×101 uint64]
                 SelfTimeInTicks: [1×101 uint64]
           TurnaroundTimeInTicks: [1×101 uint64]
       TotalExecutionTimeInTicks: 24332
            TotalSelfTimeInTicks: 24332
      TotalTurnaroundTimeInTicks: 24332
     MaximumExecutionTimeInTicks: 502
     MaximumExecutionTimeCallNum: 10
          MaximumSelfTimeInTicks: 502
          MaximumSelfTimeCallNum: 10
    MaximumTurnaroundTimeInTicks: 502
    MaximumTurnaroundTimeCallNum: 10
                        NumCalls: 101
          ExecutionTimeInSeconds: [1×101 double]
                            Time: [101×1 double]

Чтобы отобразить измеренные времена выполнения в Simulation Data Inspector, щелкните значок. Используйте Данные Моделирования Inspector, чтобы управлять и сравнивать графики из различных симуляций.

Чтобы отобразить распределение во время выполнения, щелкните значок.

В этом примере, чтобы создать гистограмму, программное обеспечение использует следующие команды:

section=executionProfile.Sections(5);
data=section.ExecutionTimeInSeconds;
histogram(data, 30,'Normalization','probability');
Гистограмма создается программным обеспечением только в том случае, если количество вызовов превышает единицу.

Если сгенерированный код для вашей модели содержит вложенные функции, симуляция генерирует круговые диаграммы, которые показывают относительные времена выполнения вызывающего и вызываемого функций. Чтобы отобразить круговые диаграммы, щелкните значок для функции вызывающего абонента. Для примера, step [0.1 0].

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

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

СтолбецОписание
Раздел

Имя задачи, верхней части, подсистемы или Model блока. Щелкните ссылку, чтобы перейти к модели.

При помощи задачи рядом с именем задачи перечисляются период дискретизации и смещение выборки. Для примера, rtwdemo_sil_topmodel_step [0.1 0] указывает, что период дискретизации составляет 0,1 секунды, и смещение выборки равняется 0.

Максимальное время оборота (Simulink Real-Time™ и пакеты поддержки в режиме реального времени) Самое длительное время между началом и концом секции кода. Включает время упреждения.
Среднее время цикла (Simulink Real-Time и пакеты поддержки в режиме реального времени) Среднее время между началом и концом секции кода. Включает время упреждения.
Максимальное время выполненияСамое длительное время между началом и концом секции кода.
Среднее время выполненияСреднее время между началом и концом секции кода.
Максимальное собственное времяМаксимальное время выполнения, исключая время в дочерних разделах.
Среднее собственное времяСреднее время выполнения, исключая время в дочерних разделах.
ВызовыКоличество вызовов в секцию кода.

Значок, который вы кликните, чтобы увидеть профилированные секции кода в Представление кода SIL/PIL app. Секция кода может быть задачей или функцией.

Заданная переменная рабочей области, например executionProfile, должно присутствовать в базовом рабочем пространстве.

Значок, который вы кликнете, чтобы отобразить профилированную секцию кода в Командном окне. Эквивалентно выполнению команды executionProfile.Sections (i).

Заданная переменная рабочей области, например executionProfile, должно присутствовать в базовом рабочем пространстве.

Значок, который вы нажимаете, чтобы отобразить измеренные времена выполнения с Данными моделирования Inspector.

Заданная переменная рабочей области, например executionProfile, должно присутствовать в базовом рабочем пространстве.

Значок, который вы кликните, чтобы отобразить распределение во время выполнения для профилированной секции кода.

Заданная переменная рабочей области, например executionProfile, должно присутствовать в базовом рабочем пространстве.

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

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

  • Среднее и максимальное время центрального процессора, требуемое каждой задачей в течение периода дискретизации.

  • Общее использование ЦП за период дискретизации.

Программа вычисляет процент времени центрального процессора, назначенного задаче, путем деления времени выполнения задачи на шаг расчета.

Программа генерирует CPU Utilization, только если задано количество тактов в секунду.

Сравнение Кода Времени выполнения Эффективности с базовым уровнем

Можно создать отчет о профилировании выполнения кода, который сравнивает эффективность сгенерированного кода с эффективностью ссылки версии. Например, предположим, что вы хотите использовать текущие метрики времени выполнения в executionProfile как базовый уровень для rtwdemo_sil_topmodel.

  1. В браузере Рабочей области переименуйте executionProfile на executionProfileBaseline.

  2. Выполните другую SIL симуляцию.

  3. Чтобы создать отчет, сравнивающий последнюю эффективность с базовой линией, в Командном окне, запустите:

    report(executionProfile,'baseline', executionProfileBaseline)

В части 3 (Comparison with Baseline Performance) и части 4 (CPU Utilization) отчет предоставляет сравнение метрик во время выполнения. Различия в метриках во время выполнения закодированы по цвету:

  • Красный - увеличение времен выполнения или использования ЦП.

  • Зеленый - уменьшение времен выполнения или использования ЦП.

  • Черный - Без изменений.

Визуализация планирования задач

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

См. также

| |

Похожие примеры

Подробнее о