Открыть сервис

ResourceManager

ResourceManager — это компонент операционной системы или программной платформы, отвечающий за учёт, распределение и контроль доступа к вычислительным ресурсам (процессорное время, оперативная память, дисковое пространство, пропускная способность сети, графические ускорители) между запущенными процессами, приложениями или пользователями. Основная функция ResourceManager — предотвращение конфликтов при одновременном доступе к ресурсам, обеспечение справедливого распределения и соблюдение заданных политик (например, приоритетов, квот, гарантий производительности). В зависимости от контекста, ResourceManager может быть частью ядра операционной системы, гипервизора, системы управления базами данных (СУБД), облачной платформы или распределённой вычислительной среды.

История

Концепция управления ресурсами возникла в 1960-х годах с появлением многозадачных операционных систем. Первые мейнфреймы (например, IBM System/360) требовали централизованного контроля над процессорным временем и памятью, чтобы несколько пользователей могли одновременно выполнять свои задачи. В 1970-х годах в операционных системах Unix были реализованы базовые механизмы планирования процессов (scheduler) и управления памятью (memory manager), которые можно считать предшественниками современных ResourceManager.

С развитием распределённых вычислений в 1980-х годах возникла необходимость в менеджерах, координирующих ресурсы нескольких машин. В 1990-х годах появились первые системы управления кластерами (например, PBS — Portable Batch System), а в 2000-х — облачные платформы (Amazon Web Services, Microsoft Azure, Google Cloud Platform), где ResourceManager стал ключевым компонентом, обеспечивающим виртуализацию и масштабирование. В России в 2010-х годах активно развивались собственные решения, такие как платформа «Аренда» (разработчик — компания «Криптософт») и системы управления ресурсами в суперкомпьютерах (например, в МГУ имени М. В. Ломоносова).

Классификация

ResourceManager можно классифицировать по нескольким признакам.

По уровню абстракции

  • Аппаратный ResourceManager — управляет физическими ресурсами (ядра процессора, объём ОЗУ, диски). Пример: диспетчер задач в ядре Linux.
  • Виртуальный ResourceManager — работает с виртуализированными ресурсами (виртуальные машины, контейнеры). Пример: vSphere Resource Manager от VMware.
  • Прикладной ResourceManager — управляет ресурсами в рамках конкретного приложения или сервиса (например, пул соединений в СУБД).

По типу управляемых ресурсов

  • Процессорный ResourceManager — распределяет процессорное время между процессами (планировщик задач).
  • Memory ResourceManager — управляет выделением и освобождением оперативной памяти.
  • Storage ResourceManager — контролирует дисковое пространство и ввод-вывод.
  • Network ResourceManager — регулирует пропускную способность сетевых интерфейсов.
  • GPU ResourceManager — распределяет вычислительные ресурсы графических ускорителей (например, в системах машинного обучения).

По архитектуре

  • Централизованный — один менеджер управляет всеми ресурсами системы. Характерен для небольших кластеров или однопользовательских систем.
  • Распределённый — несколько менеджеров координируют ресурсы через сеть. Используется в крупных облачных и суперкомпьютерных средах (например, Apache Hadoop YARN).
  • Гибридный — сочетает централизованное управление для глобальных политик и локальное для быстрых решений.

Устройство и принципы работы

ResourceManager обычно состоит из нескольких подсистем:

  1. Мониторинг ресурсовсбор данных о текущем состоянии ресурсов (загрузка ЦП, использование памяти, количество активных процессов). Данные могут собираться через агенты на каждом узле или через аппаратные датчики.
  2. Планировщик (Scheduler) — определяет, какой процесс или задача получит доступ к ресурсу и в какой момент. Алгоритмы планирования включают:
  • First-Come, First-Served (FCFS) — по очереди;
  • Round Robin — циклическое распределение;
  • Priority-based — с учётом приоритетов;
  • Fair Share — справедливое распределение между пользователями.
  1. Диспетчер квот (Quota Manager) — устанавливает лимиты потребления ресурсов для пользователей или групп (например, не более 4 ГБ ОЗУ на пользователя).
  2. Механизм блокировок — предотвращает одновременное использование ресурса несколькими процессами, если это недопустимо (например, эксклюзивный доступ к файлу).
  3. Интерфейс управления — API или командная строка для администраторов, позволяющая задавать политики, просматривать статистику и изменять конфигурацию.

