Система управления кластерами и сетями «Mosix»

№88-1,

технические науки

В данной статье повествуется история появления системы Mosix. Разбираются понятия кластер, кластерный нод, Grid. В статье рассматриваются различные подходы к реализации функции многоядерности процессора на примере Intel Core 2 Quad и AMD “Bulldozer”.

Похожие материалы

Введение

Такое устройство как компьютер считается умным устройством. Те же смартфоны неспроста так называются (в переводе с английского «смартфон» означает «умный телефон»), так как они обладают функционалом, практически не отличающимся от функционала полноценного персонального компьютера. С этим утверждением трудно поспорить, учитывая то, какими возможностями обладают современные, так называемые, телефоны. Люди по привычке называют их телефонами, хотя, по сути, функция звонка, изначально заложенная в понятие «телефон», сегодня отошла уже даже не на второй план. Мы имеем у себя в кармане высокоскоростной интернет, мощные многоядерные процессоры, производительные видеочипы и поражающие для своих габаритов объемы оперативной и постоянной памяти.

Но, как бы то ни было, «умные» они все постольку-поскольку, так как ни одно современное устройство не способно приблизится к интеллекту человека. Почему? Все просто, человек мыслит абстрактно, а машина, сколь умной она бы ни была, действует по заданным алгоритмам. Другими словами, за любой умной техникой стоит ее гораздо более умный создатель.

Закон Мура

Что же до вычислительных способностей компьютера, то они для всех очевидны, считать машина способна гораздо быстрее человека. Вычислительная техника так и называется, потому что ее основой является простейшая калькуляция. Компьютеру под силу выполнять миллиарды операций за одну ничтожную секунду, человеку такой производительности не достичь никогда. Существует расхожее мнение, что развитие вычислительной техники происходит по, так называемому, закону Мура, согласно которому количество транзисторов, размещенных на кристалле процессора, увеличивается вдвое каждые два года.

Однако, существует якобы еще один вариант закона, только с цифрой в полтора года и гласящий об увеличении производительности транзисторов. Но это уже не закон Мура и сам Гордон Мур никакого отношения к нему не имеет, так как он никогда не говорил о производительности, всегда возводя во главу угла количество. В данном случае имеется ввиду изречение Дэвида Хауса, сотрудника Intel, который считал, что производительность процессоров должна удваиваться каждые полтора года. Это изречение часто путают с законом Мура.

Говоря начистоту, то и сам закон Мура не раз уже подвергался критике и был поставлен под сомнение ввиду того, что он является лишь плодом наблюдения одного человека. Многие даже считают, что он просто совпадение, справедливое только для одного конкретно взятого периода развития вычислительной техники. Что уж там, сам Гордон Мур в 2007 году высказал предположение, что его закон вскоре перестанет действовать, так как на его пути встают ограничения скорости света и атомарная структура веществ.

Кластеризация

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

В связи с вышесказанным, в серьезных исследовательских компаниях зачастую применяется так называемая кластеризация, подразумевающая под собой объединение нескольких компьютеров, называемых кластерными нодами, в одну мощную ферму (рис. 1). Данные кластеры принято называть суперкомпьютерами, хотя по сути суперкомпьютер — это просто сотни или даже тысячи обычных компьютеров, взаимодействующих между собой посредством распределенной операционной системы.

Схема вычислительного кластера
Рисунок 1. Схема вычислительного кластера

Часто случается, что мощности, выдаваемой одним вычислительным кластером, все равно не хватает. В таком случае они объединяются в еще более сложную и мощную систему под названием Grid. Правда, занимаясь этим, нужно отдавать себе отчет, что обычное включение всех компьютеров в одну сеть никакого прироста мощности не даст. Для сравнения можно взять производительности сети и оперативной памяти компьютера. Сразу станет понятно, что все данные, выходящие за пределы своей ноды, неминуемо упираются в так называемое «бутылочное горлышко». Это ограничение можно обойти, если свести к минимуму простой машин во время обмена информацией между ними.

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

