Сайт Информационных Технологий

Распределенная интернет-ориентированная система для исследования алгоритмов отображения

О.Г. Монахов, О.Ю. Чунихин, А.В. Сербин

Институт вычислительной математики и математической геофизики СО РАН, Новосибирск

Abstract – A distributed version of the TOPAS (Test and Optimization of Parallel Algorithms and Structures) system for developing of parallel algorithms and programs is presented. The system based on parallel and Internet technologies and consists of a three parts: client, proxy and server part. The system TOPAS allows to run and investigate parallel and sequential mapping algorithms for several heterogeneous and parallel computing systems distributed on Internet.

Введение

Задача отображения графа параллельной программы на граф параллельной системы одна из известных задач в области параллельных вычислений. Существует много методов решения этой задачи, основанных на использовании мягких вычислений [1], которые также могут быть использованы для решения проблем из других областей науки; например, для решения задач из области исследования операций, теории графов, комбинаторной оптимизации, для решения прикладных задач вычислительных сетей.

Для повышения эффективности работы исследователя (разработчика алгоритмов) имеет смысл создать специальную систему - распределенную среду разработки, предоставляющую ему возможность работать над такими алгоритмами, используя удобный полнофункциональный интерфейс, вычислительные ресурсы, доступные в Интернет, параллельные и Интернет-технологии. Также весьма полезным оказывается визуализация процесса отображения графов для различных итерационных алгоритмов - это часто помогает уяснить некоторые особенности работы алгоритма, что приводит к ускорению процесса разработки и отладки данного сорта алгоритмов. Часто немаловажным оказывается возможность использования распределенных гетерогенных вычислительных ресурсов (имеется в виду некоторое множество вычислительных систем различной архитектуры, доступных через Интернет) для запуска и отладки алгоритмов.

Одна из систем такого типа - распределенная система TOPAS (Test and Optimization of Parallel Algorithms and Structures) представлена в данной статье:

1) она обеспечивает доступ к распределенным вычислительным ресурсам (в том числе к гетерогенным и параллельным системам) посредством любого WWW-браузера, поддерживающего Java;

2) она имеет удобный и легко расширяемый интерфейс пользователя;

3) используя специальный интерфейс прикладного программиста, имеется возможность получить визуальное представление о динамике процесса отображения, производимого любым итерационным алгоритмом.

Общий обзор системы

Система состоит из трех частей: клиент, прокси-редиректор и серверная часть. Клиент представляет собой Java-апплет; он может быть загружен с сервера по сети и исполняться в контексте любого WWW браузера, поддерживающего Java. Он предоставляет исследователю стандартный графический интерфейс пользователя (GUI) и анимационное представление о динамике процесса отображения графов для работающего (работающих) в данное время алгоритма (алгоритмов). Также пользователь может контролировать весь процесс исполнения - имеется возможность приостановить, продолжить, прервать исполнение конкретного алгоритма (задачи), скорректировать вручную результаты отображения; он может запускать задачи на одной или нескольких вычислительных системах из списка. Задачи для конкретной системы также могут быть выбраны из списка задач, присутствующих на данный момент на заданном вычислительном сервере. Задачи представляют собой программную реализацию тех или иных алгоритмов - в общем случае это откомпилированный в исполняемый файл код алгоритма. Пользователь может запустить сервер еще на какой-либо другой машине, доступной через Интернет, и включить ее в список активных серверов. Далее, необходимо загрузить одну или несколько задач в специальную директорию на этой машине, чтобы эти задачи можно было запускать через интерфейс системы. Естественно, предполагается, что пользователь имеет доступ к системе, на которой он собирается запустить сервер и исполнять задания (например, у него есть shell-account и он может запускать некоторые исполняемые файлы). Предполагается что вычислительная система, на которой запускается сервер, представляет собой машину в сети с Unix-подобной операционной системой (FreeBSD, Linux, SunOS, Irex).

