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

УДК 681.3.012

Р. А. Бикташев, Р. И. Емельянов

СТРУКТУРНАЯ РЕАЛИЗАЦИЯ И ОЦЕНКА ВРЕМЕННЫХ ХАРАКТЕРИСТИК МНОГОПРОЦЕССОРНЫХ ПЛАНИРОВЩИКОВ С РАСПРЕДЕЛЕННОЙ ОЧЕРЕДЬЮ ЗАДАЧ

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

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

Традиционно большую часть функций операционных систем (ОС) выполняют программно, что приводит к высоким задержкам в выполнении приложений. Наиболее чувствительно издержки ОС, основанные на программном обеспечении, сказываются на системах реального времени (СРВ). СРВ требуют высокой реакции на запрос, гарантированного времени ответа, что в свою очередь вызывает необходимость повышения производительности операционной системы и особенно систем жесткого реального времени.

В связи с вышесказанным разработчики многопроцессорных операционных систем часть трудоемких функций переносят на аппаратную реализацию, что обусловлено высокой степенью интеграции и низкой стоимостью элементной базы. Аппаратная реализация алгоритмов ОС позволяет в определенной степени уменьшить трудности создания программного обеспечения, а также улучшить совместимость различных версий ОС для компьютеров разных платформ. Кроме того, в значительной степени уменьшается трудоемкость отладки нижних уровней ОС и повышается его корректность благодаря возможностям формального описания функций на языке недетерминированных автоматов (НДА).

Схемная реализация заключается в перенесении компонент ядра операционной системы на уровень специализированного процессора. Она позволяет полностью освободить ядро ОС от функций управления переключением задач и прерываниями, синхронизации процессов, обмена сообщениями и т.д. В результате API-функции, выполняемые в спецпроцессоре, значительно ускоряются, а тщательная отладка аппаратуры современными средствами проектирования программируемой логической интегральной системы (ПЛИС) гарантирует надежность и безопасность операционной системы. Такой подход обеспечивает повышение производительности многопроцессорной системы за счет быстрого выполнения функций ОС по управлению процессами и ресурсами в аппаратных средствах и освобождения центральных процессоров от функций ОС по управлению процессами и ресурсами, что позволяет полностью занять их только выполнением приложений.

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

Возможны три способа включения аппаратного ядра ОС в многопроцессорную систему (МПС):

1) через системную общую шину (рис. 1,а);

2) через выделенную (специальную API-) шину (рис. 1,6);

3) с непосредственными связями (рис. 1,в).

в)

Рис. 1. Схемы включения аппаратного ядра ОС

Второй способ, хотя и требует дополнительных затрат, но не нагружает общую шину, способствует хорошей масштабируемости и высокой пропускной способности обменных операций между API процессорами и аппаратным ядром ОС.

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

Существует два варианта построения планировщиков задач МПС: с общей (глобальной) очередью и распределенной (локальной) очередью. Первый вариант сопряжен с большим количеством конфликтов за доступ множества процессоров к очереди задач (к диспетчеру задач), что приводит к простоям процессоров и в конечном счете к потерям производительности [1].

В планировщиках/диспетчерах с локальными очередями у каждого процессора имеется своя очередь задач. Функция диспетчера ограничивается выборкой очередной задачи и назначением ее освободившемуся процессору. При прерываниях по истечении кванта (переключениях контекста) процесс остается в той же очереди, в которой он находился ранее, что не приводит к перезагрузке КЭШ в отличие от планировщиков с общей очередью задач. Таким образом, в вычислительной системе действует одновременно N диспетчеров, в результате чего задачи выбираются из очередей бесконфликтно, поступают в процессоры параллельно, что создает условия для повышения производительности.

Диспетчер задач является распределенным и выполняется в виде независимого аппаратного устройства управления процессами (планировщика) в составе многопроцессорной ОС в соответствии со схемой, представленной на рис. 2.

Рис. 2. Схема подключения устройства управления процессами в многопроцессорную систему

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

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

Рис. 3. Модель многопроцессорной системы с локальными диспетчерами

Интерфейс взаимодействия устройства локального диспетчера с каждым из процессоров и с планировщиком задач представлен на рис. 4.

Планировщик Локальный диспетчер mitieg task_id > task_ieajdy ^ Процессор

-'- wireg proc_zapr procjiinyal

fifo fUl

!-- proc_pzapr proc_liiee fifo_empty

Рис. 4. Интерфейс взаимодействия локального диспетчера с планировщиком задач и процессором

Формализация алгоритма планирования задач

Концептуально алгоритм управления процессами аналогичен алгоритму «спящего парикмахера» и выглядит следующим образом. Первоначально поступившая задача помещается в очередь планировщика и находится в ней до тех пор, пока не получит необходимые ей ресурсы, в число которых входит и место в очереди к одному из процессоров (см. рис. 3). Если имеется свободное место в одной из очередей, то выбранная планировщиком задача занимает его, причем число мест в очереди ограничено некоторым числом. Принятая на обслуживание задача находится в очереди до тех пор, пока не поступит на выполнение в процессор. Если используется режим квантования, то незавершенная задача по окончании текущего кванта помещается в конец той же очереди, где она находилась ранее, иначе результат выдается пользователю, а в очереди освобождается одно место. При завершении задачи локальный диспетчер просматривает очередь, и если в ней имеются заявки на обслуживание, то назначается на выполнение процесс, стоящий в голове списка (очередь типа FIFO). Если очередь пуста, процессор переходит в режим ожидания [2].