Современные процессоры реализуют данную функцию по-разному. Например, процессор Intel Core 2 Quad представляет собой два процессора Core 2 Duo, объединённых в одном корпусе, что дает ему, соответственно, двойную их производительность. В то время как тот же AMD “Bulldozer” являет собой несколько самостоятельных модулей, определяющихся системой как два ядра. Сопроцессор для операций с плавающей точкой и кэш второго уровня у них общие, так что задачи, которым требуется этот функционал, могут исполняться исключительно в порядке очереди, что не дает практически никакого прироста производительности.

Для примера, допустим, что одно ядро процессора Intel равно про производительности с одним ядром AMD. Это, конечно не так, но просто допустим. Возьмем процессор AMD “Bulldozer” с четырьмя модулями и процессор Core 2 Quad. При выполнении операций с плавающей точкой, они оба покажут равную производительность, невзирая на то, что Intel определяется системой как четырхядерный процессор, а AMD — восьмиядерный. Зато операции с целыми числами будут исполняться на процессоре AMD вдвое быстрее, так как каждый модуль состоит из двух независимых ядер, отвечающих как раз за целочисленные операции.

Говоря иначе, если программист способен учесть все эти особенности, он может добиться высокой производительности, избежав неприятностей в виде упомянутых ранее «бутылочных горлышек».

Если необходимо одновременно выполнять некоторое число математических приложений, целесообразно использовать многоядерную или многопроцессорную систему, с установленным на ней соответствующим программным обеспечением. Но так можно утверждать в том случае, если количество приложений равно количеству ядер. Исходя из изложенного принципа, то несколько сотен приложений понадобится несколько сотен машин. Соответственно, чем больше задач и компьютеров, тем сложнее производить их размещение, чтобы не терять в производительности и не допускать простоя ядер. Становится очевидно, что такой процесс должен происходить автоматически.

Система “Mosix”

Одним из видов реализации подобной автоматизации стала в свое время система управления кластерами и сетями Mosix за авторством Амнона Барака, руководителя исследовательской группы в Еврейском университете (Иерусалим). Работы начались еще в далеком 1977 году и тогда система называлась просто MOS (Multicomputer OS), то есть многокомпьютерная операционная система.

Первая работоспособная версия системы вышла в 1983 году. За основу была взята операционная система UNIX 7, разработанная компанией Bell Labs под руководством AT&T. Ни о какой поддержке архитектуры x86, разумеется, и речи не шло, так что MOS выполнял свою работу на кластерной секции компьютеров PDP-11.

Но все мы прекрасно знаем, какими огромными темпами идет прогресс вычислительной техники. Через некоторое время MOS перешел на базу операционной системы UNIX System V, являвшейся основной в компьютерах VAX компании DEC. Впрочем, недолго было и до выхода на сцену компании Intel с архитектурой IA-32, основой процессоров 486 и Pentium. Для портирования на новую архитектуру системы MOS был необходим UNIX, работавший на архитектуре I-386. Linux на тот момент (1993 год) был еще недостаточно окрепшим, так что было принято решение использовать систему BSD, созданную в университете Беркли. Однако, к 1999 году Linux значительно обошел BSD на поприще х86-совместимых UNIX-подобных систем, и тогда Mosix был все-таки переведен на базу ядра Linux, где прекрасно чувствует себя до сих пор.

Отдельного упоминания заслуживает Mosix версии 4, выпущенный во второй половине 2014 года. Начиная с этой версии, патчить ядро уже не требуется.

Также можно сказать об openMosix. В 2001 году сам Mosix был объявлен проприетарным и его исходный код был полностью закрыт. После этого Моше Бар решил взять последнюю доступную версию и 10 февраля 2002 года запустил проект openMosix. Однако, спустя шесть лет, 1 марта 2008 года, по определенным обстоятельствам данный проект был закрыт, после чего за его дальнейшее развитие и написание взялась команда LinuxPMI.

