Next: Opis języka dla maszyny
Up: Obliczenia równoległe
Previous: Fork95
  Spis rzeczy
Berkeley NOW
Network of Workstations (NOW) jest systemem klastrowym stworzonym na Uniwersytecie
w Berkeley ([1], [3], [8]). Przedstawia on
odmienne podejście do budowy i programowania maszyn równoległych od przedstawionego
w poprzednich rozdziałach.
U podstaw jego powstania leżały następujące założenia.
- Pojedyncze stacje robocze składają się z takich samych lub podobnych podzespołów
co duże superkomputery, jednakże ich koszt (w przeliczeniu na jednostkę) jest
dużo niższy.
- Sieci komputerowe stosowane do łączenia maszyn osiągają coraz większe przepustowości
przy coraz niższych opóźnieniach związanych z transmisją. Są ponadto w znacznym
stopniu skalowalne.
- W dużej części zastosowań wąskim gardłem stają się operacje wejścia/wyjścia
wymagające o wiele więcej czasu od komunikacji sieciowej. Dysponując szybką
siecią można zbudować wirtualny system plików, w którym dane rozproszone są
po pamięciach komputerów do niej podłączonych.
- W standardowej sieci zdecydowana większość maszyn w danej chwili pozostaje bezczynna
oczekując na przykład na działanie użytkownika przy czym większość uruchomionych
aplikacji wykorzystuje ułamek rzeczywistej mocy komputera.
Bazując na tych założeniach naukowcy z Berkeley stworzyli klastrowy system złożony
z ponad stu maszyn połączonych siecią Myrinet. Aby przyspieszyć komunikację
sieciową zastosowano specjalne karty sieciowe (Myricom ,,Lanai'') charakteryzujące
się między innymi własnym szybkim procesorem oraz pamięcią. Sieć ma strukturę
drzewiastą. W każdym z liści tego drzewa znajdują się stacje robocze, w każdym
z węzłów wewnętrznych są natomiast szybkie przełączniki sieciowe.
Jeśli chodzi o oprogramowanie, to podstawą jest system operacyjny Solaris pracujący
na każdej ze stacji roboczych. Za pomocą dodatkowej, zbudowanej na nim warstwy
zwanej Global Layer Unix (GLUnix) wzbogacony został o dodatkowe funkcje
takie jak:
- globalne zarządzanie procesami:
- dodano możliwość globalnego zarządzania programami
uruchomionymi w klastrze. Obejmuje to uruchamianie procesów, ich identyfikację
(globalny pid), zarządzanie (komendy kill i ps) i komunikację;
globalny system plików:
system ten jest zbudowany na podobnej zasadzie co RAID8
. Pliki są rozproszone wśród węzłów sieci. Przy próbie dostępu do danych z dysku
przez proces pracujący na jednej maszynie operacje są wykonywane przez różne
fizyczne maszyny, co w znacznym stopniu niweluje duży czas dostępu do dysku
(czas ten jest większy od czasu operacji sieciowych). Dodatkowo można wykorzystać
pamięć buforową maszyn (w której można w ten sposób zmieścić na przykład cały,
duży plik a nie tylko jego fragment);
globalna pamięć wirtualna:
idea standardowej pamięci wirtualnej opiera się
na tym, że w przypadku braku pamięci operacyjnej niewykorzystywane w danym momencie
dane są zapisywane na dysk komputera, a następnie zwalniana jest pamięć przez
nie zajmowana. Przy próbie dostępu do nich są one następnie wczytywane z dysku.
Ponieważ operacje dyskowe są ,,powolne'', w przypadku programów operujących
na dużych ilościach pamięci, może to spowodować istotne zmniejszenie wydajności
nie tylko danego programu, ale też całego systemu. Jednocześnie -- zgodnie
z jednym z powyższych założeń -- prawie na pewno w sieci znajdują się maszyny,
których pamięć pozostaje niewykorzystana. Naturalną konsekwencją staje się próba
jej użycia. Otrzymuje się w ten sposób dużo większą pamięć niż ta dostępna na
pojedynczej stacji roboczej zyskując przy tym na czasie przy próbie korzystania
z pamięci wirtualnej.
Na poszczególnych stacjach roboczych można uruchamiać standardowe aplikacje,
jednakże system służy głównie do uruchamiania programów, które będą umiały wykorzystać
jego architekturę. Podstawowym narzędziem do komunikacji między- i wewnątrzprocesowej
są Active Messages (AM). System AM przypomina uproszczoną wersję zdalnego wołania
procedur (RPC9). Zapewnia między innymi wykrywanie błędów oraz ponawianie transmisji pomiędzy
interfejsami sieciowymi w przypadku błędu. Dostępne są trzy klasy komunikatów:
- komunikaty krótkie (short), przekazujące do ośmiu 32-bitowych parametrów do
funkcji obsługującej na zdalnym węźle,
- komunikaty średnie (medium) pozwalające przekazać w pakiecie dane o długości
od 128 bajtów do 8 KB,
- komunikaty duże (bulk messages) dla większej ilości danych.
Na bazie AM zbudowano implementację MPI10 umożliwiającą w prostszy sposób wykorzystanie mechanizmu komunikatów.
Reasumując, schemat programowej realizacji NOW przedstawia rysunek 3.
Rysunek 3:
Schemat modelu programowego NOW
|
Testy wykonane przez autorów systemu pokazały, że implementacja ta jest w stanie
konkurować z dużymi i bardzo drogimi superkomputerami, na przykład Cray T3D.
Uzyskuje się przy tym zdecydowanie lepszy współczynnik wydajności do ceny. Dodatkowo
system ten jest w prosty sposób skalowalny przez dołożenie kolejnych maszyn.
System ten różni się od przedstawionego w punkcie 2.1.1 modelu maszyny
PRAM. Posiada on jednak wiele cech z nią wspólnych. Pierwszą z nich jest współdzielenie
przez wszystkie procesory rzeczywiste pamięci całego systemu. Nie są one co
prawda taktowane wspólnym zegarem, jednak za pomocą odpowiedniego oprogramowania
można zapewnić synchronizację. Automatyczne rozpraszanie procesów między poszczególne
maszyny w istotny sposób ułatwia realizację zbalansowanego wykorzystania poszczególnych
elementów systemu.
Next: Opis języka dla maszyny
Up: Obliczenia równoległe
Previous: Fork95
  Spis rzeczy
Łukasz Maśko
2000-04-17