Разработайте пользовательский планировщик многожильной системы управления

Обзор

Этот пример показывает, как смоделировать потребительский планировщик с помощью блока SimEvents MATLAB Discrete-Event System. Модель включает блок Scheduler, который может моделировать многожильную систему с произвольным числом ядер, задач и взаимоисключающих ресурсов.

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

Создание пользовательского планировщика в MATLAB

Блок Scheduler корневой модели разрабатывается, в основном, как дискретная система событий MATLAB. Файл MATLAB seExampleSchedulerClass содержит реализацию соответствующего объекта дискретной системы событий.

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

Блок Scheduler включает следующие параметры:

  • Количество ядер: Количество ядер, доступных для операционной системы, чтобы использовать.

  • Планирование политики: Выберите "Priority-based" или "Round robin" как политика планирования операционной системы. Основанные на приоритете виды планирования и выполняют задачи в приоритизированном порядке. Круговая политика позволяет задачам одинаково сменяться.

  • Количество задач: Количество задач в этой операционной системе.

  • Периоды задачи: Как часто каждая задача инстанцируют для выполнения.

  • Приоритеты задач: Приоритет каждой задачи (меньшее значение указывает на более высокий приоритет).

  • Количество сегментов в каждой задаче: Количество сегментов (подзадачи) задача имеет.

  • Функция Simulink для каждого сегмента: Исполняемые файлы сопоставлены с каждым сегментом задачи. Эти исполняемые файлы представлены функциями Simulink экспортируемой модели функции.

  • Длительность выполнения каждого сегмента: Время для сегмента задачи, чтобы завершиться, если это выполняется на процессоре без прерывания.

  • Количество взаимоисключающих ресурсов: Количество взаимоисключающих ресурсов операционной системы. Одна задача за один раз может получить и использовать ресурс. Операционная система использует механизмы, такие как взаимные исключения, чтобы управлять этими ресурсами.

  • Использование ресурсов каждой задачей: вектор Ячейки. Каждый элемент вектора указывает на использование ресурсов задачей.

Сравнение различных базовых выделений

Блок Scheduler позволяет вам присваивать произвольный номер ядер и исследовать, как это влияет на производительность системы. Мы начинаем со сценария, где два ядра были присвоены выполнить две задачи управления. С достаточной мощностью переработки обе системы управления с обратной связью выполняют хорошо в ответ на изменения сетбола.

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

В сравнении, когда только одно ядро присвоено, производительность Controller1 ухудшается из-за переполнений задачи (см. Plant1). Схема синхронизации ясно указывает на такие переполнения задачи и значительно увеличенные задержки.

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

Сравнение различных политик планирования

На данном этапе, если Планировщик переключается, чтобы использовать циклическую политику планирования, система управления выполняет по-другому. По сравнению с предыдущим случаем, где мощность переработки остается то же самое, Объект 1 становится стабильным со стоимостью ухудшения производительности Объекта 2. Это изменение - то, вследствие того, что циклическая политика равномерно присваивает мощность переработки среди всех задач.

Сравнение различных выделений ресурса

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

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

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

С каждой задачей, имеющей ее собственный ресурс, задачи обрабатываются одновременно.

Связанные примеры