- Details
- Category: Конкурсы Российского фонда фундаментальных исследований (РФФИ)
- Published: 06 March 2018
- Hits: 3435
Аннотация к проекту
Работа посвящена исследованию и внедрению технологий контейнерной виртуализации для распределенных в пространстве суперкомпьютерных приложений.
Доставка задач на вычислительные узлы в заранее подготовленных контейнерах позволит унифицировать окружение расчетных приложений, обеспечить независимость от установленных на узлах программ, библиотек, версий MPI и операционных систем. Это позволит снизить нагрузку на администраторов суперкомпьютера по установке и поддержанию актуальности требуемых пользователям библиотек и других зависимостей и повысит управляемость программной инфраструктуры, так как пользовательские расчетные приложения будут изолированы внутри контейнеров от основной операционной системы узлов.
В рамках проекта были разработаны и реализованы два способа запуска расчетных приложений в контейнерах. Первый, универсальный, способ базируется на использовании SSH серверов в контейнерах и SSH подключений для запуска дочерних процессов. Достоинством этого способа является универсальность, недостатком – недостаточная безопасность, так как в пользовательском контейнере выполняется SSH сервер с правами суперпользователя, через который теоретически может получить доступ к хостовой операционной системе.
Второй способ позволяет запускать параллельные приложения, интегрированные с системой Slurm и использующие srun для запуска дочерних процессов на вычислительных узлах. Достоинством этого способа является возможность запуска пользовательских контейнеров с правами непривилегированного пользователя суперкомпьютера. В этом случае в контейнере не будет процессов, выполняющихся с повышенными привилегиями, что не дает возможность приложениям из контейнера штатными средствами повысить свои привилегии на вычислительных узлах или покинуть контейнер.
Оба способа позволяют использовать для запуска контейнеризированных задач немодифицированный менеджер управления потоком задач Slurm и реализуются в виде набора приложений, инкапсулирующих подготовительные действия, необходимые для запуска контейнеров на вычислительных узлах.
Разработанная архитектура и способы запуска задач позволяют создавать универсальные образы задач, не привязанные к конкретному суперкомпьютеру и к конкретным пользователям. Это позволит, например, подготовить общий контейнер с каким-либо расчетным приложением, которым без изменений смогут пользоваться все пользователи суперкомпьютера.
Тестирование разработанных решений показало возможность запуска задач в контейнерах и успешную интеграцию контейнеров с Ethernet и InfiniBand интерконнектами. Интеграция осуществлялась, в случае Ethernet интерконнекта путем использования общего с хостовой системой сетевого стека, а в случае InfiniBand путем передачи устройства сетевой карты внутрь контейнера.
Тестирование эффективности разработанных решений, проведенное с помощью системы Intel(R) MPI Benchmark Suite показало отсутствие видимого замедления работы приложений при работе в контейнерах по сравнению с традиционным запуском без виртуализации.
Список публикаций
1) Щапов В. А. Латыпов С.Р. Способы запуска задач на суперкомпьютере в изолированных окружениях с применением технологии контейнерной виртуализации docker // Научно-технический вестник Поволжья. – Казань. – 2017. – № 5. – С. 172-177.
2) Shchapov V., Masich G., Masich A., Latypov S. Perm Scientific Center UB RAS Cloud-Computing Infrastructure for a Data Stream Processing // Параллельные вычислительные технологии – XI международная конференция, ПаВТ'2017, г. Казань, 3–7 апреля 2017 г. Короткие статьи и описания плакатов. Челябинск: Издательский центр ЮУрГУ, 2017. 552 с. – С. 167-181.
3) Щапов В. А., Денисов А. В., Латыпов С. Р. Применение контейнерной виртуализации Docker для запуска задач на суперкомпьютере // Суперкомпьютерные дни в России: Труды международной конференции (26-27 сентября 2016 г., г. Москва). – М.: Изд-во МГУ, 2016. – С. 505-511.
Иллюстрации
Общая схема работы задач в контейнерах
Запуск MPI задачи с помощью OpenMPI slurm plm модуля внутри docker контейнеров