Технология MOSIX :: Что такое MOSIX :: Изнутри

Технология MOSIX состоит из двух составляющих: механизма PPM и набора алгоритмов для адаптивного разделения ресурсов. Обе составляющие реализуются на уровне ядра, используя загружаемые модули, не модифицирующие интерфейс ядра, таким образом, оставаясь полностью прозрачным для уровня приложений, тем более для уровня пользователя.

PMM может мигрировать любой процесс, в любое время, на любой доступный узел кластера. Обычно, миграция основывается на информации предоставляемой одним из алгоритмов разделения ресурсов, но пользователи могут аннулировать любой автоматический выбор системы миграции своего процесса и выполнит то же самое при ручном управлении. Также ручная миграция может инициироваться процессом синхронно, или по явному запросу другого процесса любого пользователя (или суперпользователя). Ручная миграция процессов может быть полезна для представления конкретных режимов (policy) или для тестирования различных планирующих алгоритмов (scheduling algorithms). Необходимо также отметить, что суперпользователь имеет дополнительные привилегии относительно РРМ, например, определение установок общей политики и списка доступных узлов кластера для миграции процессов.

Каждый процесс имеет UHN, где он был запущен. Обычно это узел на котором пользователь залогинировался (logged-in). В PVM таким узлом является тот, где задача породила процесс при помощи демона PVM. Образная системная модель MOSIX - СС, в котором каждый процесс представляется запущенным на его UHN и все процессы пользовательской сессии разделены в соответствии с условиями выполнения программы на UHN. Процесс, который мигрирует на другой (удалённый) узел, в любом случае использует ресурсы удалённого узла, но взаимодействует с пользовательской средой через UHN. Например, предположим, что пользователь запустил несколько процессов, некоторые из которых мигрируют с UHN. Если пользователь воспользуется утилитой ps, которая сообщает статус всех процессов, включая процессы которые запущены на удалённом узле. Если один из мигрировавших процессов читает текущее время посредством системного вызова gettimeofday(), то он получит текущее значение времени на UHN.

РРМ является основным инструментом для алгоритмов управления ресурсами. До тех пор пока запросы на ресурсы, такие как CPU или основная память, ниже некоторого предела, пользовательские процессы находятся на UHN. Когда запросы на ресурсы превышают некоторый изначально установленный уровень, то процесс может мигрировать на другой узел, воспользовавшись доступными удалёнными ресурсами. Итоговой целью является максимизирование производительности посредством рационального использования разделяемых сетевых ресурсов.

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

MOSIX не имеет центрального управления и отношений master-slave между узлами: каждый узел может оперировать как автономная система и это делает весь контроль независимым. Такое решение позволяет динамическую конфигурацию, когда узлы способны подсоединяться или отключаться от сети с минимальными нарушениями работоспособности. Алгоритмы масштабирования обеспечивают, что система запустится как на большой конфигурации, так и на малой. Масштабирование достигается введением случайности в алгоритмах контроля системы, где каждый узел основывается на выборе частичных знаний о состоянии на других узлах и делает неравномерным попытку определить общее состояние кластера или конкретного узла. Например, в вероятностной информации распространенных алгоритмов, каждый узел посылает через определённые промежутки времени информацию о доступных ресурсах на случайно выбранную группу других узлов. Одновременно это все поддерживает маленькое "окошко" с наиболее свежеполученной информацией. Эта сема поддерживает масштабирование, равномерная информация распространяется и динамически конфигурируется.