Суммируя многое вышесказанное, к основным особенностям Mosix можно отнести:

  1. Пользователь может войти на любую выбранную вычислительную ячейку.
  2. Не нужно производить модификации приложений перед тем как отправить их на выполнение.
  3. Файлы могут находится в локальном доступе, при этом их выполнение будет производиться удаленно.
  4. Нагрузка распределяется динамически, исходя из свободных доступных ресурсов.
  5. Динамический баланс мощности.
  6. Распределение приложений между медленными и быстрыми ячейками.
  7. Исполнение процессов полностью безопасно.
  8. Пакетное выполнение задач.
  9. Скриптование выполнения процессов.
  10. Автоматическое создание контрлльных точек.

Заключение

Как уже было сказано выше, таким мы и знаем Mosix сегодня. Актуальной на сегодняшний день версией является десятая, называющаяся Mosix2, и использует она ядра Linux 2.6 и 3.0. С точки зрения пользователя все организовано гораздо удобнее. Система управления представлена пользователям как единая система под управлением Linux, однако реализована она в виде виртуализации, что позволяет приложениям прекрасно работать удаленно так, будто они работают локально. Грубо говоря, человек запускает программу, а операционная система уже сама распределяет нагрузку между узлами, увеличивая производительность. При этом, совершенно неважно поддерживают ли параллельные вычисления сами приложения. Благодаря такой системе, приложения и не подозревают о том, что их выполнение происходит удаленно. Приложения эти в свою очередь не требуют никакой специальной подготовки, Mosix2 в состоянии управлять множеством систем самостоятельно. По такому принципу и работают большинство вычислительным серверов в интернете, предоставляющих доступ пользователям к своим ресурсам. Таких платформ множество и многие их них позволяют самим пользователям присоединиться и внести свой вклад в общее дело, путем отдачи своего компьютера под удаленные вычисления. Что уж говорить об огромных рендер-фермах, использующихся при производство современных кинокартин, в которых просто гигантское количество спецэффектов, на обработку которого требуются невообразимые вычислительные мощности.

При возможности отдать несколько обычных компьютеров под кластер, будет целесообразно установит на каждый из них Linux и делегировать управление Mosix’у. Впрочем, не обязательно даже отдавать ему всю машину целиком, можно поставить виртуальную машину, внутри которой запустить Linux, и уже тогда передать управление. Таким образом, кластером может стать даже пара домашних компьютеров на ОС Windows или Mac OS X, при этом их основная работа нарушена не будет.

Список литературы

  1. Андреев К.П. Совершенствование городской маршрутной сети // Надежность и качество сложных систем. 2017. № 3 (19). С. 102-106.
  2. Полтавский А.В., Юрков Н.К., Нгуен З.Ф. Телекоммуникация сетевых систем на основе высотных платформ // Надежность и качество сложных систем. 2018. № 1 (21). С. 46-55.
  3. Герасимов О.Н., Юрков Н.К., Кузина Е.А. К проблеме организации контроля в производстве электронных средств // Труды международного симпозиума Надежность и качество. 2017. Т. 2. С. 112-114.
  4. Медведев А.М., Мылов Г.В., Юрков Н.К. К проблеме создания критерия автоматического контроля соединений // Труды международного симпозиума Надежность и качество. 2017. Т. 2. С. 117-119.
  5. Дадамухамедов А.И. Развитие национальной сети и корпоративной сети (на примере сети ІХ) // Актуальные научные исследования в современном мире. 2017. № 3-2 (23). С. 133-137.
  6. Игнатьев А.А. Особенности использования VPN вида сеть-сеть // В сборнике: Технические и математические науки. Студенческий научный форум Электронный сборник статей по материалам IV студенческой международной научно-практической конференции. 2018. С. 33-39.
  7. Страхов А.И. Изучение особенностей протоколов ААА в сетях передачи данных и мобильных сетях // В сборнике: Фундаментальные и прикладные исследования. Технические, естественные и гуманитарные науки сборник научных трудов. Новосибирск, 2016. С. 157-160.