Octoshell — масштабируемая и гибкая система доступа к суперкомпьютеру МГУ
В 2009 году в вычислительном центре Московского государственного университета был запущен суперкомпьютер «Ломоносов». К середине 2011-го он вышел на 13-е место в мировом рейтинге суперкомпьютеров. Компания Evrone разработала для него систему контроля управления доступом Octoshell.
В офлайн-режиме
Суперкомпьютер активно использовался для вычислений как в масштабных научных проектах, так и в лабораторных работах студентов МГУ. Получение доступа к нему до внедрения Oсtoshell было организовано через предоставление заявок на процессорные мощности по обычной, бумажной почте. И по понятным причинам этот канал связи нельзя назвать оперативным.
Пока письма путешествовали по кабинетам или почтовым отделениям, задачи пользователей могли потерять актуальность, а сроки научной работы перенестись. С учетом того, что количество пользователей, претендующих на мощности суперкомпьютерного комплекса, планировалось увеличить в десятки раз – имелся большой риск захлебнуться в бумажной волоките и сильно замедлить эффективное распределение ресурсов.
Кроме того, работа пользователя на суперкомпьютере для самого вычислительного центра не являлась полностью прозрачной. Было непонятно, кто работает на компьютере в тот или иной момент, решает ли он именно те задачи, что заявлены, успешной ли получилась работа, какие проблемы возникали и по какой причине. Пользователи представляли отчеты по принципу «кто как может», что не гарантировало полноту и достоверность информации.
Университет планировал увеличение вычислительной мощности, но при существующих проблемах это не принесло бы никаких результатов. Было принято решение разработать автоматизированную систему доступа, которая поможет справиться с перечисленными проблемами.
Open source для суперкомпьютеров
Главная идея разработки системы доступа заключалась в том, чтобы Octoshell можно было использовать с любым суперкомпьютером мира, в любом институте или организации. По этой причине структура должна быть модульная.
Модульность дает гибкость. К примеру, в каком-то вычислительном центре необходима своя форма и способ регистрации или своя форма отчетности — сотрудник этого ВЦ, внеся изменения в отдельный модуль или написав свой, может настроить систему с учетом конкретных требований. Функциональность базового же приложения и совокупность модулей должны были обеспечить:
- возможность быстрого и удобного получения доступа к мощностям суперкомпьютерного комплекса;
- обмен согласовательными документами в онлайн-режиме;
- автоматическое предоставление реквизитов доступа после согласования;
- контроль за выполняемыми задачами;
- контроль загруженности суперкомпьютера;
- автоматизация своевременного предоставления полных отчетов пользователями;
- автоматическую генерацию отчетов об эффективности использования суперкомпьютера;
- создание системы анализа статистики;
- поддержку пользователей;
- сбор информации о сбоях при вычислениях;
- автоматическую отработку внештатных ситуаций;
Для обеспечения модульности было решено использовать механизм, который является основанием любого Rails-проекта, а именно Rails Engines. Engine — это самостоятельная библиотека, которая может быть оформлена как ruby gem и подключена к основному приложению. Примером популярного проекта, использующего тот же подход, является Shopify.
В базовом приложении реализована минимальная функциональность: профиль пользователя, формирование группы пользователей по правам доступа, разграничение прав на различные действия. Остальная логика вынесена в модули. Octoshell написан на JRuby. Связано это с тем, что работа суперкомпьютера предполагает одновременное решение большого количества задач. Обычный Ruby плохо масштабируется по ядрам процессора, а JRuby позволяет утилизировать все имеющиеся процессоры в равной степени.
Результаты внедрения
Система с сопутствующей документацией и обучающими материалами была передана университету. После её внедрения:
- скорость согласования и выделение процессорных мощностей сократилась с нескольких недель до 17 часов;
- реализуется одновременно более 600 научных проектов;
- доступ к компьютерам получили более 250 научных организаций и свыше 3000 пользователей;
- служба поддержки обрабатывает более 1000 обращений в год.
Система управления суперкомпьютером распространяется по свободной лицензии MIT. Адрес репозитория: https://github.com/octoshell/octoshell-v2.