Beowulf HOWTO: Ogólny opis architektury
Następna strona
Poprzednia strona
Spis treści
3. Ogólny opis architektury
3.1 Jak to wygląda?
Myślę, że najlepszym sposobem opisu architektury superkomputera Beowulf
jest użycie przykładu, który jest bardzo podobny do prawdziwego Beowulf'a, ale
znany większości administratorów systemu. Przykład najbliższy Beowulf'owi to
laboratorium komputerów Unix z serwerem i klientami. Aby być bardziej
szczegółowym użyję jako przykładu laboratorium komputerów DEC Alpha na
Katedrze Nauk Komputerowych, USQ. Serwer nazywa się beldin, a klienci
nazywają się scilab01, scilab02, aż do scilab20. Wszyscy
klienci mają zainstalowaną lokalną kopię systemu operacyjnego Digital Unix
4.0, ale korzystają z katalogów użytkownika (/home) oraz
/usr/local serwera poprzez NFS (Network File System). Każdy klient
posiada wpis dla serwera i wszystkich pozostałych klientów w swoim pliku
/etc/hosts.equiv, więc wszyscy klienci mogą uruchomić rsh na każdym
innym. Serwer jest jednocześnie serwerem NIS dla całego laboratorium, więc
informacje księgowania są identyczne dla wszystkich maszyn. Osoba może
siedzieć przed konsolą scilab02, zalogować się i pracować w tym samym
środowisku, w jakim pracowała by gdyby zalogowała się z serwera bądz z
scilab15. Spowodowane jest to tym, że system operacyjny na wszystkich
komputerach jest zainstalowany i skonfigurowany w ten sam sposób, a katalogi
użytkownika /home i /usr/local mieszczą się fizycznie na
serwerze, i są udostępniane przez NFS. Więcej informacji o NIS i NFS
znajdziesz w dokumentach HOWTO
NIS oraz
NFS.
3.2 Jak wykorzystać pozostałe węzły?
Gdy mamy już jakieś pojęcie o architekturze systemu, możemy spojrzeć jak
wykorzystać dostępne cykle CPU maszyn w laboratorium komputerowym.
Każda osoba może zalogować się na dowolnej maszynie, i uruchomić program i
swoim katalogu domowym, ale może także wykonać to zadanie na innej maszynie
wywołując po prostu odległą powłokę. Przykładowo załóżmy że chcemy obliczyć
sumę pierwiastków kwadratowych wszystkich liczb całkowitych od 1 do 10
włącznie. Piszemy prosty program nazwany sigmasqrt (patrz
kod źródłowy), który wykonuje oblicznia. Aby obliczyć
sumę pierwiastków kwadratowych liczb od 1 do 10 wykonujemy:
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
22.468278
real 0m0.029s
user 0m0.001s
sys 0m0.024s
Komenda time pozwala nam śledzić upływ czasu podczas wykonywania
zadania. Jak widać, ten przykład zajął jedynie mały ułamek sekundy (0.029s),
ale co będzie jeśli spróbujemy dodać pierwiastki kwadratowe liczb od 1 do
1000000000? Spróbujmy, ponownie obliczając upływ czasu.
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000
real 16m45.937s
user 16m43.527s
sys 0m0.108s
Tym razem wykonianie programu trwało znacznie dłużej. Oczywistym pytaniem
jest co możemy zrobić aby przyspieszyć wykonanie programu? Jak możemy
zmienić sposób wykonania zadania aby zmniejszyć upływ czasu? Oczywistą
odpowiedzią jest rozbicie zadania na wiele pod-zadań równoległych na
wszystkich komputerach. Możemy rozbić jedno duże zadanie dodawania na 20
części, obliczając jeden zakres pierwiastków kwadratowych i dodając je na
każdym węźle. Gdy wszystkie węzły zakończą obliczenia i zwrócą rezultaty, 20
liczb powinno zostać dodanych do siebie aby otrzymać końcowy wynik.
[jacek@beldin sigmasqrt]$ mkfifo output
[jacek@beldin sigmasqrt]$ ./prun.sh & time cat output | ./sum
[1] 5085
21081851083600.941000
[1]+ Done ./prun.sh
real 0m58.539s
user 0m0.061s
sys 0m0.206s
Tym razem zajęło to około 58.5s. Jest to czas od rozpoczęcia zadania do
zakończenia go przez wszystkie węzły i zwrócenia rezultatu przez potok.
Ten czas nie zawiera końcowego dodania 20 liczb, ale to jedynie mały ułamek
sekundy, który może zostać zignorowany. Zauważamy że nastąpiła znaczna
poprawa przy równoległym wykonaniu zadania. Równoległe zadanie wykonało się
ponad 17 razy szybciej, co jest bardzo dobrym wynikiem przy 20-krotnym
zwiększeniu ilości CPU. Powyższy przykład ma na celu zilustrowanie
najprostszej metody zmiany zwykłego kodu na równoległy. W praktyce takie
proste przypadki są niezwykle rzadkie, i różne techniki (takie jak API PVM i
PMI) są wykorzystywane do osiągnięcia równoległości.
3.3 Czym Beowulf różni się od COW?
Laboratorium komputerowe opisane powyżej jest doskonałym przykładem klastra
stacji roboczych (COW). Tak więc co jest szczególnego w Beowulf'ie, i w jaki
sposób różni się on od COW? Prawdą jest, że nie jest to wielka różnica, ale
Beowulf posiada kilka unikalnych cech. Po pierwsze, w większości przypadków
węzły-klienci klastra Beowulf nie posiadają klawiatury, myszy, karty
graficznej czy monitora. Dostęp do węzłów-klientów odbywa się poprzez
odległe połączenia z węzła-serwera, dedykowanego węzła-konsoli lub konsoli
szeregowej. Jako że węzły-klienci nie muszą mieć dostępu do maszyn spoza
klastra, ani maszyny spoza klastra nie muszą mieć bezpośredniego dostępu do
węzłów-klientów, powszechnie stosowaną praktyką jest nadawanie
węzłom-klientom prywatnych adresów IP, z prywatnych zakresów takich jak
10.0.0.0/8 czy 192.168.0.0/16 (RFC 1918
http://www.alternic.net/rfcs/1900/rfc1918.txt.html). Na ogół jedyną
maszyną podłączoną do świata zewnętrznego za pomocą drugiej karty sieciowej
jest węzeł-serwer. Najczęściej korzysta się z systemu poprzez bezpośredni
dostęp do konsoli serwera, lub poprzez telnet czy odległe logowanie na
serwer z odległej stacji roboczej. Na serwerze użytkownicy mogą edytować i
kompilować swój kod, a także uruchamiać procesy na wszystkich węzłach w
klastrze. W większości przypadków systemy COW są używane do obliczeń
równoległych w nocy i w weekendy, gdy użytkownicy nie korzystają ze swoich
stacji roboczych do pracy, wykorzystując w ten sposób z niepotrzebne cykle
procesora. Z kolei maszyna Beowulf jest maszyną dedykowaną do przetwarzania
równoległego, i zoptymalizowaną w tym celu. Beowulf zapewnia także większy
współczynnik ceny do wydajności, jako że jest zbudowany z ogólnie dostępnych
komponentów i korzysta na ogół z darmowego oprogramowania. Beowulf ma także
więcej cech pojedynczego systemu, które pomagają użytkownikom
dostrzegać klaster Beowulf jako pojedynczą obliczeniową stację roboczą.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
beowulf howto pl 1beowulf howto pl 6beowulf howto plBeowulf HOWTO plbeowulf howto pl 4beowulf howto pl 2beowulf howto pl 5beowulf howto plbootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5Keystroke HOWTO pl (2)PostgreSQL HOWTO pl 14printing howto pl 5debian apt howto plKernel HOWTO pl 12 (2)XFree86 HOWTO pl (3)więcej podobnych podstron