Прокси-редиректор обязан своим появлением одному ограничению по безопасности для апплетов - апплет может взаимодействовать только с сервером, с которого он был загружен. Этот прокси перенаправляет поток управления и данных от клиента к вычислительному серверу и обратно. Он реализован на языке Java и представляет собой консольное многопоточное приложение; следовательно, он может быть запущен на любом хосте в сети, на котором есть JVM (Java Virtual Machine). В принципе, может быть несколько прокси, работающих в составе одной системы.

Серверная часть (вычислительный сервер) представляет собой совокупность процессов-демонов, каждый из которых запущен на хосте под управлением Unix-подобной операционной системы. Каждый демон такого типа получает запросы от клиента на запуск и управление некоторых процессов - пользовательских (алгоритмов) задач - и взаимодействует с клиентом через прокси.

Клиент, прокси-редиректор и серверы взаимодействуют посредством некоторого специального протокола TAP (TOPAS Application Protocol). Он представляет собой протокол прикладного уровня и работает поверх стандартного TCP из TCP/IP стека. Для каждой сессии создается одно соединение; управляющие последовательности и данные используют его вместе; они передаются по каналу в символьном представлении. Управляющие последовательности и данные при передаче по данному каналу разделяется специальным символом, который не может появиться где-либо еще. Данная схема (один запрос обслуживается одним соединением) позволяет легко перенаправлять все необходимые запросы и соединения.

Клиент

Клиент - это интерфейс пользователя к вычислительным ресурсам серверов. Он является набором средств для ввода информации, управления задачами и просмотра выходных данных. Как уже упоминалось выше, клиент представляет собой апплет, написанный на языке Java. Он может быть загружен как по сети, так и загружаться с локальных носителей. Для работы с ним необходим любой из поддерживающих Java Web-броузеров или программа, подобная appletviewer из JDK. Клиент структурно состоит из двух частей - редактора графов и итерактивной системы управления задачами.

Редактор графов позволяет конструировать и редактировать графы визуально. Также можно загружать и сохранять графы как текстовые файлы специального внутреннего формата (подобно списку связности). Данный редактор предоставляет в распоряжение пользователя стандартный Java-AWT интерфейс. Пользователь имеет возможность конструировать графы, используя стандартные заготовки-шаблоны: кольца, гиперкубы, решетки, полные графы, и т.д. с заданным количеством вершин, а также использовать любой заранее заданный пользователем граф, загружаемый из файла. Также имеется возможность построить заново или редактировать любой загруженный в редактор граф, назначать веса вершинам и ребрам, добавлять и удалять любые вершины и ребра графа, и т.д.

Интерактивная система управления задачами позволяет пользователю запускать и управлять процессами (задачами) на удаленных вычислительных серверах. Пользователь может выбрать сервер из списка известных рабочих серверов для запуска задачи. Далее он выбирает какую именно из имеющихся на сервере задач он желает запустить. После того, как задача была запущена, система отображает специфическую для данной задачи информацию (параметры алгоритма) и выводит на специальную панель выведенные данные, которые можно записать в файл при желании. Пользователь может легко приостановить, возобновить, остановить или прервать текущий процесс.

Прокси-редиректор

Как уже было сказано выше, прокси-редиректор появился благодаря следующему ограничению по безопасности для апплетов - загруженный броузером апплет может взаимодействовать только с тем сервером, с которого он был загружен. Создание прокси-редиректора является распространенным приемом обхода этого ограничения. Кроме того, данная схема имеет также отдельные преимущества, которые делают всю систему более централизованной и гибкой. Также появляется возможность работы с системой даже в том случае, если отдельные вычислительные серверы находятся за шлюзом (вот, например, одна из широко распространенных ситуаций: прокси-редиректор расположен снаружи, а серверы - внутри). Это, в свою очередь, является одним из узких мест в системе - при отказе прокси, нет доступа сразу ко всем серверам, хотя они могут и работать. Однако возможно завести несколько прокси для надежности.

