Линчик Михаил Игоревич, 318 группа, ФРТК, МФТИ Научный руководитель: Морозов Ю.В. В настоящее время многомашинные вычислительные комплексы (ММВК) на базе микропроцессоров ЗАО «МЦСТ» представляется пользователю как набор отдельных машин. Статическое распределение задач и неэффективная загрузка. реализовать программный продукт, учитывающий особенности ММВК, который создаёт пользователю этого ММВК видимость работы с единым вычислительным ресурсом с автоматическим и динамическим распределением задач. память память каналы обмена данными память память Узел #1 Узел #2 Узел #3 Узел #4 Пр-во пользоват. Пр-во пользоват. Пр-во пользоват. Пр-во пользоват. Аппаратура Аппаратура Аппаратура Аппаратура switch сложность разработки; сложность поддержки; проблемы переносимости; необходимость создания окружения, среды разработки программ; Пр-во пользоват. Пр-во пользоват. Главный Узел #1 Узел #2 Аппаратура Аппаратура Пр-во пользоват. Узел #3 Аппаратура необходимость портирования библиотек межпроцессорного взаимодействия; адаптация старого и создание нового ПО с использованием библиотек; специальные Unix-подобные ОС для ускорения работы; Пр-во пользоват. Узел #4 Аппаратура Пр-во пользоват. Главный Узел #1 Пр-во пользоват. Узел #2 Аппаратура запросы Аппаратура Пр-во пользоват. Узел #3 Аппаратура статическое распределение нагрузки; Пр-во пользоват. Узел #4 Аппаратура Узел #2 Пр-во пользоват. кс Узел #1 Аппаратура Пр-во пользоват. кс Пр-во пользоват. СЕТЬ кс Аппаратура Аппаратура Пр-во пользоват. Ни один пакет не работает со Sparc-совместимой архитектурой Ни один пакет не позволяет в полной мере использовать возможности RDMA Узел #3 кс Аппаратура Узел #4 Создать программное обеспечение, основанное на механизме миграции процессов и организующее кластер с балансировкой нагрузки из узлов ММВК, которые: имеют Sparc-совместимый процессор и оперативную память соединены посредством Ethernet или RDMA каналов находятся под управлением ОС Linux. Узел №1 Узел №2 Proc 5 Proc 4 Proc 3 Proc 2 Proc 1 Proc 2 Proc 1 Proc 4 Proc 3 Proc 2 Proc 1 Узел №3 Proc 1 Узел №4 процессы процессы daemon+управление Системные вызовы Подсистема управления процессами Файловая подсистема устройства драйвер драйвер сетевой драйвер ф-сть для работы с процессами драйвер драйвер драйвер драйвер Подсистема ввода/вывода программа управл. ОС Управление do_ioctl() { … } Админ. Блок миграции Процессы Proc1 Приёмник Proc2 Proc3 Блок восстановл. процесса Очередь пакетов sk_buff sk_buff Интерфейс взаимод. с драйвером dev_queue_xmit() { ……. } netif_rx() { ……. } Драйвер Внесение изменений в ядро: • установка дополнений к коду уже существующих файлов ядра; • добавление новых файлов в существующие каталоги ядра; • внесение изменений в файлы, отвечающие за сборку (Makefile); Перекомпиляция и сборка ядра Подключение драйвера (модуля) к новому ядру. Запустить драйвера с помощью стандартной утилиты ifconfig up: старт нитей (администратор, приёмник), регистрация в кластере, инициализация картины кластера на данном узле Повторить для каждого узла Структуры узлов node_count nodes …………… proc_count migr_procs node_count ……….. address * nodes address * nodes address * nodes exproc_count exproc_count exproc_count * exprocs * exprocs * exprocs improc_count improc_count improc_count * improcs * owner * improcs * owner * improcs * owner local_pid remote_pid * procs * data_unit * owner local_pid remote_pid * procs * data_unit * owner Структуры процессов local_pid remote_pid * procs * data_unit * owner proc_count Информационная единица Структуры процессов Header template 1) Инициализация информационной * cur_skb full_length …… sk_buff * owner Ethernet CloseNet заголовок заголовок Данные единицы (шаблон заголовка и др. поля); 2) Добавление данных: автоматически добавляются пакеты для расширения объёма; 3) Завершение работы с инф. единицей: сформированные пакеты отправляются. 1) Полученные пакеты автоматически добавляются к информ. единице процесса и упорядочиваются; 2) Последовательное извлечение данных (в порядке заполнения); 3) Завершение работы с инф. единицей: удаление пакетов. Передача процесса на другой узел: • отправить запрос, • остановить процесс, • переложить работу на процесс, • удалить ненужные данные Удаленная работа (исполнение системных вызовов на домашнем узле) Запуск миграции (ioctl) Узел #1 Подготовительные операции Отправка запроса (сообщ.) Узел #2 проверка возможности принять процесс переложить миграцию на сам процесс Передача процессом своих данных - нить-приёмник - текущий процесс отправить разрешение на миграцию создать новый процесс и переложить работу по заполнению на него завершить заполнение и запуститься - код драйвера Удалить ненужные данные Ждать удалённых запросов Отправить сообщение о конце миграции Узел #1 Узел #2 Процесс сделал системный вызов и перешёл в пр-во ядра Собирает данные Предварительная обработка Отправка запроса Пробуждение процесса Обработка запроса процессом Отправка результатов Получение данных Пробуждение процесса - нить-приёник - текущий процесс Обработка данных Завершение системного вызова Исследованы различные кластерные технологии, технологии поддержки распределённых вычислений и модели ОС. Реализована миграция простого вычислительного процесса (без зависимых от домашнего узла системных вызовов) между узлами через ethernet каналы с возможностью легко перейти на RDMA каналы. Проведены тесты на двух макетах процессоров R-500S. Спроектирована и находится в стадии исследования и разработки полнофункциональная система миграции процессов.