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

Обзор

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

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

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

Блок Scheduler корневой модели разработан в основном как система дискретных событий MATLAB. ФАЙЛ MATLAB seSchedulerClass содержит реализацию соответствующих Системных объектов дискретных событий.

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

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

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

  • Политика планирования: Выберите «Основанный на приоритете» или «Робин раунда» в качестве политики планирования операционной системы. Основанное на приоритетах планирование сортирует и выполняет задачи в приоритетном порядке. Круговая политика позволяет задачам одинаково по очереди.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При наличии у каждой задачи собственного ресурса задачи обрабатываются одновременно.

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

См. также

| | | | |

Похожие темы