Прокси по своей реализации представляет собой довольно универсальное приложение - он будет работать на любом хосте в сети, где есть виртуальная Java-машина (JVM). Это консольное многопоточное приложение должно быть запущено на том же хосте, где находится HTTP-сервер, предоставляющий сервис для загрузки клиента (Java-апплета, встроенного в HTML документ) и сопутствующих HTML документов. Прокси не подвержен никаким ограничениям "Java-песочницы" и перенаправляет запросы клиентов серверам и ответы серверов клиентам, запуская для каждой сессии типа <<клиент-сервер>> новый поток и передавая обслуживание этой сессии вновь порожденному потоку, продолжая тем временем отвечать на запросы клиентов. Таким образом, сразу несколько клиентов может пользоваться услугами одного прокси одновременно.

Серверная часть

Серверная часть - это совокупность процессов-демонов, реализованных на различных Unix-машинах, распределенных по Интернет, обслуживающих запросы на выполнение той или иной задачи. Они реализованы на языке C с использованием системных вызовов Unix и удовлетворяют стандартам ANSI C и POSIX. Данная реализация сервера может быть перенесена на другие Unix-системы, причем использование стандартов ANSI и POSIX облегчает задачу переноса. На данное время существует пять успешных реализаций данного сервера - для FreeBSD, Linux, Irex, Reliant Unix (для мультипроцессорной системы Siemens RM600) и Helios OS (для мультипроцессорной системы МВС-100). В коде для FreeBSD, Linux, Irex и Reliant Unix нет существенных отличий, но есть отличия в версии сервера для Helios OS; они обусловлены большей частью несовместимостью системных вызовов Helios с принятыми современными стандартами.

Рассматриваемый процесс-демон принимает и обрабатывает запросы клиентов, прошедшие перенаправление через прокси-редиректор, запускает задачи пользователя (реализованные в коде и оттранслированые алгоритмы), управляет текущими задачами, используя стандартный системный интерфейс посылки сигналов kill() в соответствии с командами, подаваемыми клиентом. Таким образом, любая текущая задача может быть отложена, продолжена, прервана, и т.д. Другими словами, есть возможность посылать любой системный сигнал OS Unix задаче, выполняющейся в данный момент на вычислительном сервере. Пользователь может дополнительно встроить специальные обработчики соответствующих сигналов в свою программу. Имеется возможность запускать задачи с заданным приоритетом (стандартная для Unix-систем утилита nice)

Процесс-сервер может быть запущен посредством стандартных сервисов удаленно (rsh, ssh, etc.) или непосредственно с самого сервера из командного процессора (какой-либо разновидности shell-процессора). Естественно, в данном случае необходимо иметь доступ на данной системе. Возможен запуск также и через CGI интерфейс, используя протокол HTTP, с помощью любого Web-броузера. Также можно воспользоваться услугами супер-демона inetd.

Процесс-сервер имеет возможность записывать в служебный журнал необходимые данные, а сам демон может быть запущен в режиме отладки - в этом случае он не отрывается от терминала и выдает сообщения непосредственно на экран.

Протокол TAP

Протокол основан на обмене командами и данными в виде ASCII-строк. Команды представляют собой четырехбуквенные слова (регистр не имеет значения), некоторые имеют параметры, разделяемые пробелами. Выдача каждой команды влечет за собой ответ - трехзначное число (код результата), после которого может идти текст-пояснение.

Клиент пользуется услугами серверов либо непосредственно (невозможно для апплета), либо через посредника. Клиент может выдавать команды в произвольной последовательности, но общая схема работы апплета такова: он подключается к посреднику, по команде "LIST" выдает список серверов пользователю. Для каждого сервера можно вывести на экран по команде "ALGS имя_сервера" списки алгоритмов, загруженных на данный сервер. По команде пользователя происходит подключение к одному из серверов (команда "CONN"), а затем один или несколько запусков алгоритмов (команда "EXEC"). Отключение от сервера (команда "DISC") и от посредника (команда "QUIT") выполняются последовательно.

Литература

1. O.G. Monakhov, O.Y. Chunikhin. WWW-based system for visualisation, animation and investigation of mapping algorithms, in: Proc. Inter. Symposium on Parallel Architectures, Algorithms and Networks (I-SPAN'97). Taipei, Taiwan, Dec. 18-20, 1997. IEEE Press, 1997, p.207-210.


Site of Information Technologies
Designed by  inftech@webservis.ru.