Из приведенного описания следует, что алгоритм управления процессами использует схему синхронизации типа «рандеву» [3]. Формальное описание алгоритма взаимо-

действия процессов в данной задаче базируется на использовании моделей недетерминированных автоматов. Модели представляются в виде направленного графа и систем канонических уравнений (СКУ), описывающих все реализуемые события управляющего алгоритма [4].

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

Основные частные события алгоритма представлены в табл. 1. В последней колонке показано их соответствие сигналам на схеме устройства управления процессами.

Таблица 1

Основные частные события алгоритма

Обозначение события Описание частного события Сигналы на схеме

$ Ожидание поступления новой задачи 8_1а$к_аггтей

¡Я Функция состояния очереди (количество задач в очереди ./-го процессора) 8_изв [5...0]

¡РЯ Все очереди заполнены 8_А/о_/иЕ

В _/-й локальной очереди имеются свободные места 8_А/о_и111

¡Я) Выбор очереди с минимальным числом задач и занесение новой задачи в выбранную очередь 8_югтвд

¡Я) Задача в очереди ./-го процессорного узла 8_1азк_т_диеив

Запрос ./-го процессора локальным диспетчером 8_ртос_гарт_)

¡ОР) Задача готова к обслуживанию в _/-м процессоре 8_1азк_твайу_)

¡Р) Подтверждение запроса ./-м процессором 8_ртос_ргарт_)

Свободен _/-й процессор 8_ргос_тев

¡Р] °РТ Задачу _/-й процессор принял 8_ргос_ргтуа1_)

¡А Выполняет обслуживание задачи _/-й процессор Аппаратно не реализовано

¡Я Ожидание поступления задачи в очередь ./-го процессора Внутренний сигнал, на схеме не обозначен

¡г ¡ОР Удалить задачу из очереди --------\\--------

¡г ¡ТО Снять задачу с исполнения --------\\--------

Выполнение задачи закончено

°КТ Выдача результата выполнения текущей задачи

¡Р] Процессор в режиме ожидания

На основании словесно представленного алгоритма управления процессами и введенных событий, реализуемых в этом алгоритме, система канонических уравнений, описывающих эти события, будет иметь вид (1):

- для процесса «клиент», реализуемого локальным диспетчером до момента «рандеву»:

% (г +1) = х2 V ;

Б (г +1) = Б<Рд V Б§'Б; б (г+1)-у ББ;

У/еЛГ

Б (г +1) = Б V ;

Бщ

БОР/ (г + 1) = Б2Р}БР2 V БОР/ БРТ ,

где хг означает наличие запроса задачи на постановку в очередь;

- для процесса «сервер», реализуемого процессором до момента «рандеву»:

(г +1) = БР V Б^;

бр2

БРТ (г + 1) - БР2Б2Р] V БРТ Б1Р] •

СКУ, описывающая события после «рандеву»:

Б А (г +1) - Б/Б^ V Б А (Бр V Б/);

БТо

БЯТ (г +1) - Ба Бе V БЯТ Бто ;

БОР (г + 1) - БКТБТО ;

Б5 (г + 1) - БЯТБОР .

Следует иметь в виду, что выбор очереди для записи в нее вновь поступившей задачи выполняется в соответствии с выражением

Б -штЬ [

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

Уравнениям соответствует граф недетерминированного автомата (рис. 5), содержащий клиентскую и серверную части алгоритма управления взаимодействующими процессами до момента «рандеву» (до оператора объединения Д&)) и после «рандеву».

"КЛИЕНТ"

Поступление "рандеву"

запрос процессора

Рис. 5. Граф НДА алгоритма планирования/диспетчеризации с локальными очередями

Представленная система канонических уравнений и граф НДА алгоритма планирования/диспетчеризации с локальными очередями отличается от соответствующей НДА-модели алгоритма планирования/диспетчеризации с глобальными очередями тем, что здесь присутствует алгоритм выбора локальной очереди, куда заносится вновь поступившая задача и отсутствует процедура выбора процессора, поскольку локальную очередь обслуживает единственный процессор, за которым эта очередь закреплена. Функция F(V) является разветвительной вершиной, за которой следует выполнение параллельных процессов, связанных с ожиданием поступления новой задачи в выбранную очередь.

Структура устройства планирования с локальными очередями задач

Аппаратное устройство планирования представлено в виде трех типов блоков (рис. 5): блок назначения задач; N блоков очередей со схемами управления, где N - число процессоров в многопроцессорной системе; блок формирования очередей.

Блок очереди FIFO предназначен для хранения готовых к обслуживанию задач. Число этих блоков равно числу процессоров в системе. Функционально они не отличаются от тех же блоков в диспетчерах с глобальной очередью, но имеют меньшее количество ячеек для хранения задач. И организованы они несколько иначе - например, записывать в очередь может только диспетчер по сигналам записи S_wrreq, подаваемым из блока планирования. Считывание содержимого регистра очереди производится по сигналу S_rdreq, поступающему от каждого процессора по индивидуальным линиям.

Входная шина данных формируется блоком планирования (V_task_id_xz[y...o]) и является общей для всех блоков очереди FIFO. Каждый процессор управляет только своей очередью; другими словами, он может читать содержимое только из одного блока FIFO. Также каждый процессор постоянно сканирует свою очередь (семафорный сигнал S_fifo_empty) на предмет наличия идентификаторов задач. Если в регистрах FIFO имеется идентификатор хотя бы одной задачи, процессор читает его; если нет, то переходит в режим ожидания.

Выходная шина данных из каждой очереди блока FIFO заводится в индивидуальный процессор. Семафорный сигнал S_fifo_full используется блоком назначения задач для указания на заполнение очереди блока FIFO. По этому сигналу диспетчер прекращает прием нового идентификатора в данную очередь.

Блок формирования очередей выбирает из всех N очередей блок FIFO, в котором находится минимальное количество задач (содержащий наименьшее количество записей). Номер очереди FIFO с наименьшим числом записей передается в блок планирования по трехразрядной выходной шине sel [2..0].

Выбор наименее загруженной очереди осуществляется на основании специальных сигналов use [5..0], вырабатываемых блоками очереди FIFO. Число занятых ячеек в каждом блоке очереди формируется как разность содержимого счетчиков записи и чтения. Блок выбора очереди осуществляет вычисление наименьшего значения из всех выставленных на шинах use [5..0] с помощью комбинационной схемы сравнения. На основании этого делается вывод о том, в какую очередь следует загружать идентификатор новой задачи.

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

Моделирование алгоритма планирования задач на языке VHDL и анализ результатов

Для моделирования работы планировщика с локальными очередями применялась схема, показанная на рис. 6. Была смоделирована ситуация, когда в систему может поступить одновременно до восьми задач, причем любой процессор обслуживает одну задачу на протяжении случайного периода времени (от 6 до 11 тактов).

Рис. 6. Схема для проведения экспериментальных исследований

Частота некоторых запросов выбрана таким образом, чтобы возникали конфликты за доступ к процессору. Например, второй запрос х7[о] поступил в тот момент, когда процессор занят обслуживанием предыдущего запроса. В состоянии конфликта вновь поступившая задача устанавливается планировщиком в локальную очередь, время ожидания в которой зависит от производительности процессора и трудоемкости задачи. Оценка таких задержек является предметом дальнейших исследований. Для этих целей авторами разрабатываются соответствующие модели массового обслуживания.

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

Рис. 7. Временные диаграммы, полученные в результате проведенного моделирования: xz[7] - xz[0] - идентификаторы задач, поступающие на вход блоков очереди FIFO; sa[7] - sa[o] - обработка процессорами пользовательских задач

Из анализа временных диаграмм можно сделать следующие выводы. Задержка выполнения задач в условиях бесконфликтности (латентность) составляет всего 5-7 процессорных тактов. В современных операционных СРВ, реализованных программно, задержка (обработка запроса) обычно составляет 5-10 тыс. процессорных тактов с учетом обработки прерывания по кванту.

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

Библиографический список

1. Вашкевич, Н. П. Аппаратная поддержка диспетчера задач с глобальной очередью в многопроцессорных системах / Н. П. Вашкевич, Р. А. Бикташев, А. И. Меркурьев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 3. - С. 3-14.

2. Вашкевич, Н. П. Недетерминированные автоматы и их использование для реализации систем параллельной обработки информации : монография / Н. П. Вашкевич, Р. А. Бикташев. - Пенза : Изд-во ПГУ, 2016. - 394 с.

3. Вашкевич, Н. П. Формализация алгоритмов управления параллельными процессами на основе использования механизма рандеву / Н. П. Вашкевич, Р. А. Бикташев // XXI век: итоги прошлого и проблемы настоящего плюс. - 2011. - № 3 (03). - С. 115-124.

4. Вашкевич, Н. П. Достоинство формального языка, основанного на концепции недетерминизма, при структурной реализации параллельных систем логического управления процессами и ресурсами / Н. П. Вашкевич, Р. А. Бикташев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 1. - С. 3-11.

Бикташев Равиль Айнулович, кандидат технических наук, доцент, кафедра «Вычислительная техника», Пензенский государственный университет. E-mail: rabiktashev@mail.ru

Емельянов Роман Игоревич, магистрант, Пензенский государственный университет. E-mail: romanemelyanow20@gmail.c0m

УДК 681.3.012 Бикташев, Р. А.

Структурная реализация и оценка временных характеристик многопроцессорных планировщиков с распределенной очередью задач / Р. А. Бикташев, Р. И. Емельянов // Вестник Пензенского государственного университета. - 2017. - № 3 (17). - С. 66-75.