Пример алгоритма: Fair Scheduling

В распределённых системах (например, YARN) используется алгоритм справедливого планирования (Fair Scheduler). Он распределяет ресурсы так, чтобы все запущенные приложения получали примерно равную долю, но с учётом приоритетов. Если одно приложение не использует свою долю, она временно передаётся другим.

Применение

ResourceManager находит применение в различных областях.

Операционные системы

В ядре Linux ResourceManager реализован через компоненты: планировщик процессов (CFS — Completely Fair Scheduler), менеджер памяти (OOM Killer при нехватке ОЗУ), диспетчер ввода-вывода (CFQ — Completely Fair Queuing). В Windows аналогичные функции выполняют диспетчер задач и подсистема управления памятью.

Облачные платформы

В облачных средах ResourceManager обеспечивает:

  • Автомасштабирование — автоматическое добавление или удаление виртуальных машин в зависимости от нагрузки.
  • Балансировку нагрузки — распределение запросов между серверами.
  • Управление квотами — ограничение потребления ресурсов для каждого клиента.

Примеры: OpenStack Nova (управление вычислительными ресурсами), Kubernetes (управление контейнерами и подами).

Системы управления базами данных

В СУБД (например, PostgreSQL, Oracle) ResourceManager управляет пулами соединений, кэшами, блокировками таблиц и распределением памяти между запросами. Это предотвращает «голодание» одних запросов из-за ресурсоёмких операций других.

Суперкомпьютеры

В высокопроизводительных вычислениях ResourceManager (например, SLURM, PBS Pro) распределяет узлы, ядра и память между параллельными задачами. Пользователи отправляют задания, а менеджер ставит их в очередь и выделяет ресурсы в соответствии с политиками.

Промышленность

В России ResourceManager используется в системах управления производством (MES — Manufacturing Execution Systems). Например, на предприятиях «Росатома» и «Газпрома» такие системы контролируют загрузку оборудования, распределение сырья и энергоресурсов.

Примеры реализаций

  • Apache Hadoop YARN — ResourceManager для кластеров больших данных, управляющий вычислительными ресурсами (контейнерами) для MapReduce и других фреймворков.
  • Kubernetes — система оркестрации контейнеров, включающая компонент kube-scheduler, который распределяет поды по узлам кластера.
  • SLURM (Simple Linux Utility for Resource Management) — популярный менеджер для суперкомпьютеров, используемый в российских вычислительных центрах (например, в МФТИ).
  • Windows Resource Manager — встроенный инструмент в Windows Server для управления квотами и приоритетами процессов.
  • OpenStack Placement — сервис для учёта и распределения ресурсов (CPU, RAM, диск) между виртуальными машинами.

Критика и ограничения

ResourceManager не лишён недостатков:

  • Накладные расходы — мониторинг и планирование потребляют собственные ресурсы (процессорное время, память), что может снижать общую производительность системы.
  • Сложность настройки — для крупных распределённых систем требуется высокая квалификация администраторов, чтобы задать корректные политики.
  • Единая точка отказа — централизованные ResourceManager могут стать узким местом или выйти из строя, парализовав всю систему. Для устранения этого применяются резервирование и отказоустойчивые архитектуры.
  • Неоптимальность в реальном времени — некоторые алгоритмы (например, Fair Scheduling) не гарантируют выполнения задач с жёсткими временными ограничениями, что критично для промышленных систем управления.

Интересные факты

  • Первый ResourceManager в современном понимании был реализован в операционной системе CTSS (Compatible Time-Sharing System) в 1961 году в Массачусетском технологическом институте.
  • В суперкомпьютере «Ломоносов» (МГУ) используется ResourceManager на основе SLURM, способный распределять ресурсы между 40 000 ядер.
  • В облачных платформах ResourceManager может обрабатывать до 10 000 запросов на выделение ресурсов в секунду.

Источники

  • Таненбаум Э., Бос Х. «Современные операционные системы». 4-е изд. — СПб.: Питер, 2015.
  • Apache Hadoop YARN Documentation. — Apache Software Foundation, 2023.
  • SLURM Workload Manager Documentation. — SchedMD, 2023.
  • ГОСТ Р 53622-2009 «Информационные технологии. Управление ресурсами вычислительных систем». — М.: Стандартинформ, 2009.
  • Материалы конференции «Суперкомпьютерные дни в России» (2020–2023).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →