180 likes | 340 Views
CluBORun : средство использования свободных ресурсов вычислительных кластеров для BOINC -расчетов. Манзюк М.О . , Заикин О.С. ИДСТУ СО РАН, Иркутск. BOINC + кластер ы. BOINC – платформа для организации грид -вычислений и добровольных вычислений. BOINC на кластерах – 2 подхода.
E N D
CluBORun: средство использования свободных ресурсов вычислительных кластеров для BOINC-расчетов МанзюкМ.О., ЗаикинО.С. ИДСТУ СО РАН, Иркутск
BOINC + кластеры BOINC – платформа для организации грид-вычислений и добровольных вычислений. BOINC на кластерах – 2 подхода. • С использованием платформы BOINC создается гетерогенный грид, в него добавляются кластеры. Пример – грид*, созданный в ИПМИ КарНЦРАН. В состав этого грида входят серверы, ПК сотрудников, а также вычислительный кластер ЦКП КарНЦ РАН. * Ивашко Е.Е., Никитина Н.Н. Использование BOINC-грид в вычислительноемких научных исследованиях // Вестник НГУ. Серия: Информационные технологии. 2013. Т. 11, Вып. 1. С. 53–57.
BOINC + кластеры • Узлы кластера напрямую подключаются к проекту добровольных вычислений на основе BOINC. При этом каждый узел кластера будет рассматриваться как отдельный компьютер (хост) в проекте. В проекте Einstein@home впервые кластер был подключен в 2007 году. Благодаря этому производительность проекта выросла с 64 до 89 TFLOPs. С тех пор в проекте Einstein@home постоянно используются кластеры. В 2011-2012 гг. к проекту SAT@home был подключен кластер ИМЭИ ИГУ, на котором не проводились другие расчеты.
BOINC + кластеры Для реализации обоих подходов необходимы права администратора на использование кластера. На узлах кластера запускается BOINC-клиент в обход очереди заданий. Если на узле запускаются процессы пользователей кластера (через очередь заданий), то BOINC-клиент ставит свои вычисления на паузу (как на обычном ПК). + простой и надежный способ –неприменим без прав администратора
Кластеры в BOINC-проектах : актуальность • Прирост производительности от кластеров может быть весьма значительным. • Вычислительные мощности кластеров могут простаивать, а запуск BOINC-расчетов решит эту проблему. • Кластер – надежное устройство. Результаты расчетов на кластере можно принять как эталонные при проверке результатов копий заданий. • Важно для репутации проекта – если не задействуются имеющиеся у научного сообщества вычислительные мощности, то почему они запрашиваются у мирового сообщества? • Одна единица задействованных мощностей может привлечь еще несколько единиц благодаря конкуренции среди команд за лидирующие позиции в рейтингах статистики.
Предлагаемый подход Требования: • Использовать только праваобычного пользователя кластера. • Использовать только свободные ресурсы кластера. Решение: • Периодически анализировать очередь заданий кластера. • Если есть свободные ресурсы, запускать на них MPI-задачи, которые в качестве промежуточного ПО используют BOINC. • Если в очереди появляются задачи других пользователей, прерывать MPI-задачи с BOINC.
Реализация Cluster for BOINC Run (CluBORun) – средство для запуска BOINC-расчетов на кластерах. Аналог BOINC-менеджера, который управляет процессом вычислений на ПК добровольцев – только вместо свободных ресурсов ПК предлагается использовать свободные ресурсы кластера. Использован awk- интерпретируемый скриптовый C-подобный язык,работает в bash (sh) скриптах.
Реализация. Компоненты • Каталоги с экземплярами BOINC-клиента – для каждого узла свой каталог. • Файлы-флаги, соответствующие экземплярам BOINC-клиентов. При запуске BOINC-клиента создается start-флаг, в случае необходимости его остановки – stop-флаг. • Скрипт start_boinc.sh, который запускает BOINC-клиент на выделенном ему узле кластера • Скрипт catch_node.sh, предназначенный для анализа загрузки кластера, запуска скриптов start_boinc.sh и для остановки BOINC-клиентов.
Реализация. Скрипт catch_node.sh • Каждые 5 минут (через crontab)выполняется скрипт анализа очереди catch_node.sh • catch_node.sh запрашивает список задач, запущенных на кластере и стоящих в очереди. • параметр clusterNodesопределяет максимальное допустимое количество узлов кластера, на которых может быть запущен BOINC. • при обнаружении свободных узлов запускаются BOINC-задачи, используя скрипт запуска start_boinc.sh. • если в очереди появились задания других пользователей, которые могли бы начать выполняться на высвобождаемых узлах, то BOINC-задачи останавливаются.
Реализация. Скрипт start_boinc.sh • скрипт start_boinc.hна выделенном ему узле запускает BOINC-клиентс использованием MPI через очередь заданий. • MPI используется как оболочка – управление передается BOINC-клиенту который использует узел кластера как обычный ПК. • главный MPI-процессотсчитывает время работы и выполняет своевременную остановку BOINC-клиента при достижении лимита на время работы. • параметр timelimitопределяет на какое время запускается BOINC-задача. Рекомендуемое минимальное значение для SAT@home – 1 час.
Связь с интернетом На кластере может быть открыт доступ в интернет: • только с управляющего узла • со всех узлов На кластере blackford ИДСТУ СО РАНдоступ был открыт со всех узлов. CluBORunзапускает на каждом узле BOINC-клиент, который связывается с сервером проекта. TODO Настроить прокси, чтобы связь была только через управляющий узел. Для этого тоже не нужны права администратора.
Проект добровольных вычислений SAT@home Совместный проект ИДСТУ СО РАН и ИППИ РАН. Предназначен для решения вычислительно сложных задач, эффективно сводимых к SAT-задачам. 29.09.2011 – запуск проекта. Успешно решены задачи логического криптоанализа генератора A5/1, а также задачи поиска систем ортогональных латинских квадратов. С помощью CluBORunресурсы кластера Blackford ИДСТУ СО РАН были использованы в SAT@home
Варианты использования • Использовать все свободные ресурсы кластера • Использовать не более определенного числа ресурсов
Перспективы • Связь с сервером проекта с только с главного узла через прокси. • Поддержка различных систем очередей. • Выделение в SAT@home доверенных хостов, подключенных через CluBORun. • Попасть в список дополнений BOINC, чтобы разработанным средством пользовались в других проектах. http://boinc.berkeley.edu/addons.php