MOSIX

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

MOSIX (Multicomputer Operating System for UnIX) - system zarządzania klastra komputerowego realizujący założenia Single System Image. Rozwijany od 1977 roku w Institute of Computer Science Uniwersytetu Hebrajskiego w Jerozolimie, Izrael. Program przeszedł dwie zmiany nazwy, od UNIX with Satellite Processors, przez MOS aż do dzisiejszego MOSIX-a. Pierwsze wersje (0-5) powstały dla systemu Unix, następnie wersja 6 działała pod kontrolą BSD. Od wersji 7 rozwijany jest MOSIX dla Linuksa.

MOSIX zawiera mechanizm, który obserwuje obciążenie węzłów i w przypadku pojawienia się zwiększonego zapotrzebowania na zasoby systemowe, wysyła proces na najlepszy dostępny węzeł (proces migruje). Dzięki temu MOSIX zapewnia równoważenie obciążenia, migrowanie procesów z węzłów wolniejszych na szybsze, migrowanie procesów z węzłów, które wykorzystały swoje zasoby pamięci.

Pod koniec 2001 roku z powodu zmiany licencji MOSIX-a, który stał się zamkniętym oprogramowaniem, Moshe Bar bazując na ostatniej wolnej wersji MOSIX-a, rozpoczął projekt openMosix na licencji GPL.

Budowa systemu oraz zasada działania[edytuj | edytuj kod]

MOSIX to zbiór narzędzi oraz łatka (patch) na jądro systemu Linux. Odpowiednio poprawione i skompilowane jądro systemu oraz usługa (daemon) odpowiadają za zarządzanie procesami, natomiast zestaw narzędzi pozwala na monitorowanie oraz zarządzanie systemem MOSIX. Łatka na jądro została zaimplemetowana jako warstwa wirtualizacji, co pozwala użytkownikowi i aplikacjom widzieć klaster jako Jednolity Obraz Systemu (SSI).
W systemie MOSIX zastosowano nieco inne podejście do rozdzielania zadań. Zamiast rozdzielać zadania (job), MOSIX rozdziela procesy, co znacznie ułatwia zarówno użytkownikowi jak i programiście korzystanie z systemu rozproszonego. Największą zaletą takiego rozwiązania jest fakt, że aby skorzystać z możliwości wykonania równoległego danego programu nie trzeba go nawet ponownie kompilować.
Ostatnia wersja MOSIX jest kompatybilna z jądrem w wersji 3.14 i jest nazwana MOSIX-3.

Zalety MOSIX[edytuj | edytuj kod]

  • W odróżnieniu od innych rozwiązań, takich jak MPI czy OpenMP, MOSIX nie wymaga stosowania dodatkowych bibliotek czy przebudowywania aplikacji, nie trzeba też kopiować wykonywanego programu na inne hosty klastra.
  • System sam decyduje, który z węzłów klastra jest wolny i na niego przenosi wykonywane zadanie. System sam również potrafi przenieść zadanie na inny - mocniejszy - węzeł, jeśli zasoby węzła aktualnie wykonującego zadanie (pamięć, czas procesora) są na wyczerpaniu.
  • Sam wyszukuje nowe węzły i dodaje je do klastra, jak również sam je usuwa, kiedy stają się niedostępne. Jednocześnie posiada zabezpieczenie przed usunięciem węzła, na którym trwa wykonywanie jakiegoś zadania. Przed usunięciem węzła takie zadanie przenoszone jest najpierw na inny węzeł.
  • Zapewnia również równoważenie obciążenia klastra.
  • Zapewnia przewagę procesów lokalnych nad obcymi. Oznacza to, że jeśli na danym węźle zostanie uruchomiony proces, który wymaga dużych zasobów węzła, a w tym samym czasie jest na nim wykonywany proces z innego węzła, to obcy proces zostanie przesunięty na inny wolny węzeł.
  • Wszystkie funkcje realizowane przez system wykonują się automatycznie i nie wymagają ingerencji użytkownika.
  • MOSIX może zarządzać klastrem, multi-klastrem, lub chmurą (Cloud)

Wady MOSIX[edytuj | edytuj kod]

Ponieważ system MOSIX nie zarządza specjalnie przygotowanymi zadaniami, lecz zwykłymi procesami, możliwość przeniesienia danego procesu na inny węzeł uzależniona jest od kilku czynników:

  • Proces nie może korzystać z pamięci współdzielonej
  • Proces nie może odwoływać się bezpośrednio do sprzętu (np. karta dźwiękowa, procesor graficzny)
  • Ograniczone jest korzystanie z wejścia/wyjścia przez program.

Oznacza to, że MOSIX nie przyspieszy działania gry, ale może przyspieszyć programy wykonujące np. obliczenia naukowe, niektóre kompilatory, symulacje finansowe itp.

Linki zewnętrzne[edytuj | edytuj kod]