Средства управления задачами в системе NumGRID на основе модели NumGRID Desktop Client
Аннотация:
Система NumGRID позволяет запускать вычислительные задачи на объединениях кластеров, при этом процессы задачи, реализованной в виде параллельной программы, распределяются по нескольким кластерам. Пользователь для запуска задачи на объединении кластеров должен вручную запускать на кластерах определенные компоненты NumGRID, указывать требуемое число процессов, запускать подзадачу. Запрашиваемые пользователем кластера могут иметь различную архитектуру, административные политики. Эти факторы также влияют на процесс запуска задачи на объединении кластеров, во многом усложняя его. При использовании NumGRID пользователь вынужден помнить параметры своей задачи на каждом из кластеров. Высок риск допустить ошибку.
NumGRID Desktop Client представляет собой средство, которое скрывает архитектурные и административные различия кластеров от пользователя, предоставляет ему единый интерфейс для работы с вычислительными ресурасми, упрощает процедуру запуска задачи на объединении кластеров, сводя весь процесс к визуальному выбору параметров и нажатию нескольких кнопок, а так же позволяет отслеживать параметры процесса выполнения задачи на кластерах и, при необходимости, корректировать их.
Введение:
При решении вычислительных задач требуется использование высокопроизводительной вычислительной техники. В настоящее время наиболее широко распространены кластерные вычислительные системы и их объединения.
Рассмотрим причины, приводящие к мысли об объединении кластеров. Вычислительное оборудование очень быстро устаревает. Рациональной идеей является задействование устаревших и не самые производительных кластеров вместе с новыми. Возможны ситуации, когда использование разных кластеров для отдельных подзадач существенно ускорит решение самой задачи. Например, при моделировании каких-либо явлений генерацию сеток можно поручить кластеру с относительно небольшой производительностью, наиболее производительный кластер задействовать для основных расчетов, а кластер с мощными видеокартами использовать для визуализации результатов и тем самым минимизировать общее время выполнения задачи и прочие издержки. Так же существуют задачи, для которых мощностей одного кластера просто недостаточно. Слишком много времени будет затрачено на вычисления. Объединение позволяет уменьшить время, требуемое для расчетов, оптимально распределить загрузку по кластерам. Таким образом, имеет место потребность в объединении кластеров. При этом возникает проблема организации взаимодействия между процессами, расположенными на вычислительных узлах разных кластеров потому, что кластер, как правило, состоит из головного узла, имеющего выход во внешние сети (Internet в частности) и вычислительных узлов, не имеющих доступ вовне. Система NumGRID решает её, реализуя коммуникационную среду на основе стандартов MPI для распределенных процессов. Другими словами, процессы, находящиеся на вычислительных узлах различных кластеров имеют возможность посылать друг другу сообщения.
Модель NumGRID Desktop Client выступает в роли надстройки над системой NumGRID, предоставляя пользователю простой графический интерфейс, скрывающий архитектурные и административные различия кластеров.
Анализ проблемы (обзор, требования к системе):
NumGRID – это система, позволяющая объединять кластеры с помощью сети для решения одной задачи, создавая так называемый метакомпьютер.
Необходимо принимать во внимание тот факт, что используемые кластеры могут иметь различные архтектуру, операционную систему, системы очередей, прочее системное программное обеспечение, административные политики. Например, кластер А использует систему принудительного контроля доступа SELinux, а кластер B — систему принудительного контроля доступа AppArmor. Между обеими системами имеется существенное различие - способ идентификации объектов файловой системы: по полному пути к файлу и по индексному дескриптору соответственно. Следовательно, пользователь должен учитывать эти особенности при размещении своей задачи на кластерах.
Использование системы NumGRID с текстовым интерфейсом позволяет запускать задачи на кластерах и забирать с них результаты. Очевидно, что для пользователя запоминание длинных команд со множеством параметров, возможно разных для разных кластеров, очень неудобно. К тому же нет возможности наглядного представления конфигурации метакомпьютера, «собираемого» пользователем. Осуществление мониторинга вычислений на протяжении выполнения пользовательской задачи с помощью данной системы тоже есть весьма неудобный процесс. Пользователь вынужден на каждом кластере искать и смотреть файлы с выводом программы, использовать функции отслеживания состояния в общем случае различных систем очередей. Вследствие этого встает задача: разработать алгоритмы, позволяющие свести функции запрашивания ресурсов для выполнения задач, запуска задач, получения результатов и мониторинга вычислений на разных кластерах в единый инструмент управления, а так же реализовать разработанные алгоритмы в виде кроссплатформенного приложения для десктопных и портативных компьютеров.
Разрабатываемое приложение должно обладать следующими чертами:
1. Дружественный пользователю графический интерфейс. Наличие простого и понятного инструмента облегчает работу.
2. Кроссплатформенность. Инструмент, обладающий этим свойством, становится доступным для пользователей, предпочитающих различные, несовместимые друг с другом платформы и операционные системы.
3. Универсальность работы для разных типов кластеров и прочих вычислительных ресурсов. Независимость от их архитектур, системного ПО и административных политик. Поскольку архитектуры аппаратного обеспечения, системное программное обеспечение постоянно совершенствуются, добавляя что-то новое и устраняя что-либо устаревшее и ненужное, а так же изменяются административные политики, в зависимости от обстоятельств, то создать универсальный инструмент невозможно. Но приблизиться к решению этой проблемы можно. Инструмент должен иметь набор средств для поддержки наиболее популярных систем и иметь возможность расширяться, например, за счет сторонних разработок.
4. Наличие инструментария для слежения за ходом выполнения вычислений и корректировки параметров. Существует множество различных параметров, состояние которых хотелось бы знать в процессе работы системы. Это и флаги о завершении процессов, и промежуточные результаты расчетов. Например, при решении гиперболических и параболических уравнений с помощью метода конечных элементов целесообразно было бы узнавать изменение решения на конкретном временном слое и в конкретной координатной области и, при необходимости, принимать меры: дробление сеток, увеличение порядка аппроксимации разностной схемы и т. д. Так же полезно иметь информацию о загруженности ресурсов. Пользователь сможет видеть, что какой-либо кластер имеет слишком большой объем работы и отстает от остальных и перераспределить нагрузку на менее занятые ресурсы.
5. Возможность сессионного подключения к вычислительным ресурсам с запущенными на них задачами. Многие задачи выполняются длительное время. Целесообразно иметь возможность отключать NumGRID Desktop Client, оставляя кластеры работать автономно, а в последствии подключаться к ним и смотреть промежуточные или итоговые результаты расчетов.
Проект:
При использовании системы NumGRID в ее базовом варианте пользователь работает с несколькими терминалами, по одному на каждый кластер. Предварительный этап — копирование своей задачи на кластеры. Затем на головных узлах кластеров пользователь должен запустить «шлюзы» - агенты, занимающиеся установлением соединений, приемом и отправкой сообщений по внутренней сети, «своим» вычислительным узлам и внешней сети, другим кластерам и компьютеру пользователя. После старта шлюзов пользователь запускает на каждом кластере задачу. Задача распределяется по кластерам, и каждый кластер ставит свою часть этой задачи в очередь.
# здесь скриншот консоли с длинным mpirun
Рассмотрим модель работы пользователя с NumGRID Desktop Client. Желающий запустить свою задачу на нескольких кластерах, указывает, либо вручную, либо загружая уже сохраненную конфигурацию, параметры подключения к этим кластерам и путь к файлу с задачей, который должен иметь определенную структуру, нажимает кнопку Run. Происходит установление ssh-соединения с головными узлами кластеров, запуск шлюзов, постановка задачи в очереди. В ходе выполнения задачи пользователь может запрашивать какую-либо информацию о ее состоянии и изменять какие-либо параметры, отключать NumGRID Desktop Client, оставляя кластеры работать автономно, подключаться к кластерам обратно.
Для того чтобы было возможно осуществлять подобные последовательности действий необходимой является разработка трех алгоритмов: запуска задач на вычислительных ресурсах с постановками в очереди, обмена служебными и пользовательскими данными между приложением и этими вычислительными ресурсами и отслеживания и корректировки параметров вычислений. Рассмотрим подробнее план построения некоторых из них.
Одной из задач NumGRID Desktop Client является обеспечение дружественного графического интерфейса. Значит, главное окно должно предоставлять объекты, позволяющие наглядно представлять структуру «собираемого» метакомпьютера. Для этой цели использована таблица, строки которой являются запрашиваемыми кластерами, а столбцы — параметрами подключения к этим кластерам. Информация дублируется специальным виджетом, который в виде графа рисует структуру «собираемого» метакомпьютера. Помимо этого, главное окно должно содержать элементы управления (кнопки для редактирования структуры метакомпьютера, кнопку запуска Run, прочие кнопки), меню, с помощью которого можно сохранить собранную конфигурацию в файл или быстро восстановить ее из файла.
При запуске задачи на каждый кластер создается отдельный поток. В нем уже происходит установление ssh-сессии с кластером, с помощью scp кластеру передается задача, запускается bash-скрипт, содержащий команду запуска шлюза NumGRID и либо команду постановки задачи в очередь, либо непосредтсвенный запуск с помощью mpirun, а так же некоторые впомогательные служебные команды. Запуск шлюза и задачи (постановки задачи в очередь) производится с помощью UNIX-утилиты nohup, что дает возможность разорвать соединение с кластером и уничтожить поток без последствий для процессов, уже запущенных пользователем на кластере. Эта возможность как раз и используется для отключения NumGRID Desktop Client от работающих кластеров. Обратное подключение же несколько сложнее. NumGRID Desktop Client должен хранить историю запущенных задач и предоставлять выбор, к какой из них подключиться. При отсутствии этой истории, необходимо синхронизироваться с каким-либо кластером, на котором осуществлялся запуск задач, и получить информацию о задаче. После выбора задачи, к которой надо подключиться, устанавливается основное ssh соединение с кластерами.
Модули, отвечающие за отслеживание и корректировку параметров вычислений пока находятся на стадии проектирования.
Реализация:
На данный момент в работе над моделью NumGRID Desktop Client достигнуты следующие результаты. Приложение позволяет запрашивать вычислительные ресурсы, сохранять и восстанавливать конфигурации «собранных» метакомпьютеров в файлы, запускать задачу на кластерах без постановки в очереди задач, просматривать результаты выполнения на кластере. Возможность сессионного подключения к затребованным вычислительным ресурсам реализована не полностью. Пользователь, запустив свою задачу, может только отключиться от кластеров, в то время как задача будет продолжать выполняться.
Заключение:
Приложение NumGRID Desktop Client на данный момент частично решает поставленные ему задачи. Существует необходимость модернизация приложения в виде поддерживания очередей задач на кластерах. Ведется работа по реализации сессионного подключения к вычислительным ресурсам. Следующим масштабным этапом работы намечено проектирование модуля мониторинга вычислений и протокола, при помощи которого приложение и вычислительные ресурсы с запущенными на них задачами смогут общаться.


