Адаптивное квотирование ресурсов

Организация параметрического лимитирования ресурсов между конкурирующими процессами

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

Что такое партиции?

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

Для решения этой задачи некоторые системы строят вокруг приложений виртуальные «стены», называемые партициями (partitions), гарантирующими, что каждый партиция будет располагать строго определенным набором ресурсов. Под ресурсами в первую очередь понимается время ЦПУ, но к ним могут также относятся любые разделяемые ресурсы, такие как ОЗУ или дисковое пространство.

16_1.png
Рисунок 1. Статические партиции гарантируют, что процессы получат те ресурсы, которые заданы разработчиком системы

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

В результате адаптивные партиции обладают большей гибкостью, чем статические партиции, функционирующие согласно спецификации ARINC 653. В дополнение к адаптивности партиции позволяют моделировать принципиально иное использование процессорного времени, которое рассматривается как некоторый ресурс. Возможность деления партиций на суб-партиции позволяет тонко настраивать каждую из них.

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

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

Квоты партиций обеспечивают:

Использование нескольких партиций позволяет исключить наличие единой точки сбоя. Например, «зациклившийся» процесс не сможет расходовать все системные ресурсы; процессы в других партициях будут по-прежнему получать предназначенные для них разделяемые ресурсы.

В настоящее время модель процессов ЗОСРВ «Нейтрино» обеспечивает значительно большую защиту, чем многие операционные системы, включающую:

Адаптивные партиции

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


Note: Адаптивное квотирование не требует внесения изменений в программный код, но требует изменения загрузочного образа.

Адаптивное квотирование задает обработку потоков – стандартную или в зависимости от назначения или деятельности. Как и статическое квотирование, адаптивное квотирование имеет выделенный запас (бюджет), который гарантирует минимальный ресурс процессора. В отличие от статического квотирования, адаптивное квотирование:

Преимущества адаптивного квотирования ресурсов

При проектировании, разработке, выполнении и отладке систем адаптивное квотирование предоставляет следующие полезные возможности:

Проектирование производительности продукта

Квотирование

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

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

Наследование партиции

Другой важной особенностью адаптивного квотирования является концепция наследования партиций.

С точки зрения планирования потоков эта особенность позволяет разработчикам запускать серверные процессы с нулевым (или минималистичным) бюджетом. Когда сервер выполняет обработку клиентских запросов используемое им время «оплачивается» из бюджета клиентской партиции. Если бы такой особенности не было, то для сервера пришлось бы задавать некоторый бюджет безотносительно того, насколько часто этот сервер используется. Данная особенность предоставляет следующие возможности:

Контроль над сложностью проекта

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

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

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

Такого рода трудности могут потребовать недели и более на идентификацию проблемы и несколько недель на корректировку приоритетов во всей системе и повторное тестирование. Если эти проблемы не будут эффективно решены, то масштабируемость продукта будет ограниченной.

В большей мере это связано с тем фактом, что эффективного способа распределить время ЦПУ между всеми группами не существует. Приоритеты потоков предоставляют способ гарантировать выполнение критичной задачи, но не гарантирует выделение времени ЦПУ для важной, но не критичной задачи, которая может быть «заморожена» при выполнении своей обычной работы. Кроме того, в большой команде разработчиков достаточно сложно выработать единый подход к назначению приоритетов потоков.

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

Обеспечение безопасности

Многие системы уязвимы к DoS-атакам (Denial of Serviceотказ сервиса или отказ в обслуживании). Например, злонамеренные пользователи могут «бомбардировать» систему запросами, обрабатываемыми некоторым процессом. При этом процесс может занять все ресурсы ЦПУ и сделать невозможным функционирование остальных компонентов системы. Данная проблема решается с помощью адаптивного квотирования. Планировщик предоставляет разные бюджеты для разных функций системы. Это гарантирует, что система всегда предоставит достаточное время ЦПУ для важных задач. Потоки могут изменять свои приоритеты, создавая «дыру» в безопасности, но планировщик потоков может быть сконфигурирован так, что бы запрещать потокам в партиции изменять свой бюджет.

16_2.png
Рисунок 2. DoS-атака может заблокировать выполнение других функций системы

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

Данная проблема решается с помощью адаптивного квотирования. Планировщик предоставляет разные бюджеты для разных функций системы. Это гарантирует, что система всегда предоставит достаточное время ЦПУ для важных задач. Потоки могут изменять свои приоритеты, создавая «дыру» в безопасности, но планировщик потоков может быть сконфигурирован так, что бы запрещать потокам в отсеке изменять свой бюджет.

16_3.png
Рисунок 3. Адаптивное квотирование позволяет ограничить влияние DoS-атак на систему

Применение квотирования позволяет изолировать DoS-атаку в пределах партиции. Поскольку адаптивное квотирование может выделять неиспользуемое время ЦПУ тем партициям, которым оно требуется, отпадает необходимость отслеживать, насколько законным является увеличение затрат ресурсов для того или иного процесса.

Отладка

Адаптивное квотирование позволяет упростить отладку встроенной системы — как на этапе разработки, так и на этапе развертывания — с помощью предоставления “аварийного выхода” в данной системе.

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

Адаптивный планировщик потоков

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

Адаптивный планировщик спроектирован поверх базовой архитектуры ЗОСРВ «Нейтрино» в первую очередь для решения следующих сложностей в разработке встраиваемых систем:




Предыдущий раздел: перейти