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


