Сценарий для анализа производительности
Теперь рассмотрим показанный на рис.29 распределенный проект, в котором имеется по одному узлу на каждый лифт, по одному узлу на каждый этаж и еще один узел для Планировщика. Предположим, что используются те же самые процессоры (то есть время выполнения не меняется) и локальная сеть со скоростью 100 Мбит/с, характеризуемая фиксированными задержками. Допустим, дано 12 лифтов и 40 этажей. Нагрузка на каждый узел лифта и на каждый узел этажа должна быть меньше, чем в однопроцессорной централизованной конфигурации. Предположим, однако, что частота прибытия не изменилась, - крайне маловероятный худший случай. Параметры задач приведены в табл.2. Коэффициент использования ЦП для Подсистемы Лифта равен 0,23, а для Подсистемы Этажа – 0,04. Это наводит на мысль о том, что один узел вполне мог бы обслуживать несколько этажей.
В более детальном анализе нуждается узел Планировщика, поскольку именно он представляет собой потенциальное узкое место. Число этажей в четыре раза увеличилось, значит, период задачи Планировщик Лифта пропорционально уменьшился (с 200 до 50 мс). Допустим, что Сервер Состояния и Плана Движения Лифта, который получает сообщения от нескольких экземпляров Подсистемы Лифта, имеет период 10 мс и требует 2 мс для обновления объекта Сводное Состояние и План Движения Лифта. Из табл.2 видно, что коэффициент использования ЦП в узле Планировщика равен 0,6 - меньше порога 0,69, который дает теорема о верхней границе. Сетевые задержки составляют 2 мс. Время, затраченное на последовательность событий остановка Лифта на Этаже, равно 41 мс, что меньше 50 мс. Время, затраченное на последовательность событий Выбор Этажа Назначения, равно 48 мс, что меньше 100 мс. Время, затраченное на последовательность событий вызов Лифта, составляет 82 мс, что меньше 200 мс. Рис.37. Последовательность событий в распределенной подсистеме лифта
Рис.38. Последовательность событий в распределенной системе управления лифтом
Рис.39. Последовательность событий для подсистемы планировщика
Планирование в реальном времени для распределенной архитектуры Рассмотрим три критические последовательности событий для распределенной конфигурации (см. рис.37-39). Последовательность событий «Остановка Лифта на Этаже» (период = Та): А1: Интерфейс Датчиков Прибытия получает и обрабатывает прерывание. А2: Интерфейс Датчиков Прибытия посылает Контроллеру Лифта сообщение приближается к Этажу. A3: Контроллер Лифта принимает сообщение и проверяет объект Локальное Состояние и План Движения Лифта, чтобы определить, должен ли лифт сделать остановку. А4: Контроллер Лифта вызывает операцию остановить Мотор, если лифту нужно остановиться. А5: Контроллер Лифта отправляет по сети сообщение прибыл подсистеме Планировщик, а принимает его Сервер Состояния и Плана Движения Лифта. А6: Сервер Состояния и Плана Движения Лифта вызывает операцию прибыл объекта Сводное Состояние и План Движения Лифта. Последовательность событий «Выбор Этажа Назначения» (период = Тb): Е1: Интерфейс Кнопок Лифта получает и обрабатывает прерывание. Е2: Интерфейс Кнопок Лифта посылает Диспетчеру Лифта сообщение запрос Лифта. ЕЗ: Диспетчер Лифта получает сообщение и записывает этаж назначения в объект Локальное Состояние и План Движения Лифта. Е4: Диспетчер Лифта отправляет по сети сообщение обязательство Лифта подсистеме Планировщик, где его принимает Сервер Состояния и Плана Движения Лифта. Е5: Сервер Состояния и Плана Движения Лифта вызывает операцию обновить План объекта Сводное Состояние и План Движения Лифта. Последовательность событий «Вызов Лифта» (период = Тс): F1: Интерфейс Кнопок Этажа получает и обрабатывает прерывание. F2: Интерфейс Кнопок Этажа посылает по сети Планировщику сообщение запрос на Обслуживание, адресуя его задаче Планировщик Лифта в подсистеме Планировщик. F3: Планировщик Лифта принимает сообщение и опрашивает объект Сводное Состояние и План Движения Лифта с целью определить, едет ли какой-нибудь лифт на данный этаж. Если не едет, то Планировщик должен выбрать лифт. F4: Планировщик Лифта отправляет по сети сообщение запрос Планировщика задаче Диспетчер Лифта, размещенной в узле выбранного лифта. F5: Диспетчер Лифта получает сообщение и записывает этаж назначения в объект Локальное Состояние и План Движения Лифта. F6: Диспетчер Лифта передает по сети сообщение обязательство Лифта подсистеме Планировщик, где его принимает Сервер Состояния и Плана Движения Лифта. F7: Сервер Состояния и Плана Движения Лифта вызывает операцию обновить План объекта Сводное Состояние и План Движения Лифта. 15.3. Последовательность событий «Остановка Лифта на Этаже» В эту последовательность событий входят только задачи из Подсистемы Лифта и Подсистемы Планировщика (см. рис.37-39). Сначала опишем Подсистему Лифта. Задачи, входящие в последовательность событий: Интерфейс Датчиков Прибытия и Контроллер Лифта. Период последовательности равен Та = 50 мс. Рассмотрим четыре фактора, вытекающие из обобщенной теории планирования в реальном времени: – время выполнения задач в последовательности событий. 2 мс для задачи Интерфейс Датчиков Прибытия, затем 5 мс для задачи Контроллер Лифта, что в сумме дает Са = 7 мс. Коэффициент использования ЦП за счет выполнения Ua = Сa / Тa - 7 / 50 = 0,14; – время вытеснения более приоритетными задачами с меньшими периодами. Поскольку эта последовательность имеет наименьший период, таких задач нет; – вытеснение более приоритетными задачами с большими периодами. Возможно вытеснение на 3 мс задачей Интерфейс Кнопок Лифта, обрабатывающей прерывание. Время вытеснения Ср = 3 мс, а соответствующий коэффициент использования Up = 3 / 50 = 0,06; – время блокировки задачами с более низким приоритетом. Вероятна блокировка на 6 мс задачей Диспетчер Лифта. Время блокировки Ва в худшем случае равно 6 мс, а коэффициент использования Ub = Ва / Та = 6 / 50 = 0,12. Теперь легко определить суммарное затраченное время и полный коэффициент использования ЦП. Суммарное затраченное время = время выполнения + время вытеснения + + время блокировки в худшем случае = 7 + 3 + 6= 16 мс, что меньше периода, равного 50 мс. Полный коэффициент использования = коэффициент использования за счет выполнения + коэффициент использования за счет вытеснения + коэффициент использования за счет блокировки = Ue + Up + Ub = 0,14 + 0,06 + + 0,12 = 0,32, что меньше верхней границы 0,69. Согласно обобщенной теореме о верхней границе коэффициента использования и обобщенной теореме о времени завершения, задачи в последовательности событий Остановка Лифта на Этаже всегда успевают уложиться в срок. В данном случае ограничение по времени жесткое: если задача не завершится вовремя, лифт проедет этаж без остановки. Коэффициент использования ЦП ниже, чем в нераспределенном случае, поскольку теперь в Подсистеме Лифта меньше задач. Подсчитаем время, необходимое для обработки сообщения (А5), поступающего по сети, с учетом сетевых задержек: А5: Контроллер Лифта посылает по сети сообщение прибыл подсистеме Планировщик. Предположим, что размер сообщения, включая заголовки коммуникационного протокола, равен 25 байтам, или 200 битам. При скорости передачи 100 Мбит/с сетевая задержка составит Dt = 200 / 100000 = 2 мс. Рассмотрим далее подсистему Планировщик (рис.39): А5.1: Задача Сервер Состояния и Плана Движения Лифта получает сообщение. Допустим, что время на прием и обработку сообщения, посланного по сети, Сm = 1 мс. А6: Задача Сервер Состояния и Плана Движения Лифта вызывает операцию прибыл объекта Сводное Состояние и План Движения Лифта, на выполнение которой уходит Са = 2 мс. Время возможной блокировки при доступе к объекту со стороны задачи Планировщик Лифта bs = 20 мс. Время Еu, затраченное подсистемой Планировщик в худшем случае, составит Cm + Cs + Bs = 1 + 2 + 20 = 23 мс. Приняв во внимание обе подсистемы и сетевые задержки, мы можем вычислить время Еа, потраченное на обработку последовательности событий Остановка Лифта на Этаже в худшем случае. Еа = время Ее, потраченное Подсистемой Лифта, + сетевая задержка Dt + время Еu, потраченное подсистемой Планировщик на обновление объекта Сводное Состояние и План Движения Лифта. Подстановка значений дает Еа = 16 + 2 + 23 = 41 мс. Таким образом, оценка максимального времени (41 мс) оказывается меньше требуемого времени реакции (50 мс). На самом деле время на обработку сообщения прибыл некритично. Важно лишь вовремя остановить мотор, что вполне достижимо. 15.4. Последовательность событий «Выбор Этажа Назначения» В обработке последовательности событий Выбор Этажа Назначения также принимают участие только задачи из Подсистемы Лифта и Подсистемы Планировщика (см. рис.37-39). Сначала рассмотрим Подсистему Лифта. Задачи, входящие в последовательность событий: Интерфейс Кнопок Этажа, Планировщик и Диспетчер Лифта. Период Тb этой последовательности равен 100 мс. Рассмотрим четыре фактора, вытекающие из обобщенной теории планирования в реальном времени: – время выполнения задач в последовательности событий. 3 мс для задачи Интерфейс Кнопок Лифта, затем 6 мс для задачи Диспетчер Лифта, что в сумме дает 9 мс. Коэффициент использования ЦП за счет выполнения Ue=0,09; – время вытеснения более приоритетными задачами с меньшими периодами. В течение 100 мс по два раза могут выполниться задачи Интерфейс Датчиков Прибытия и Контроллер Лифта (вытесняют задачу Диспетчер Лифта), что приведет к вытеснению на 14 мс, так что Up=0,14; – вытеснение более приоритетными задачами с большими периодами. Таких задач нет; – время блокировки задачами с более низким приоритетом. Время блокировки нулевое, так как все задачи в Подсистеме Лифта уже были учтены при рассмотрении времени вытеснения и времени выполнения. Таким образом, получаем: Суммарное затраченное время = время выполнения + время вытеснения + + время блокировки в худшем случае = 9 + 14 = 23 мс, что меньше периода, равного 100 мс. Полный коэффициент использования = Up + Ue = 0,09 + 0,14 = 0,23, что меньше верхней границы 0,69. Согласно обобщенной теореме о верхней границе коэффициента использования и обобщенной теореме о времени завершения, задачи из Подсистемы Лифта, принимающие участие в последовательности событий Выбор Этажа Назначения удовлетворяют временным ограничениям. И снова коэффициент использования ЦП оказывается меньше, чем для централизованного решения. В этой последовательности событий задача Диспетчер Лифта посылает по сети сообщение обязательство Лифта задаче Планировщик. Она рассматривается так же, как сообщение прибыл в предыдущем разделе: имеется дополнительная сетевая задержка 2 мс (событие Е4), и в худшем случае для обновления объекта Сводное Состояние и План Движения Лифта задачей Сервер Состояния и Плана Движения Лифта (событие Е5) требуется Еu = 23 мс. Общее время Еb, потраченное на обработку последовательности событий Выбор Этажа Назначения в худшем случае, вычисляется так: Еb = время Ее, потраченное Подсистемой Лифта, + сетевая задержка Dt + время Еu, потраченное подсистемой Планировщик на обновление объекта Сводное Состояние и План Движения Лифта. Подстановка значений дает Еа = 23 + 2 + 23 = 48 мс. Таким образом, оценка максимального времени (48 мс) оказывается намного меньше требуемого времени реакции (100 мс). 15.5. Последовательность событий «Вызов Лифта» В обработке последовательности событий Вызов Лифта принимают участие задачи из нескольких распределенных подсистем (см. рис.37-39). Хотя, как показано выше, полный коэффициент использования ЦП в каждом узле не выходит за допустимые пределы, необходимо удостовериться, что затраченное время не превышает заданного предельного значения. Нужно применить теорию планирования в реальном времени к каждому узлу, учитывая параметры, приведенные в табл.2. Период последовательности событий Тс = 200 мс. Сначала рассмотрим Подсистему Этажа: F1: Задача Интерфейс Кнопок Этажа получает и обрабатывает прерывания. В своей подсистеме эта задача имеет наивысший приоритет, так что вытеснить ее никто не в состоянии. Блокировка также не может произойти. Время выполнения Cf = 4 мс. F2: Задача Интерфейс Кнопок Этажа посылает сообщения. Накладные расходы на подготовку сообщения к отправке Сm = 1 мс. Полное время, потраченное Подсистемой Этажа, Ef = Cf + Cm = 4 + 1 = 5мс. Далее учтем сетевые задержки: F2.1: Сообщение запрос на Обслуживание посылается по сети подсистеме Планировщик. Предположим, что размер сообщения, включая заголовки протокола, равен 25 байтам, или 200 битам. При скорости передачи 100 Мбит/с сетевая задержка составит Dt = 200 / 100000 = 2 мс. Теперь разберем подсистему Планировщик: F2.2: Задача Планировщик Лифта получает сообщение. Допустим, что время на прием и обработку сообщения, посланного по сети, С = 1 мс. F3: Планировщик Лифта спрашивает у объекта Сводное Состояние и План Движения Лифта, едет ли на данный этаж какой-нибудь лифт. Если нет, то Планировщик Лифта выбирает лифт и посылает Диспетчеру Лифта сообщение запрос Планировщика, на что уходит Cs = 20 мс. Предположим, что для подготовки сообщения к отправке требуется Сm = 1 мс. Время возможной блокировки при доступе к объекту со стороны задачи Сервер Состояния и Плана Движения Лифта bs = 2 мс. Время Es, затраченное подсистемой Планировщик в худшем случае, равно Cm + Cs + Cm+ Bs = 1 + 20 + 1 + 2 = 24 мс. Учтем сетевые задержки: F3.1: Сообщение запрос на Обслуживание посылается по сети подсистеме Планировщик. Как и раньше, сетевая задержка Dt = 2 мс. Проанализируем подсистему Лифт (рис.37): F4: Задача Диспетчер Лифта получает и обрабатывает сообщение запрос Планировщика, Сm = 1 мс. F5: Диспетчер Лифта сохраняет этаж назначения в объекте Локальное Состояние и План Движения Лифта. Время ЦП Се, потраченное на выполнение шагов F4 и F5, равно 6 мс. F6: Диспетчер Лифта посылает сообщение обязательство Лифта подсистеме Планировщик. Время на подготовку сообщения Сm = 1 мс. Итак, на выполнение задачи Диспетчер Лифта уходит Сm + Се + Сm = 1 + 6 + 1 = 8 мс. В Подсистеме Лифта возможны следующие задержки: – время вытеснения. Каждая из задач Интерфейс Датчиков Прибытия и Контроллер Лифта может выполняться по одному разу, но не более 7 мс. Задачи Интерфейс Кнопок Лифта и Диспетчер Лифта (обработка сообщений от кнопок лифта) способны выполняться по одному разу, но не более 9 мс; – время блокировки. Заметим, что блокировка в связи с доступом к объекту со стороны других задач уже учтена, так что дополнительных задержек не возникает. Время Еe, потраченное Подсистемой Лифта в худшем случае, равно сумме времени выполнения и полного времени вытеснения, то есть 16 + 8 = 24мс. Еще 2 мс уходит на сетевые задержки (событие F6.1). Как и раньше, в худшем случае для обновления объекта Сводное Состояние и План Движения Лифта задачей Сервер Состояния и Плана Движения Лифта (событие F7) требуется Е =23мс. С учетом всех трех подсистем и сетевых задержек на обработку последовательности событий Вызов Лифта в худшем случае нужно: Et = время Ер потраченное Подсистемой Этажа, + сетевая задержка Dt + время, потраченное подсистемой Планировщик на выбор лифта, + сетевая задержка Dt + время Ее, потраченное Подсистемой Лифта, + сетевая задержка Dt + время Еu, потраченное подсистемой Планировщик на обновление объекта Сводное Состояние и План Движения Лифта. Подстановка значений дает Et = 5 + 2 + 24 + 2 + 24 + 2 + 23 = 82 мс. Таким образом, оценка максимального времени (82 мс) на обработку последовательности событий Вызов Лифта оказывается намного меньше требуемого времени реакции (200 мс). Даже если бы сетевая задержка при передаче каждого сообщения равнялась 10, а не 2 мс, общее затраченное время составило бы всего 106 мс.
|