АКВОСА
AQuoSA (Адаптивная архитектура качества обслуживания) [1] представляет собой открытую архитектуру для обеспечения адаптивных функций качества обслуживания в ядре Linux . Проект имеет гибкую, портативную, легкую и открытую архитектуру для поддержки служб, связанных с QoS, поверх такой операционной системы общего назначения, как Linux . Архитектура хорошо основана на формальном анализе планирования и теоретических результатах управления.
Ключевой особенностью AQuoSA является уровень резервирования ресурсов, который способен динамически адаптировать распределение ЦП для приложений, поддерживающих качество обслуживания, в зависимости от их требований во время выполнения . Чтобы обеспечить такую функциональность, AQuoSA включает в себя планировщик ЦП на уровне ядра , реализующий механизм резервирования ресурсов для ЦП на основе Earlyest Deadline First (EDF) . Это дает ядру Linux возможность реализовать (частичную) временную изоляцию задач, выполняемых в системе.
AQuoSA — один из немногих проектов, который предоставляет возможность планирования в реальном времени непривилегированным пользователям в многопользовательской системе контролируемым образом с помощью правильно разработанной модели контроля доступа.
Описание
[ редактировать ]Архитектуру проекта можно резюмировать следующим образом:
Патч к ядру Linux
[ редактировать ]На самом низком уровне патч к ядру Linux добавляет возможность уведомлять динамически загружаемые модули о любом соответствующем событии планирования. Они были выявлены при создании или прекращении задач, а также в событиях блокировки и разблокировки. Этот патч минимально инвазивен, поскольку он состоит из нескольких строк кода, правильно вставленных в основном в код планировщика Linux (sched.c). Его назвали «Общим патчем планировщика», поскольку он потенциально позволяет реализовать любую политику планирования.
Резервирование ресурсов
[ редактировать ]Уровень резервирования ресурсов состоит из трех компонентов.
Основной компонент представляет собой динамически загружаемый модуль ядра , который реализует парадигму планирования резервирования ресурсов для ЦП, используя функциональные возможности, представленные в ядре Linux через патч Generic Scheduler Patch.
Во-вторых, библиотека пользовательского уровня (библиотека QRES) позволяет приложению использовать новую политику планирования посредством полного и хорошо продуманного набора вызовов API . По сути, эти вызовы позволяют приложению попросить систему зарезервировать определенный процент ЦП для своих процессов.
В-третьих, компонент уровня ядра (Супервизор) опосредует все запросы, сделанные приложениями через библиотеку QRES, так что общая сумма запрошенных долей ЦП не нарушает условие планировщика (менее единицы или чуть меньше чем один, из-за накладных расходов). Поведение супервизора полностью настраивается системным администратором, поэтому можно указать для каждого пользователя/группы минимально гарантированные и максимально допустимые значения для резервирований, сделанных на ЦП.
С помощью AQuoSA приложения могут напрямую использовать уровень резервирования ресурсов, что позволяет им резервировать часть ЦП для работы с необходимыми гарантиями планирования. Например, мультимедийное приложение может попросить операционную систему запустить приложение с гарантией того, что оно будет запланировано как минимум на Q миллисекунд каждые P миллисекунд, где Q и P зависят от характера приложения.
При регистрации приложения на уровне резервирования ресурсов можно указать минимальное гарантированное резервирование, которое система всегда должна гарантировать приложению. На основе запросов минимального гарантированного резервирования уровень выполняет контроль допуска , т.е. разрешает вход новому приложению только в том случае, если после его добавления новый набор запущенных приложений не преодолеет предел насыщения ЦП.
Адаптивное резервирование
[ редактировать ]Для типичного мультимедийного приложения, использующего технологии высокого сжатия, может быть довольно сложно, непрактично или неудобно запускать такие приложения с фиксированным резервированием ЦП. Фактически, наиболее эффективное резервирование, которое следует использовать, может меняться со временем из-за изменения уровня сжатия, что приводит к различному времени распаковки.
Традиционные системы реального времени используют методы анализа WCET (время выполнения наихудшего случая), чтобы вычислить максимальное время, в течение которого экземпляр, например, периодической задачи, может выполняться на ЦП, прежде чем блокировать ожидание следующего экземпляра.
Подобный анализ очень сложен в современных сложных мультимедийных приложениях, особенно при работе на оборудовании общего назначения, таком как стандартные ПК, где такие технологии, как многоуровневые кэши, конвейеры выполнения ЦП, буферы на шине, шины с несколькими главными устройствами, вводят множество непредсказуемых переменных в определение времени, необходимого для доступа к памяти.
В таких системах гораздо удобнее настраивать конструкцию системы исходя из средней ожидаемой нагрузки приложения. В противном случае система может быть значительно недостаточно использована во время работы.
Как уже упоминалось, для некоторых классов мультимедийных приложений, таких как видеоплееры , совершенно невозможно найти подходящее фиксированное значение доли ЦП, требуемой приложению во время выполнения, из-за сильных колебаний нагрузки в зависимости от на фактических данных, которые обрабатываются приложением. Фиксированное резервирование, основанное на средних требованиях или немного превышающее их, приводит к временным периодам низкого качества во время выполнения (например, при воспроизведении фильма). С другой стороны, фиксированное резервирование, основанное на максимальной ожидаемой нагрузке, приводит к ненужному избыточному резервированию ЦП большую часть времени, за исключением периодов, когда нагрузка действительно приближается к максимальному ожидаемому значению.
Для этих классов приложений гораздо удобнее использовать методы адаптивного резервирования, подобные тем, которые предоставляются уровнем адаптивного резервирования AQuoSA, которые выполняют непрерывный онлайн-мониторинг вычислительных требований процессов приложения, чтобы может динамически адаптировать резервирование, выполненное в ЦП, в зависимости от отслеживаемых данных.
Уровень адаптивного резервирования предоставляет приложениям API для использования набора контроллеров, которые имеют довольно общее применение в широком наборе мультимедийных приложений.
Модель контроля доступа AQuoSA
[ редактировать ]Большинство версий Linux, работающих в режиме реального времени, требуют, чтобы пользователи возможностей модифицированной ОС, работающие в режиме реального времени, имели права root в системе. Это вполне приемлемо в контексте встроенной системы. Однако это является чрезмерным для многопользовательских систем, где функции планирования в реальном времени необходимы для мультимедийных приложений и т.п. Таким образом, в AQuoSA реализована специальная модель контроля доступа, с помощью которой системные администраторы могут:
- определять квоты планирования в реальном времени для отдельных пользователей или групп с точки зрения максимальных значений минимальной гарантированной пропускной способности, которую ОС может предоставить отдельным пользователям или группам в целом;
- контролировать, как дополнительные требуемые значения пропускной способности, превышающие минимальные гарантированные показатели, распределяются между конкурирующими пользователями в ситуациях перегрузки;
- контролировать максимальные накладные расходы на планирование, которые могут быть наложены на систему из-за резервирования в реальном времени, созданного отдельными пользователями или группами; например, позволяя контролировать минимальный период, который можно указать при резервировании в реальном времени.
Более подробную информацию можно найти в статье по этой теме, опубликованной на RTAS 2008. [2]
Поздняя эволюция
[ редактировать ]AQuoSA представила первый предложенный патч EDF для ядра Linux , который был представлен в 2009 году и выпущен как SCHED_EDF .
Вскоре после этого патч был переименован в SCHED_DEADLINE.
В последующие годы разработчики выпустили множество последующих патчей. EDF также стал основой проекта IRMOS, а последующая эволюция была внесена в проект.
В 2012 году SCHED_DEADLINE превратился в PREEMPT RT .
PREEMT_RT продолжал развиваться, хотя все еще в виде патча, и оставался канонической реализацией планирования EDF в Linux до выхода Kernel 6.x в 2023 году.
До этого времени планирование EDF обычно было доступно только как опция времени компиляции ядра, которая редко включалась в обычных дистрибутивах Linux. Однако существовала простая, почти автоматизированная процедура компиляции ядра, доступная пользователям Linux, чтобы они могли использовать ее, если и/или когда это необходимо.
В октябре 2023 года в выпуске ядра 6.6 наконец-то появилось использование EDF по умолчанию в стандартном ядре Linux. С тем, что теперь известно как EEVDF (EEVDF является прямым потомком исходного проекта EDF). Он был включен в основную ветку ядра в качестве замены устаревшего планировщика CFS , который представлял собой стандартный, «мягкий» вытесняющий планировщик реального времени, используемый в большинстве установок Linux с момента его принятия в ядре 2.6.23 в 2007 году, а также возможно, в качестве окончательной замены PREEMPT_RT, хотя по состоянию на 2024 год это не точно.
Внешние ссылки
[ редактировать ]Ссылки
[ редактировать ]- ^ Палополи, Луиджи; Кучинотта, Томмазо; Марцарио, Лука; Липари, Джузеппе (апрель 2008 г.). «AQuoSA — Адаптивная архитектура качества обслуживания» . Программное обеспечение: практика и опыт . 39 :1–31. CiteSeerX 10.1.1.149.8231 . дои : 10.1002/сп.883 . hdl : 11382/361474 . S2CID 3056232 .
- ^ Кучинотта, Томмазо (2008). «Контроль доступа для адаптивного резервирования в многопользовательских системах». 2008 Симпозиум IEEE по встраиваемым технологиям и приложениям реального времени . стр. 387–396. дои : 10.1109/RTAS.2008.16 . ISBN 978-0-7695-3146-5 . S2CID 1008365 .