Глава 2. Что же такое openMosix?

Содержание

2.1. Ну очень краткое введение в кластеры
2.1.1. Ну очень краткое введение в кластеры
2.2. История появления проекта от и до
2.2.1. История развития
2.2.2. openMosix
2.2.3. Текущее состояние проекта
2.2.4. Какие приложения работают
2.3. openMosix в действии: Пример
2.4. Компоненты
2.4.1. Миграция процессов
2.4.2. Файловая система openMosix (oMFS)
2.4.3. Direct File System Access (DFSA)
2.5. Демонстрационная система openMosix

2.1. Ну очень краткое введение в кластеры

Большую часть времени ваш компьютер не загружен. Запустите утилиты типа xload или top, которые показывают загруженность системы, и вы увидите, что загрузка процессора может даже не превышать значения 1.0. А если у вас два компьютера, то вероятность того, что в один момент времени один из них ничем не занят, существенно возрастает. К сожалению, когда вам действительно нужна вся мощь процессора – будь то компиляция программ на С++ или кодирование файлов Ogg Vorbis, – то она нужна вам в максимально короткое время. Основной задачей кластера и является распределение этой нагрузки на все доступные компьютеры и их свободные ресурсы.

Составной единицей кластера является один компьютер, также именуемый как “узел” (node). Кластеры также можно наращивать путём добавления новых машин. Чем мощнее составляющие кластер единицы, и чем быстрее соединение между ними, тем мощнее будет и весь кластер в целом. Помимо этого, и операционная система кластера должна максимально эффективно использовать имеющееся в кластере оборудование. Особенно это требование необходимо в гетерогенных кластерах, т.е. составные единицы которого не идентичны. Ещё одним важным аспектом является устойчивость к непредсказуемой смене конфигурации (например, когда в кластер добавляются/удаляются новые машины), и следующей из этого непредсказуемой нагрузки.

2.1.1. Ну очень краткое введение в кластеры

2.1.1.1. Виды кластеров: HPC, Fail-over и Load-balancing

Существуют три основных вида кластеров: Fail-over (отказоустойчивые), Load-balancing (балансировочные, распределяющие нагрузку) и High Performance Computing (высокопроизводительные вычислительные). Наверное, наиболее распространёнными сейчас являются первые два типа кластеров.

  • Отказоустойчивые кластеры представляют собой два или более связанных по сети компьютера с дополнительным выделенным контрольным (heartbeat) соединением между ними. Это выделенное соединение между машинами используется для мониторинга состояния сервисов: как только заданный сервис на одной машине выходит из строя, то другая начинает выполнять её функции.

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

  • Последний вид, вычислительный кластер, используется специально для центров обработки информации, которым необходима максимально возможная производительность. К подобным системам относится система Beowulf, разработанная именно для исследовательских центров, нуждающихся в большой скорости вычислений. В таких системах также присутствует некоторая функция балансировочных кластеров: для повышения производительности они стараются распределить процессы на большее количество машин. Только в данном случае процесс распараллеливается на части, которые выполняются на многих машинах одновременно, вместо того чтобы выполняться друг за другом по очереди.

Наиболее известный пример использования балансировочных и отказоустойчивых кластеров – это веб-фермы, базы данных или брандмауэры. Люди хотят чтобы сервис работал на 99,99999%, а интернет работает в режиме 24/24 7/7/ 365/365, а не как раньше, когда сервер можно было выключить, когда закрывается офис.

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

2.1.1.2. Суперкомпьютеры против кластеров

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

2.1.1.3. Модели кластеров [(N)UMA, PVM/MPI]

Существует несколько технологий реализации параллельных вычислений: (N)UMA, DSM, PVM и MPI – всё это различные схемы параллельных вычислений. Некоторые из них уже реализованы аппаратно, другие только в программном, а некоторые – и в том, и в другом виде.

(N)UMA: здесь машины пользуются разделяемым доступом к памяти, в которой они могут выполнять свои программы. В ядре Linux реализована поддержка NUMA, позволяющая получать доступ к разным областям памяти. При этом задача ядра использовать ту память, которая находится ближе к процессору, работающему с ней.

DSM уже реализована не только в программном виде, но и в аппаратном. Основная концепция DSM в организации абстрактного слоя для физически распределённой памяти.

Технологии PVM и MPI наиболее часто упоминаются, когда речь заходит о GNU/Linux Beowulf кластерах.

MPI – это открытая спецификация библиотеки передачи сообщений. Самой популярной реализацией MPI является MPICH. Второй по популярности после MPICH можно назвать LAM, также являющейся свободной реализацией MPI.

PVM – ещё один родственник MPI, широко используемый при создании Beowulf. PVM работает как пользовательская программа, поэтому никаких изменений в ядро системы вносить не нужно – выходит, что любой пользователь с минимальными правами может запустить PVM.

2.1.1.4. Роль openMosix

Программный пакет openMosix позволяет превратить в кластер компьютеры под управлением GNU/Linux, объединённые в сеть. Такой кластер позволит автоматически балансировать нагрузку на узлах, при этом новые узлы могут присоединяться или покидать кластер без прерывания его работы. Нагрузка на узлы распределяется исходя из скорости соединения и мощностей процессоров.

Поскольку openMosix является частью ядра и полностью совместим с Linux, то и все пользовательские программы, файлы и прочие ресурсы будут работать также, как и раньше, без каких-либо изменений. Простой пользователь даже не заметит разницы между Linux и openMosix системой. В целом картину можно представить, как будто весь кластер работает как одна (быстрая) GNU/Linux система.

openMosix представляет собой патч для ядра Linux, который, тем не менее, обеспечивает полную совместимость с платформой IA32. Благодаря внутреннему механизму балансировки нагрузки процессы могут мигрировать на другие узлы кластера. В результате получается выигрыш в производительности при использовании ресурсов нескольких машин. К тому же кластер постоянно самостоятельно пытается оптимизировать обработку процессов (естественно, что администратор системы может вмешаться в процесс автобалансировки в любое время).

Такой механизм прозрачной миграции процессов позволяет представить кластер как одну большую SMP-систему с множеством процессоров на доступных узлах кластера (конечно, следует учитывать и количество процессоров в двух и четырёх процессорных системах). К тому же openMosix предоставляет оптимизированную файловую систему (oMFS) для HPC-приложений, которая, в отличие от NFS, поддерживает кэширование, отметки о времени и ссылки.