Klaster klasy Beowulf w środowisku heterogenicznym

Transkrypt

Klaster klasy Beowulf w środowisku heterogenicznym
Wydział Matematyczno-Fizyczny
Politechnika Śląska w Gliwicach
PRACA DYPLOMOWA INŻYNIERSKA
Klaster klasy Beowulf w środowisku
heterogenicznym
Piotr Kandziora
Praca wykonana w:
Zakładzie Optoelektroniki
Promotor:
dr inż. Adam Szpakowski
Gliwice, 2007
Podziękowania dla dra Adama Szpakowskiego
za pomoc merytoryczną w realizacji pracy.
Klaster klasy Beowulf w środowisku heterogenicznym
Spis treści
1 Wstęp.....................................................................................................................4
2 Systemy obliczeniowe............................................................................................6
2.1 Historia superkomputerów, technologie wieloprocesorowe........................... 6
2.2 Definicja klastra, historia pierwszych klastrów................................................9
2.3 Klastry a superkomputery.............................................................................10
2.4 Programowanie równoległe oraz przyspieszenie programów......................11
3 Klastry komputerowe............................................................................................13
3.1 Wybrane pojęcia związane z technologią klastrową.................................... 13
3.2 Typy klastrów................................................................................................15
3.2.1 Klaster wysokiej dostępności ................................................................15
3.2.2 Klaster zrównoważonego obciążenia....................................................15
3.2.3 Klaster wysokiej wydajności .................................................................16
3.3 Klasyfikacja klastrów ze względu na użyty sprzęt i sieć...............................17
3.4 Systemy operacyjne klastrów typu HPC.......................................................18
3.5 Architektury klastrów.....................................................................................19
3.5.1 Single System Image (SSI)................................................................... 19
3.5.2 Beowulf..................................................................................................21
3.5.2.1 Ogólna charakterystyka................................................................. 21
3.5.2.2 Historia...........................................................................................22
3.5.2.3 Budowa klastra...............................................................................22
3.5.2.4 Klasyfikacja klastrów Beowulf. Wady i zalety.................................23
4 Opis klastra realizowanego w ramach pracy....................................................... 25
4.1 Ogólny opis projektu oraz jego założenia.....................................................25
4.2 Charakterystyka użytego sprzętu................................................................. 26
4.3 Charakterystyka użytego oprogramowania.................................................. 27
4.4 Budowa systemu kontrolera......................................................................... 29
4.4.1 OpenSSH ..............................................................................................29
4.4.2 Apache 2 – serwer stron www................................................................30
4.4.3 Ntpd (Network Time Protocol daemon) ................................................30
4.4.4 NFS (Network File System) ..................................................................31
4.4.5 Ganglia .................................................................................................33
4.4.6 Syslog-NG.............................................................................................34
4.5 Budowa systemu węzła................................................................................35
4.5.1 Usługi węzła klastra...............................................................................35
4.5.2 Mechanizmy wykorzystane w systemie węzła...................................... 36
4.6 System użytkowników (SU) - VServer..........................................................36
4.7 Torque Resource Manager...........................................................................38
5 Testy klastra.........................................................................................................40
5.1 Ładowanie systemu węzła............................................................................40
5.2 Test wysycenia sieci.....................................................................................46
5.3 Test odczytu danych z serwera NFS............................................................47
5.4 Wnioski z testów...........................................................................................49
6 Podsumowanie.....................................................................................................50
3
Klaster klasy Beowulf w środowisku heterogenicznym
1 Wstęp
Głównym celem pracy było stworzenie klastra obliczeniowego, czyli
struktury złożonej z grupy połączonych komputerów, które widziane byłyby przez
użytkowników jako jedna maszyna o dużej mocy obliczeniowej. Klaster ten miałby
pracować w istniejącym w środowisku sieciowym i korzystać z komputerów, na
których użytkownicy posiadają własne systemy operacyjne. Cała struktura
używana byłaby do wykonywania zadań, które wymagałyby dużej ilości cyklów
obliczeniowych. Zadania te zlecane byłyby przez użytkowników posiadających
własne konta systemowe w klastrze.
Realizowany w ramach pracy klaster jest klasy Beowulf, zatem w jego
strukturze można wyróżnić główny komputer nazywany kontrolerem, który
odpowiedzialny jest za zarządzanie wszystkimi pozostałymi komputerami
wchodzącymi w skład klastra (tzw. węzłami). Kontroler stanowi „serce” całego
klastra i to przez niego dokonuje się zlecania zadań. Całość pracuje w środowisku
heterogenicznym, oznacza to, że wchodzące w skład klastra komputery nie są
jednakowe pod względem sprzętowym – posiadają elementy pochodzące od
różnych producentów i różnią się dysponowaną mocą obliczeniową. Dodatkowo
cała struktura nie posiada dedykowanej sieci komputerowej – wykorzystuje
istniejącą sieć typu Ethernet, w której mogą pracować inne komputery
niewchodzące w skład klastra.
Głównym założeniem podczas projektowania struktury oprogramowania
systemowego klastra była chęć stworzenia środowiska, które byłoby łatwe
w zarządzaniu oraz aktualizacji. Realizacja tego założenia opiera się na obecności
trzech niezależnych systemów operacyjnych. Są to system kontrolera, system
węzła oraz system użytkowników.
System kontrolera jest podstawowym systemem uruchamianym na kontrolerze
i został dostosowany pod kątem pełnienia głównej funkcji w klastrze – posiada
szereg narzędzi administracyjnych służących zarządzaniu węzłami.
System węzła został umiejscowiony na kontrolerze i jest udostępniany poprzez
sieć. Jest to system ładowany przez każdy z węzłów - ma postać systemu
4
Klaster klasy Beowulf w środowisku heterogenicznym
współdzielonego. Uruchamiane są w nim m.in. aplikacje monitorujące aktywność
komputera.
System użytkowników został stworzony w celu udostępnienia użytkownikom
klastra środowiska, w którym możliwe jest zlecanie różnego typu programów
obliczeniowych. System ten ma również formę systemu współdzielonego i jest
uruchamiany jako system wirtualny zarówno w systemie kontrolera jak i węzłów.
Krótki opis zawartości pracy:
Rozdział 2: W rozdziale tym przedstawiono pojęcia superkomputer oraz klaster.
Opisano najważniejsze wydarzenia w historii tych sytemów obliczeniowych oraz
zaprezentowano
najpopularniejsze
obecnie
technologie
wieloprocesorowe.
Rozdział omawia również podstawowe zagadnienia związane z programowaniem
równoległym.
Rozdział 3: Rozdział opisuje podstawowe pojęcia związane z technologią klastrów
komputerowych. Omawia najpopularniejsze obecnie typy klastrów. Zawiera
klasyfikację klastrów ze względu na zastosowany sprzęt oraz przedstawia udział
systemów operacyjynch w systemach klastrowych. Rozdział omawia również dwie
najpopularniejsze obecnie architektury klastrowe: Single System Image (SSI) oraz
Beowulf.
Rozdział 4: Rozdział dotyczy części praktycznej realizowanego projektu budowy
klastra obliczeniowego. Przedstawia jego budowę pod względem wykorzystanego
sprzętu oraz oprogramowania. Omawiane są systemy operacyjne węzła oraz
kontrolera klastra oraz opisane główne usługi uruchamiane w tych systemach.
Przedstawiono ponadto wirtualny system użytkowników oraz zaznajamiono
z systemem kolejkowania Torque Resource Manager.
Rozdział 5: Rozdział
dotyczy
testów
klastra
w
środowisku
sieciowym.
Przedstawione zostały wyniki testów ładowania systemu węzła, przesyłu
komunikatów MPI oraz odczytu danych z serwera sieciowego NFS.
Rozdział 6: Podsumowanie pracy oraz wnioski.
5
Klaster klasy Beowulf w środowisku heterogenicznym
2 Systemy obliczeniowe
W rozdziale tym przedstawiono pojęcia superkomputer oraz
klaster. Opisano najważniejsze wydarzenia w historii tych
sytemów
obliczeniowych
oraz
zaprezentowano
najpopularniejsze obecnie technologie wieloprocesorowe.
Rozdział omawia również podstawowe zagadnienia związane
z programowaniem równoległym.
Współczesne systemy obliczeniowe wykorzystywane są do wykonywania
zadań wymagających dużej ilości cyklów obliczeniowych. Są to zazwyczaj różnego
typu symulacje oraz modelowania. Przeprowadzanie tego typu obliczeń na
zwykłych komputerach zajmuje bardzo dużo czasu, dlatego też tworzy się
architektury dysponujące dużą mocą obliczeniową, które są w stanie sprostać tym
zadaniom w znacznie krótszym czasie. Należą do nich superkomputery oraz
klastry.
2.1 Historia superkomputerów, technologie wieloprocesorowe
Superkomputery należą do komputerów, które znajdują się w światowej
czołówce pod względem dysponowanej mocy obliczeniowej. Nie raz zajmują
bardzo duże powierzchnie, a ich ceny sięgają setek milionów dolarów. Za pierwszy
superkomputer uznaje się CDC 6600 [1] stworzony przez Control Data Corporation
(CDC). Komputer ten powstał na początku lat sześćdziesiątych pod ścisłym
nadzorem Seymour Craya – jednego z najwybitniejszych inżynierów CDC [2].
Wkrótce pojawił się kolejny model CDC 7600. Rozpoczęły się prace również nad
modelem 8600, jednak Cray odszedł z firmy i konstrukcja nie została dokończona.
Po odejściu z CDC Cray założył własną firmę Cray Research [3]. W roku 1976
zaprezentowany został Cray-1. Cray-1 jako bardzo popularny superkomputer lat
siedemdziesiątych był wykorzystywany między innymi do prognozowania pogody
w European Centre for Medium-Range Weather Forecasts [4]. Był to komputer
wektorowy. Cechą charakterystyczną komputerów wektorowych jest to, że
wyposażone
są
w
procesory
wektorowe,
6
które
umożliwiają
operowanie
Klaster klasy Beowulf w środowisku heterogenicznym
w pojedynczych cyklach procesora na całych wektorach danych. Operowanie na
zbiorach danych powoduje znaczne przyspieszenie pracy.
Obecnie
tego
typu
procesory
również
znajdują
zastosowanie
w
superkomputerach. Dosyć popularnym superkomputerem wektorowym jest Earth
Symulator firmy NEC, który złożony jest z 5120 procesorów wektorowych, za
pomocą
których
tworzy
się
wirtualny
model
Ziemi [5].
Komputer
ten
wykorzystywany jest do symulowania klimatu naszej planety – śledzenia zmian
klimatycznych globu oraz przewidywania różnych zjawisk atmosferycznych.
Dosyć popularalnym obecnie procesorem wektorowym charakteryzującym się
dużą mocą obliczeniową (kilkakrotnie przewyższającą moc obliczeniową układów
Intela czy AMD) jest CELL stworzony wspólnie przez IBM, Sony Computer
Entertainment oraz Toshiba [6]. Jednostka CELL to 9-rdzeniowy procesor,
w którym aż 8 rdzeni wyspecjalizowanych jest w obliczeniach wektorowych i jest
wykorzystywana w konsoli gier Sony PlayStation3, jak również w produktach IBM
np. w serwerze kasetowym BladeCenter QS20 [7]. Mający ukazać się w 2008 roku
superkomputer firmy IBM – RoadRunner – będzie zawierać 16000 procesorów tego
typu.
Procesory
wektorowe
dostarczają
dużą
moc
obliczeniową
w
zadaniach
przystosowanych do ich stosowania, jednak nadal są jednostkami bardzo drogimi
i dlatego też nie są tak popularne jak procesory skalarne. Wśród 500 najszybszych
komputerów na świecie zaledwie 1,4% wykorzystuje procesory wektorowe [8].
CDC-6600 oraz Cray-1 były komputerami jednoprocesorowymi. Z biegiem
czasu okazało się, że lepiej wykorzystywać do przeprowadzania różnego typu
obliczeń kilka procesorów. Pierwszym superkomputerem wieloprocesorowym był
Cray X-MP (Multiple Processors), który składał się z czterech procesorów
wektorowych. Zastosowane rozwiązania w Cray X-MP nazwane są systemem
przetwarzania symetrycznego SMP [9] i stosowane są do dziś. Systemy SMP
(Symmetric Multiprocessing) odnoszą się do komputerów, w których dwa lub
więcej procesorów podłączonych jest do jednej, współdzielonej pamięci oraz
korzystają z jednego podsystemu I/O. Ograniczaniem SMP jest to, że procesory
podłączone są do tej samej magistrali, co przy dużych obciążeniach może
7
Klaster klasy Beowulf w środowisku heterogenicznym
powodować powstanie wąskiego gardła. W dodatku awaria magistrali może
powodować uniemożliwienie dalszej pracy. Korzystanie z jednej współdzielonej
pamięci sprawia, że jest to technologia mało efektywna – zmuszenie procesorów
do odwoływania się do tych samych obszarów pamięci może prowadzić do
konfliktów.
W superkomputerach znacznie lepiej sprawdza się architektura NUMA (NonUniform Memory Access). W architekturze tej grupuje się procesory w niezależne
węzły. W każdym z węzłów znajdują się procesor lub kilka procesorów, magistrala
oraz pamięć. Cechą charakterystyczną NUMA jest to, że pamięć operacyjna jest
połączona w jedną pamięć wirtualną (obecność jednej przestrzeni adresowej) co
znacznie ułatwia pisanie programów pod tę architekturę. W architekturze tej
istnieje możliwość odwoływania się procesorów do pamięci innych procesorów
(odwołania następują jednak wolniej niż w przypadku dostępu do pamięci lokalnej
danego procesora).
Inną popularną obecnie architekturą wieloprocesorową jest MPP (Massively
Parallel Processing). Architektura MPP składa się z jednostek PE (Processing
Element), które połączone są przełącznikami; może być określona jako zbiór wielu
niezależnych procesorów posiadających własną pamięć i połączonych między
sobą siecią o wysokiej przepustowości. Każdą z tych niezależnych jednostek
obliczeniowych
określa
się
mianem
węzła.
W
przypadku
MPP
liczba
wykorzystywanych procesorów może sięgać nawet kilku tysięcy. Dodatkowo
istnieje możliwość gromadzenia procesorów w grupy, które mogą zajmować się
oddzielnymi zadaniami. Obecnie MPP to najpopularniejsza architektura wśród
superkomputerów, o czym może świadczyć ilość maszyn opartych na tej
architekturze na liście top500 [8].
8
Klaster klasy Beowulf w środowisku heterogenicznym
Architektura
SMP
Zalety
łatwość programowania
Wady
ograniczona
skalowalność (16-
NUMA
łatwiejszy w
32 procesory)
trudniej
programowaniu niż MPP,
programować niż
skalowalność lepsza niż
w SMP,
w SMP
skalowalność
gorsza niż w MPP
MPP
skalowalność, wysoka
trudny model
dostępność
programowania
Tabela 1: Wady i zalety architektur wieloprocesorowych
2.2 Definicja klastra, historia pierwszych klastrów
„Klaster komputerowy (ang. computer cluster) - grupa połączonych jednostek
komputerowych,
które
współpracują
ze
sobą
w
celu
udostępnienia
zintegrowanego środowiska pracy” [10].
Historia pierwszych klastrów jest w pewnym stopniu powiązana z historia
pierwszych sieci komputerowych. Motywacją osób budujących owe sieci było
połączenie zasobów komputerowych - tak naprawdę stworzenie klastra.
Stworzony w 1969 roku projekt ARPANET, był prawdopodobnie pierwszym na
świecie bazującym na sieci klastrem, który powstał poprzez połączenie czterech
różnych centrów komputerowych. Projekt ARPNET przekształcił się w Internet,
który może być potraktowany jako „matka wszystkich klastrów” (ze względu na
połączenie wszystkich zasobów komputerowych). Tworzenie pierwszych klastrów
dla wolnego rynku i badań trwało równocześnie z rozwojem systemu operacyjnego
UNIX oraz protokołów sieciowych. Pierwszym komercyjnym klastrem był ARCNet,
zbudowany w Datapoint w 1977
roku.
ARCNet
nie
osiągnał
sukcesu
komercyjnego. W 1984 DEC stworzył VAXCluster dla systemu operacyjnego
VAX/VMS. Oba produkty nie tylko wspierały obliczenia równoległe, ale również
współdzielony system plików i urządzenia peryferialne. Dwoma innymi dosyć
interesującymi wczesnymi klastrami były IBM S/390 Parallel Sysplex oraz Tandem
9
Klaster klasy Beowulf w środowisku heterogenicznym
Himalaya (oba powstały około roku 1994). Znacząca rolę w rozwoju klastrów
odegrał PVM (Parallel Virtual Machine) [11]. To otwarte oprogramowanie oparte
umożliwiło utworzenie wirtualnego superkomputera utworzonego z obojętnie jakich
komputerów połączonych siecią TCP/IP. PVM jest to narzędzie, które służy
głównie
do
pośredniczenia
uruchomionymi
na
w
osobnych
wymianie
maszynach
informacji
oraz
do
pomiędzy
zarządzania
procesami
nimi
za
pośrednictwem specjalnej konsoli. W roku 1993 na zlecenie NASA powstał
Boewulf – typ klastra zbudowanego ze zwykłych komputerów połączonych siecią.
Obecnie jest to jeden z najpopularniejszych typów klastra.
2.3 Klastry a superkomputery
Klastry są podobne do superkomputerów opartych na MPP. Wykorzystują
sieć Ethernet między węzłami zamiast sieci o wysokiej przepustowości, która
występuje w przypadku MPP, w dodatku wymiana danych między węzłami nie
występuje tak często.
Zarówno klastry jak i superkomputery wykorzystujące architekturę MPP
cechują się wysoką skalowalnością, w przeciwieństwie do SMP (możliwość
rozbudowy do 16-32 procesorów). W SMP nie można dodawać procesorów
w nieskończoność bez znacznej przebudowy systemu. Dodawanie kolejnych
procesorów może prowadzić do powstania wąskiego gardła na magistrali.
Wykorzystanie SMP niesie za sobą kolejne ograniczenie - w przypadku awarii
jednego procesora lub magistrali unieruchomiony zostaje cały system [12]. Inaczej
ma się sprawa w przypadku klastrów, w których przypadku awaria jednego
z węzłów nie powinna powodować unieruchomienia całego systemu.
Superkomputery
są
bardzo
drogie
(ze
względu
na
obecność
wyspecjalizowanych jednostek obliczeniowych), a ich ceny nie raz sięgają
milionów dolarów. Earth Symulator z 2002 roku kosztował Japonię 35 milionów
dolarów, a mający ukazać się w 2008 roku RoadRunner powstający na zlecenie
amerykańskiego Departamentu Energii ma kosztować 110 milionów dolarów.
Inaczej ma się sprawa w przypadku klastrów, które mogą być budowane
z powszechnie dostępnego sprzętu, przez co koszt ich budowy oraz zarządzania
jest znacznie mniejszy. Biorąc pod uwagę koszty rozbudowy również tańsze są
klastry.
10
Klaster klasy Beowulf w środowisku heterogenicznym
2.4 Programowanie równoległe oraz przyspieszenie programów
Początkowo tworzone komputery ze względu na obecność tylko jednego
procesora przetwarzały tylko jeden proces obliczeniowy w danym momencie.
Wraz z pojawieniem się systemów wieloprocesorowych pojawiła się możliwość
przeprowadzania równoległych obliczeń na wielu procesorach. Dzięki temu proces
obliczeniowy zostały znacznie przyspieszony, a czas jaki należało poświęcić na
jego wykonywania uległ znacznemu zredukowaniu. Przyspieszenie programów,
jakie można uzyskać na systemach równoległych nie jest jednak liniowo zależne
od ilości dostępnych procesorów i wiąże się ściśle z zastosowanymi algorytmami.
Jednym z praw określających przyspieszenie na systemach równoległych jest
prawo Amdahl`a. Zakłada ono istnienie w każdym procesie obliczeniowym części
sekwencyjnej oraz części, która może zostać poddana zrównolegleniu [13]. Wraz
ze wzrostem liczby procesorów czas, jaki należy poświęcić na wykonanie części
równoległej będzie maleć. Część sekwencyjną niestety nie da się rozdzielić na
wiele procesorów, zatem nie można w ten sposób przyspieszyć jej wykonywania.
Całkowity czas potrzebny na wykonanie programu można oszacować jako [13]:
T  N =T 1−F 
T F 
N
gdzie:
N – ilość procesorów,
F – część programu, który można poddać paralelizacji,
T(1-F) – czas, jaki należy poświęcić na wykonanie części sekwencyjnej,
T(F)/N – czas wykonywania części, która można poddać zrównolegleniu.
Przyspieszenie P, które określa się jako czas stosunek czasu wykonania programu
na jednym procesorze do czasu wykonania tego programu na N procesorach
określa się wyrażeniem [13]:
1
P  N =
1− F 
11
F
N
Klaster klasy Beowulf w środowisku heterogenicznym
Rys. 1: Redukcja czasu wykonywania różnych części
programu w zależności od liczby użytych
procesorów [13].
Jak widać na rysunku (przyjęto F=0.8) istnieje część programu S (sekwencyjna),
której czas wykonywania nie zmienia się wraz ze wzrostem ilości dostępnych
procesorów. Czas wykonywania części R, którą można poddać procesowi
zrównoleglenia, zmniejsza się wraz ze zwiększeniem liczby procesorów.
Innym prawem mówiącym o możliwym do osiągnięcia przyspieszeniu na
systemach równoległych jest prawo Gustafsona. Przyspieszenie w tym przypadku
jest w przybliżeniu wprost proporcjonalne do ilości użytych procesorów, a wpływ
części sekwencyjnej S na przyspieszenie nie jest tak duże jak w przypadku prawa
Amdahl`a.
Stosowanie obliczeń równoległych nie zawsze jest korzystne. Nie jest
celowym ich stosowanie w sytuacjach, gdy:
–
trudna jest dekompozycja zadania na części (rozdzielenie pomiędzy jednostki
obliczeniowe),
–
dekompozycja spowodowałaby znaczny wzrost operacji sekwencyjnych,
–
zadanie jest w większej mierze sekwencyjne,
–
sieć posiada małą przepustowość, a wymiana komunikatów następuje bardzo
często (przy założeniu, że procesy komunikują się poprzez sieć),
–
ważna jest kolejność wykonywanych czynności przez program.
12
Klaster klasy Beowulf w środowisku heterogenicznym
3 Klastry komputerowe
Rozdział opisuje podstawowe pojęcia związane z technologią
klastrów komputerowych. Omawia najpopularniejsze obecnie
typy klastrów. Zawiera klasyfikację klastrów ze względu na
zastosowany sprzęt oraz przedstawia udział systemów
operacyjynch w systemach klastrowych. Rozdział omawia
również dwie najpopularniejsze obecnie architektury klastrowe:
Single System Image (SSI) oraz Beowulf.
3.1 Wybrane pojęcia związane z technologią klastrową
Z technologią klastrów wiąże się kilka pojęć, których zrozumienie jest
konieczne do zrozumienia istoty działania klastra. Są to:
•
Obliczenia rozproszone są to obliczenia wykonywane na dwóch lub więcej
jednostkach obliczeniowych (komputerach), które połączone są między sobą
siecią komputerową. Z obliczeniami rozproszonymi wiążą się rozwiązania
sprzętowe, system operacyjny, system współdzielenia zasobów oraz języki
programowania [14].
•
Skalowalność, poprzez którą rozumie się zdolność systemu do efektywnego
użycia rosnącej liczby procesorów [15]. Określa ona miarę możliwości
rozbudowy komputera, usługi lub aplikacji stosownie do rosnących wymagań
w zakresie wydajności. W przypadku klastrów serwerów poprzez skalowalność
określa się możliwość stopniowego dodawania systemów do istniejącego
klastra w momencie, gdy całkowite obciążenie przekracza możliwości
klastra [16].
Wyróżnia się skalowalność [14]:
–
obciążenia – określa zdolność do modyfikacji/rekonfiguracji pod wpływem
ilości zadań,
–
położenia – określa zdolność optymalnego działania przy zwiększaniu
fizycznej odległości między węzłami klastra,
13
Klaster klasy Beowulf w środowisku heterogenicznym
–
zarządzania – dotyczy możliwości efektywnego zarządzania niezależnie od
ilości podmiotów zarządzających,
–
pionowa – określa możliwość zwiększenia mocy obliczeniowej klastra
poprzez polepszanie możliwości pojedynczych węzłów,
–
pozioma – zwiększenie mocy obliczeniowej klastra wraz ze zwiększeniem
ilości węzłów.
•
Transparentność (przeźroczystość), która oznacza, że użytkownik ma wrażenie
pracy na jednym dużym systemie, a nie na strukturze składającej się z pewnej
ilości węzłów. Wyróżnia się kilka rodzajów transparentności: dostępu,
położenia,
migracji,
relokacji/replikacji,
współbieżności/wielodostępności,
awarii/ zabezpieczeń [14].
•
Otwartość określa cechę systemu komputerowego wiążącą się ze zdolnością
interakcji z innymi systemami.
•
FLOPS (FLoating point Operations Per Second) jest jednostką wydajności
komputerów realizujących obliczenia zmiennoprzecinkowe i określa liczbę
wykonywanych operacji zmiennoprzecinkowych na sekundę [17]:
1 FLOPS=
1
s
Obecnie najmocniejsze systemy obliczeniowe posiadają moc obliczeniową na
poziomie TFLOPS (tera FLOPS-ów).
Elementy budowy klastra:
•
Kontroler klastra jest to komputer będący podstawowym elementem struktury
klastra. Wyróżniany jest w niektórych konfiguracjach klastrowych. Jego funkcja
polega na zarządzaniu całą strukturą. W systemach obliczeniowych poprzez
kontroler klastra dokonuje się zleceń różnego typu zadań, które następnie
wykonywane są na tzw. węzłach.
•
Węzeł to komputer będącym elementem składowym klastra pełniącym np.
funkcje obliczeniowe. W niektórych typach klastra węzeł może pracować pod
nadzorem kontrolera – wykonywać zadania zlecane przez niego. Współczesne
systemy klastrowe mogą posiadać nawet kilka tysięcy węzłów.
14
Klaster klasy Beowulf w środowisku heterogenicznym
3.2 Typy klastrów
Wyróżnia się trzy podstawowe rodzaje klastrów:
–
klastry wysokiej dostępności (ang. high availability clusters – HA),
–
klastry zrównoważonego obciążenia (ang. load balancing clusters – LB),
–
klastry wysokiej wydajności (ang. high performance clusters – HPC).
3.2.1 Klaster wysokiej dostępności
Obecnie dostępność oraz niezawodność systemów informatycznych jest
bardzo ważnym elementem branym pod uwagę podczas ich projektowania.
Na codzień przyjmuję się za miarę niezawodności systemu informatycznego
procentową ilość czasu działania takeigo systemu do całkowitego czas jego
użytkowania. Współczesne serwery o znaczeniu strategicznym zapewniają
niezawodność na poziomie 99,999%, co przekłada się na dozwolone 5 minut
przerwy w działaniu serwera w skali roku. Wysoką niezawodność otrzymuje się
między innymi poprzez zastosowanie klastrów wysokiej dostępności (ang. high
availability clusters - HA). Klastry tego typu mają służyć zagwarantowaniu
dostępności usług oferowanych poprzez klaster. Najprosztszy klaster tego typu
składa się z dwóch węzłów. Jeden z nich to węzeł aktywny, aktualnie oferujący
daną usługę. Drugi z węzłów jest w trybie oczekiwania i monitoruje pracę węzła
aktywnego. W przypadku awarii węzła aktywnego, węzeł będący w spoczynku
przechodzi w stan aktywności - przejmuje adres IP odchodzącego węzła, uzyskuje
dostęp do współdzielonych zasobów a następnie uruchamia odpowiednie usługi - umożliwiając dalszą pracę [18]. Współdzielenie danych pomiędzy węzłami może
odbywać się za sprawą replikacji programowej (np. DRBD) bądź też dzięki
rozwiązaniu sprzętowemu. Przykładem dosyć popularnego oprogramowania typu
OpenSource oferującego funkcjonalność wysokiej dostępności jest projekt
Linux-HA [19].
3.2.2 Klaster zrównoważonego obciążenia
Mechanizm klastra zrównoważonego obciążenia (ang. load balancing - LB)
polega na odpowiednim rozłożeniu obciążenia na wszystkie węzły klastra poprzez
odpowiednie kierowanie wywołań na węzły. Przekierowanie żądania do innego
15
Klaster klasy Beowulf w środowisku heterogenicznym
węzła odbywa się na podstawie analizy obciążenia (wykorzystania procesora,
pamięci) węzłów. Nie dopuszcza się do sytuacji, w której niektóre z węzłów są
w stanie pełnej zajętości, a inne wolne od wykonywania jakichkolwiek zadań.
Zadaniem mechanizmu LB jest pełne wykorzystanie mocy klastra. Umożliwia on
również wykrywanie awarii węzłów bądź też wykrycie całkowitego wyłączenia
węzła [20].
Klastry zrównoważonego obciążenia powszechnie używane są dla obciążonych
stron internetowych. Każdy z węzłów posiada tą samą stronę www. Żądanie
dostępu do strony jest automatycznie kierowane do węzła posiadającego
najmniejsze obciążenie [18].
Przykładem
projektów
realizujących
założenia
klastra
zrównoważonego
obciążenia jest LVS (Linux Virtual Server) [21] oraz openMosix [22].
3.2.3 Klaster wysokiej wydajności
Poprzez klaster wysokiej wydajności (ang. high performance computing HPC) rozumie się grupę komputerów wykorzystywaną do wykonywania obliczeń.
Klastry tego typu ze względu na oferowaną dużą moc obliczeniową są szczególnie
popularne w środowiskach naukowych. Używa się ich do uruchamiania
programów wykonujących obliczenia, które na zwykłych komputerach zajęłyby
o wiele więcej czasu.
Poniżej kilka przykładowych zastosowań systemów HPC:
–
analiza danych pochodzących z sejsmogramów w poszukiwaniu złóż ropy
naftowej czy też gazu ziemnego (do rekonstrukcji niewielkich obszarów
potrzebne są terabajty danych),
–
symulacje aerodynamiczne przy projektowaniu silników oraz samolotów,
–
projektowanie systemów do przewidywania trzęsień ziemi,
–
w naukach biomedycznych np. symulacja procesu fałdowania białek, który
w przyrodzie zachodzi bardzo szybko tj. około jednej milionowej części
sekundy (zaburzenie tego procesu może prowadzić do choroby Alzheimera) symulacja tego procesu na zwykłym komputerze zajęłaby dekady,
–
modelowanie farmaceutyczne,
16
Klaster klasy Beowulf w środowisku heterogenicznym
–
modelowanie wyników finansowych,
–
symulacje astrofizyczne,
–
symulacje klimatu Ziemi (modelowanie aktualnie zachodzących zjawisk
klimatycznych oraz ich przewidywanie),
–
zastosowanie w kinematografii przy tworzeniu efektów specjalnych w filmach;
renderowanie graficzne przy manipulowaniu obrazem wysokiej rozdzielczości.
Obszar zastosowań najwydajniejszych obecnie systemów HPC:
Rys. 2: Zastosowanie systemów HPC (lista top500 – listopad 2006 [8]).
3.3 Klasyfikacja klastrów ze względu na użyty sprzęt i sieć
Wyróżnia się dwa rodzaje klastrów:
–
klastry heterogeniczne,
–
klastry homogeniczne.
Klastry
heterogeniczne
są
klastrami
uruchamianymi
w
środowiskach
heterogenicznych, czyli niejednorodnych. Środowiska niejednorodne to takie, które
zbudowane są z komputerów pochodzących od różnych producentów, pracujących
17
Klaster klasy Beowulf w środowisku heterogenicznym
na różnych systemach operacyjnych i wykorzystujących różne protokoły
sieciowe [23].
Klastry
homogeniczne
są
klastrami
uruchamianymi
w
środowiskach
homogenicznych, czyli jednorodnych. Środowisko sieciowe uważa się za
jednorodne, gdy zbudowane jest ze sprzętu tego samego, lub kompatybilnego
producenta. W środowisku tym wykorzystywany sprzęt działa pod kontrolą tego
samego systemu operacyjnego [23].
3.4 Systemy operacyjne klastrów typu HPC
Obecnie najpopularniejszym systemem operacyjnym dla klastrów HPC jest
system Linux. Dzięki linuksowi koszty związane z uruchomieniem klastra uległy
znacznemu zredukowaniu. Linux wspiera wiele platform sprzętowych, posiada
wydajny
kompilator,
daje
użytkownikowi
możliwość
dopasowania
jądra
systemowego do własnych potrzeb, a większość oprogramowania jest darmowa.
Udział systemu Linux wśród systemów klastrowych z listy top500 wynosi niemal
98%.
Rys. 3: Udział systemu Linux w systemach HPC. Opracowanie
własne na podstawie listy Top500 z 2006 roku uwzględniające tylko
rozwiązania klastrowe [8].
18
Klaster klasy Beowulf w środowisku heterogenicznym
Rys. 4: Udział systemów operacyjnych w rozwiązaniach HPC na przestrzeni lat
(zaczerpnięte ze strony top500 [8]).
3.5 Architektury klastrów
Wyróżnia się dwa podstawowe architektury klastrów:
–
model Single System Image (SSI), którego przykładem może być projekt
openMosix (jako przedstawiciel klastrów typu zrównoważonego obciążenia),
–
model Beowulf (jako przedstawiciel klastrów typu HPC).
3.5.1 Single System Image (SSI)
Głównym założeniem twórców SSI było stworzenie architektury klastrowej,
która gwarantowałaby całkowitą transparentność zasobów, skalowalną wydajność
oraz łatwość wspierania aplikacji użytkowników. SSI może być zdefiniowane jako
iluzja, stworzona poprzez sprzęt lub oprogramowanie, która prezentuje zasoby
jako jedną, zunifikowaną i przede wszystkim potężniejszą całość [24]. Model SSI
ukrywa heterogeniczny oraz rozproszony charakter struktury klastra.
19
Klaster klasy Beowulf w środowisku heterogenicznym
Cechy architektury SSI [24]:
Pojedynczy punkt dostępowy. Możliwość połączenia się z klastrem jako
wirtualnym hostem, chociaż składa się on z wielu maszyn.
Wspólna przestrzeń procesów. Możliwość komunikacji pomiędzy procesami
rezydującymi na różnych węzłach. Proces występujący na danym węźle może
stworzyć potomka, który będzie rezydować na innym z węzłów.
Pojedyncza przestrzeń pamięci. Wrażenie dużej, scentralizowanej pamięci, która
w rzeczywistości może być rozproszona.
Pojedyncza przestrzeń operacji I/O. Umożliwienie wykonywania operacji I/O na
lokalnie lub zdalnie zlokalizowanych peryferiach lub urządzeniach dyskowych.
Jedna hierarchia plików. Użytkownik po zalogowaniu do systemu ma wrażenie,
że pracuje w jednym dużym systemie plików.
Wspólny system zarządzania zadaniami. Występuje globalny system zarządzania
zadaniami, który może przyjmować zlecenia każdego z węzłów.
Jeden punkt zarządzania klastrem. Cały klaster lub każdy z węzłów z osobna
może
być
konfigurowany,
testowany,
monitorowany
z
jednego
punktu
dostępowego.
Migracja procesów. Możliwość przeniesienia procesów (migracji) z węzłów
bardziej obciążonych do mniej obciążonych umożliwia balansowanie obciążeniem
klastra.
Checkpointing. Mechanizm okresowego zapisywania danych procesów na dysk,
które można odtworzyć w przypadku awarii.
Przykładem projektu realizującego założenia architektury SSI jest openMosix [22].
openMosix
jest
rozszerzeniem
jądra
systemowego,
który
zmienia
sieć
połączonych komputerów w superkomputer. Realizuje on automatyczne oraz
przeźroczyste dla użytkownika szybkie wykrywanie innych węzłów openMosix.
Wykryte węzły wraz z istniejącymi już w strukturze klastra zaczynają tworzyć
wspólną całość. openMosix poprzez wywłaszczanie oraz przenoszenie procesów
pomiędzy węzłami może optymalizować ich obciążenie [25].
20
Klaster klasy Beowulf w środowisku heterogenicznym
Struktura klastra openMosix składa się z komputerów połączonych możliwie
szybką siecią komputerową. Cechą charakterystyczną jest brak obecności węzła
głównego (kontrolera klastra).
Wady i zalety openMOSIXa:
Zalety:
–
równoważenie obciążenia klastra,
–
łatwość rozbudowy o kolejne węzły,
–
prosty w instalacji i konfiguracji,
–
brak potrzeby ingerowania w kod aplikacji,
–
dobrze nadaje się do obsługi aplikacji, które można podzielić na niezależne
procesy.
Wady:
–
nie są migrowane procesy wielowątkowe,
–
generowanie dużego ruchu sieciowego,
–
brak pełnej implementacji na kernele serii 2.6,
–
dla pojedynczego procesu brak jakichkolwiek efektów przyspieszenia działania.
3.5.2 Beowulf
3.5.2.1 Ogólna charakterystyka
Beowulf to typ klastra bazujący na powszechnie dostępnym sprzęcie
(masowo
produkowanych
komputerach,
zwykłych
elementach
sieciowych)
zazwyczaj prywatnej sieci oraz oprogramowaniu typu OpenSource (Linux) [26].
Nazwa Beowulf wywodzi się od tytułowego bohatera staroangielskiej
legendy „Beowulf”, który zabił potwora zwanego Grendel. Stąd skojarzenie słowa
Beowulf z siłą, mocą. Oto jak bohater jest przedstawiony został w legendzie [27]:
“Famed was this Beowulf: far flew the boast of him, son of Scyld, in the Scandian
lands. So becomes it a youth to quit him well with his father’s friends, by fee and
21
Klaster klasy Beowulf w środowisku heterogenicznym
gift, that to aid him, aged, in after days, come warriors willing, should war draw
nigh, liegemen loyal: by lauded deeds shall an earl have honor in every clan.”
Idea klastra Beowulf polega na zbudowaniu możliwie wydajnej struktury
obliczeniowej jak najmniejszym kosztem. Możliwości obliczeniowe takiego klastra
mogą być zwiększane poprzez dodawanie kolejnych maszyn.
Beowulf nie jest specjalnym pakietem oprogramowania czy też modyfikacją
jądra systemowego. Nie stanowi też żadnej nowej topologii sieciowej. Beowulf to
technologia łączenia komputerów pracujących pod kontrolą systemu Linux, tak aby
utworzyć równoległy, wirtualny superkomputer [28].
3.5.2.2 Historia
Pojawienie się pierwszych planów klastra zbudowanego na powszechnie
dostępnym sprzęcie będącym alternatywą dla superkomputerów miało miejsce w
roku 1993. Projekt zainicjowany został przez Donalda Becker‘a oraz Thomasa
Sterling‘a [29]. W roku 1994 powstał oficjalny projekt pod nazwą Beowulf Project w
CESDIS (The Center of Excellence in Space Data and Information Sciences)
będącym dostawcą dla NASA. Wkrótce stworzono prototyp klastra zbudowany
z 16 procesorów Intel DX połączonych siecią Ethernet 10Mbit/s. Sukces klastra
sprawił, że idea Beowulfa stała się dosyć popularna w NASA oraz w środowiskach
akademickich.
Pierwszy
klaster
typu
Beowulf
znalazł
zastosowanie
w
rozwiązywaniu problemów pojawiających się przy dużych zestawach danych, które
często pojawiały się w aplikacjach projektu NASA Earth and Space Sciences
(ESS). „Przyjazność” idei stała się przyczyną nagłego wzrostu popularności
Beowulfa.
3.5.2.3 Budowa klastra
Najprostszy klaster tego typu to serwer główny pełniący rolę kontrolera
klastra oraz podłączony do niego poprzez zwykłą sieć typu Ethernet węzeł kliencki.
Kontroler klastra jest jednostką służącą do zarządzania wszystkimi węzłami
iposiada dostęp do sieci zewnętrznej. To poprzez niego wydaje się polecenia do
wszystkich bądź też części klientów (w zależności od zapotrzebowania). Węzły
klienckie wykonują wyłącznie zlecenia pochodzące od węzła głównego, często są
to maszyny nieposiadające monitorów oraz klawiatur, a dostęp do nich możliwy
22
Klaster klasy Beowulf w środowisku heterogenicznym
jest poprzez zdalne logowanie, opcjonalnie poprzez terminal szeregowy. Cała
struktura nie posiada specjalistycznych elementów sprzętowych przez co jest
prostą
w
tworzeniu.
Tego
typu
architektura
komputerowa
może
być
wykorzystywana do wykonywania obliczeń równoległych za sprawą powszechnie
dostępnych bibliotek systemowych Message Passing Interface (MPI) [30], które
zajmują się przydzielaniem nowych zasobów dla procesów oraz ich migracją.
W Beowulfie ważne jest samo podejście programistów, którzy traktują klaster jako
jedną maszynę.
Rys. 5: Schemat logiczny klastra Beowulf (na podstawie IBM Redbooks „Linux
HPC Cluster Installation”).
3.5.2.4 Klasyfikacja klastrów Beowulf. Wady i zalety.
W celu zwiększenia mocy obliczeniowej czasami wykorzystuje się
wyspecjalizowany
sprzęt.
W
zależności
od
wykorzystywanej
sprzętowej klastry typu Beowulf można podzielić na [28]:
–
Klastry klasy I,
–
Klastry klasy II.
23
konfiguracji
Klaster klasy Beowulf w środowisku heterogenicznym
Klastry klasy I zbudowane są w całości z powszechnie dostępnego sprzętu oraz
oprogramowania. Powszechność takiego sprzętu niesie za sobą łatwość
w dostępie do sterowników. Najczęściej klastry tej klasy opierają się o takie
technologie jak IDE, SCSI, Ethernet, komponenty składowe zaś są łatwe do
wymienienia oraz przede wszystkim tanie. Klastry tej klastry są bardzo łatwe
w rozbudowie.
Klastry klasy II opierają się na sprzęcie wysokiej klasy, często dostarczanym przez
jednego producenta. Wykorzystanie takiej konfiguracji sprzętowej wiąże się
z większą wydajnością niż ta, którą oferują klastry klasy I, jednakże wiąże się to
z większymi kosztami utrzymania. Z racji wykorzystania wyspecjalizowanego
sprzętu mogą pojawić się tutaj problemy ze sterownikami.
Dobór klasy klastra wiąże się ściśle z zapotrzebowaniem oraz możliwościami
finansowymi, klasa druga niekoniecznie jest lepsza od pierwszej.
Odporność klastra na uszkodzenia jest związana z rodzajem elementu
struktury, który ulegnie uszkodzeniu. Jeśli awarii ulegnie węzeł, klaster może
kontynuować swoją pracę. Po naprawieniu uszkodzonego węzła może on zostać
w każdym momencie podłączony do klastra. Odmiennie ma się sprawa przy
uszkodzeniu kontrolera. Tutaj awaria uniemożliwia dalszą pracę klastra. Dlatego
też, w niektórych przypadkach stosuje się kilka kontrolerów.
Klastry typu Beowulf przegrywają w rywalizacji z superkomputerami jeśli
chodzi o wymianę drobnych danych - przeszkodą jest zazwyczaj dosyć mała
przepustowość sieci komputerowej. Coraz powszechniejsze staje się jednak
wykorzystanie sieci o wysokich przepustowościach (rzędu nawet 10Gb/s). Dystans
pomiędzy superkomputerami a klastrami jeśli chodzi o szybkość wymiany
informacji będzie więc coraz mniejszy.
Programy wykorzystywane na klastrach typu Beowulf zazwyczaj pisane są
w języku C lub FORTRAN. Paralelizacja programu nie następuje automatycznie.
Programista jest zmuszony do napisania programu w odpowiedni sposób
(np. z wykorzystaniem bibliotek MPI). Inaczej ma się sprawa w przypadku klastrów
typu Mosix, gdzie paralelizacją zajmuje się samo jądro systemowe (nie jest
konieczne pisanie programów pod kątem wykorzystania MPI).
24
Klaster klasy Beowulf w środowisku heterogenicznym
4 Opis klastra realizowanego w ramach pracy
Rozdział dotyczy części praktycznej realizowanego projektu
budowy klastra obliczeniowego. Przedstawia jego budowę pod
względem wykorzystanego sprzętu oraz oprogramowania.
Omawiane są systemy operacyjne węzła oraz kontrolera klastra
oraz opisane główne usługi uruchamiane w tych systemach.
Przedstawiono ponadto wirtualny system użytkowników oraz
zaznajamiono z systemem kolejkowania Torque Resource
Manager.
4.1 Ogólny opis projektu oraz jego założenia
Realizowany w ramach pracy klaster jest klastrem typu HPC i jest typowym
klastrem klasy Beowulf w środowisku heterogenicznym. Głównym elementem
struktury klastra jest kontroler, pełniący funkcje zarządcy węzłów.
Założeniem projektu było stworzenie struktury łatwej w administrowaniu - aktualizacji,
instalacji
dodatkowego
oprogramowania,
zarządzaniu
użytkownikami. Realizacja tego założenia opiera się na stworzeniu środowiska
współdzielonego pomiędzy węzłami klastra. Obecność jednego środowiska
znacznie zmniejsza czas, jaki należy poświęcić na administrację całym klastrem.
Klaster ten nie posiada sprzętu dedykowanego. Jednym z założeń było
wykorzystanie istniejącej struktury sieciowej i dostępnych komputerów. Pojawiła
się możliwość wykorzystania tych komputerów do wykonywania różnego typu
obliczeń, które zlecane byłyby przez użytkowników klastra. Zaletą „otwartej”
struktury miałaby być łatwość w rozbudowie. Praktycznie każda maszyna
posiadająca możliwość załadowania systemu poprzez sieć mogłaby stać się
elementem składowym klastra.
25
Klaster klasy Beowulf w środowisku heterogenicznym
4.2 Charakterystyka użytego sprzętu
Klaster wykorzystuje istniejąca strukturę sieci. Można uznać, że ze względu
na charakter użytego sprzętu przypomina tzw. CoW (Cluster of Workstations) [28].
Poniższy rysunek przedstawia uproszczony schemat sieci.
Rys. 6: Struktura sieciowa klastra.
Opis elementów struktury:
Sieć. Klaster nie posiada sieci dedykowanej. Wykorzystano istniejącą sieć
o
przepustowości 100Mbit/s, w której oprócz klastra normalnie mogą pracować inne
komputery nie związane w żaden sposób z klastrem.
Kontroler klastra – maszyna dwuprocesorowa klasy PC zarządzająca całym
klastrem, wyposażona w jeden interfejs sieciowy.
Węzły klastra są zwykłymi komputerami klasy PC. Składają się z powszechnie
dostępnego sprzętu. Wyposażone są w procesory Intela lub AMD różniej mocy.
Ponadto posiadają karty sieciowe, obsługujące możliwość ładowania systemu
poprzez sieć (wsparcie dla PXE). Komputery te są wykorzystywane do zwykłej
pracy w sieci i wyposażone są w systemy operacyjne użytkowników (głównie
26
Klaster klasy Beowulf w środowisku heterogenicznym
systemy rodziny windows). Przyłączenie danego komputera do klastra odbywa się
poprzez wybór opcji ładowania w klaster przy starcie komputera. Użytkownik
wybiera czy chce uruchomić swój system czy też dołączyć swoją maszynę do
klastra poprzez załadowanie systemu operacyjnego poprzez sieć komputerową.
Po dołączeniu maszyny do struktury klastra bezpośredni dostęp do niej jest
niemożliwy.
Router pełni funkcję serwera pomocniczego, zajmuje się przyznawaniem adresów
IP (poprzez usługę serwera DHCP). Na serwerze tym umiejscowiona jest również
usługa TFTP (trivial file transfer protocol) (RFC-1350 [31]).
4.3 Charakterystyka użytego oprogramowania
Jednym z założeń projektu było stworzenie środowiska łatwego w
zarządzaniu. Realizacja tego założenia opiera się na obecności odseparowanych
środowisk.
Rys. 7: Schemat logiczny klastra pod względem użytego oprogramowania.
27
Klaster klasy Beowulf w środowisku heterogenicznym
Opis elementów struktury:
SO – system operacyjny kontrolera klastra (Linux Gentoo [32]). Na kontrolerze
znajdują się również WSO (współdzielony system operacyjny) i SU (system
użytkowników).
WSO – współdzielony system operacyjny. Jest to system operacyjny zbudowany
również na podstawie dystrybucji Linux Gentoo. Został on zmodyfikowany pod
kątem uruchomienia poprzez sieć. System ten jest udostępniany węzłom poprzez
Network File System – NFS (RFC-1094 [33]). Wprowadzenie WSO sprawiło,
że wszystkie węzły posiadają ten sam system operacyjny (nie ma konieczności
tworzenia nowych środowisk dla nowo podłączanych węzłów). Konieczne
w przypadku takiego rozwiązania jest niedopuszczenie do sytuacji współdzielenia
pewnych plików przez różne usługi. W celu wyeliminowania tego zjawiska został
wprowadzony mechanizm umieszczania danych w pamięci RAM węzłów (głównie
katalogów tymczasowych, w których wiele programów zapisuje swoje tymczasowe
dane).
SU – system operacyjny użytkowników. System ten ma charakter systemu
współdzielonego i jest udostępniany poprzez NFS węzłom. W SU znajduje się
wiele aplikacji użytkowników oraz biblioteki MPI. Jest to system uruchamiany
zarówno na systemach już uruchomionych na węzłach jak również w systemie
kontrolera klastra (rezyduje w tych systemach jako system wirtualny). Do SU
uruchomionego na kontrolerze mogą logować się użytkownicy i zlecać klastrowi
wykonywanie różnych zadań.
WSO zajmuje się bezpośrednią kontrolą węzła i stanowi „bufor” pomiędzy
sprzętem a SU (stanowi dodatkową warstwę abstrakcji). NFS w samym SU nie jest
już widzialny – montowanie zasobów odbywa się na poziomie WSO.
KERNEL – jądro systemowe wspólne dla wszystkich środowisk rozszerzone
o funkcjonalność uruchamiania systemów wirtualnych.
28
Klaster klasy Beowulf w środowisku heterogenicznym
4.4 Budowa systemu kontrolera
Rys. 8: Schemat systemu kontrolera.
Główne usługi uruchomione w systemie operacyjnym kontrolera klastra:
4.4.1 OpenSSH
Pakiet OpenSSH [34] to zestaw programów, który umożliwia szyfrowaną
komunikację w sieci (jest alternatywą dla komercyjnego Secure Shell). Jest
zamiennikiem
takich
programów
jak
telnet
czy
rsh.
Zapewnia
wysokie
bezpieczeństwo w przeciwieństwie do wspomnianego programu telnet, w którym
komunikacja między klientem a serwerem przesyłana jest w postaci jawnego
tekstu. Możliwość łączenia się z wykorzystaniem szyfrowanego połączenia
sprowadza się do uruchomienia programu sshd po stronie serwera i wykorzystania
programu ssh po stronie klienta.
Standardowo, w przypadku OpenSSH, autentykacja do systemu odbywa się na
podstawie
hasła,
istnieje
jednak
możliwość
autoryzacji
użytkowników
z wykorzystaniem protokołów RSA i DSA. Metoda uwierzytelnianie RSA oraz DSA
w OpenSSH opiera się na dwóch specjalnie wygenerowanych kluczach, które
29
Klaster klasy Beowulf w środowisku heterogenicznym
nazywa
się
kluczem
publicznym
oraz
kluczem
prywatnym.
Korzyścią
wykorzystywania autoryzacji opartej na kluczach jest możliwość nawiązania
połączenia bez podawania hasła [35]. Tego typu autoryzacja została wykorzystana
opracowanym w klastrze.
4.4.2 Apache 2 – serwer stron www
Wykorzystano tutaj jeden z najpopularniejszych serwerów www - Apache
HTTP Server („Apache”) [36] ze wsparciem dla języka skryptowego PHP
(Hypertext Preprocessor) [37], który umożliwia dynamiczne generowanie stron
internetowych. Serwer www został wykorzystany do udostępniania stron
prezentujących statystyki obciążenia klastra na podstawie danych dostarczanych
przez system monitorowania klastra – Ganglia [38].
4.4.3 Ntpd (Network Time Protocol daemon)
Aplikacja Ntpd [39] używana jest do synchronizacji czasu serwera lub
klienta z jednym lub wieloma serwerami czasu przy wykorzystaniu protokołu NTP.
Może służyć również „udostępnianiu” czasu klientom lub serwerom. Zaletą
protokołu NTP jest bardzo duża precyzja rzędu kilkudziesięciu milisekund oraz
możliwość synchronizacji czasu dla bardzo dużej ilości komputerów bez
obciążania procesorów oraz sieci (wymiana informacji odbywa się poprzez
kilkudziesięciobajtowe pakiety UDP przesyłane okresowo – domyślnie co 64
sekundy). Protokół NTP tworzy statystykę dostępu do danego źródła wzorcowego
czasu (UTC) . Statystyka ta zawiera informację o aktualnej precyzji zegara
wzorcowego oraz lokalnego zegara systemowego. NTP zawiera również
informację dotyczącą opóźnień i różnic czasowych liczonych względem UTC.
Na podstawie znajomości opóźnień obecnych w sieci TCP/IP oraz statystyk każdy
z klientów NTP posiada możliwość skalibrowania czasu swojego zegara
systemowego. Sam proces kalibracji polega na przyspieszeniu bądź też
spowolnieniu
pracy
niebezpieczeństwa
lokalnego
wystąpienia
zegara
zjawiska
i
ma
na
skokowego
celu
wyeliminowanie
przestawienia
czasu
w systemie.
W przypadku klastra synchronizacja czasu wiąże się z utrzymaniem zgodnego
czasu kontrolera i wszystkich węzłów.
30
Klaster klasy Beowulf w środowisku heterogenicznym
4.4.4 NFS (Network File System)
Jest to sieciowy, asymetryczny system plików oparty na modelu klientserwer, który umożliwia współdzielenie plików pomiędzy komputerami w sieci
(RFC-1094 [33]). Został opracowany przez programistów z Sun Microsystem
w latach osiemdziesiątych, aktualnie jest protokołem otwartym. Umożliwia dostęp
do plików na odległych maszynach w taki sam sposób jak użytkownik odwołuje się
do lokalnego pliku. Jest to możliwe dzięki połączeniu funkcjonalności dostarczanej
przez jądro systemowe po stronie klienta oraz serwera NFS (również
zintegrowanego z jądrem systemowym) znajdującego się po stronie serwera.
Dostęp do plików jest całkowicie transparentny (nie ma różnicy czy klient odwołuje
się do lokalnego pliku czy też zdalnego) oraz działa na różnych systemach
operacyjnych i architekturach sprzętowych. W celu zapewnienia bezpieczeństwa
dostęp użytkownika do zasobu może podlegać wcześniejszej autentykacji
(np. na podstawie adresu IP klienta lub z wykorzystaniem systemu Kerberos).
Cechą charakterystyczną NFS jest centralizacja danych. Dane są zlokalizowane
na jednej maszynie (w przypadku realizowanego w ramach pracy klastra, dane
udostępniane węzłom-klientom znajdują się na kontrolerze klastra). Takie
podejście znacznie skraca czas, jaki należy poświęcić na administrację systemem,
ale też w przypadku awarii serwera uniemożliwia wszystkim klientom dostęp do
zasobów.
Serwer NFS udostępnia zasoby. Klient NFS montuje udostępnione przez serwer
zasoby w dowolnym miejscu i korzysta z nich jak z zasobów lokalnych. NFS nie
wymaga sztywnej lokalizacji dla montowanych danych. Samo montowanie odbywa
się przy pomocy komendy mount, która przyjmuje jako parametr adres komputera,
nazwę udostępnianego zasobu oraz docelowy punkt montowania (na systemie
lokalnym). Standardowo komunikacja między klientem a serwerem odbywa się
przy wykorzystaniu protokołu UDP, istnieje jednak możliwość wykorzystania
protokołu TCP.
31
Klaster klasy Beowulf w środowisku heterogenicznym
Wyróżnia się dwa podstawowe rodzaje montowania:
–
montowanie twarde – jeśli zasób jest niedostępny, klient ponawia aż do skutku
próbę dostępu do zasobu,
–
montowanie miękkie – w przypadku niedostępności zasobu, klient próbuje
uzyskać dostęp do zasobu tylko kilka razy.
Istnieje również możliwość wykorzystania tzw. automounter`a [40]. Działanie tego
programu polega na automatycznym, niewidocznym dla użytkownika montowaniu
zasobu, do którego odwołuje się użytkownik. Użytkownik ma wrażenie, że zasób
jest cały czas podmontowany. W czasie bezczynności zamontowany zasób
zostaje odmontowany, co pozwala na zwolnienie niewykorzystywanych zasobów.
Rys. 9: Montowanie zasobów w NFS (na podstawie Tanenbaum, van Steen,
Systemy rozproszone i paradygmaty)
Aktualnie wyróżnia się NFSv2, NFSv3 oraz NFSv4. Wersja pierwsza nigdy nie
została opublikowana.
W przypadku realizowanego klastra jeden z zasobów udostępnianych przez
serwer NFS jest wykorzystywany jako podstawowy system plików (tzw. root file
system, z którego jest ładowany system). Inne zasoby są podmontowywane tuż po
załadowaniu systemu. Wykorzystanie zasobu udostępnianego poprzez NFS jako
32
Klaster klasy Beowulf w środowisku heterogenicznym
głównego systemu plików jest możliwe dzięki podaniu odpowiednich parametrów
do jądra systemowego węzła informujących o charakterze głównego systemu
plików oraz wskazujących na lokalizacje serwera NFS i nazwę zasobu.
4.4.5 Ganglia
Ganglia jest systemem monitorowania przeznaczonym dla klastrów [38].
Jest to projekt przydatny zarówno dla administratorów jak i użytkowników - pozwala sprawdzić obciążenie (określić kondycję) klastra lub grupy klastrów jak
również każdego węzła z osobna. Monitorowaniu może podlegać aktywność
procesora, sieci, pamięci itp. Dodatkowo program dostarcza informacji o systemie
(są to np. wersja jądra systemowego, nazwa systemu operacyjnego) i sprzęcie
(np. częstotliwość taktowania procesora i jego architektura, ilość pamięci RAM) na
którym został uruchomiony. Projekt może być używany do monitorowania również
systemów wirtualnych uruchomionych na jednej maszynie z WSO.
Ogromną zaletą projektu Ganglia jest łatwość wykrywania węzłów nieaktywnych
lub niepracujących prawidłowo - jest to przydatne szczególnie w przypadkach, gdy
klaster składa się z bardzo dużej ilości węzłów.
Na projekt składają się kilka programów. Najważniejsze z nich to:
–
Gmond (Ganglia MONitor Daemon) jest to program uruchamiany na każdym
z węzłów klastra. Nie wymaga systemu plików, użytkownika ze specjalnymi
uprawnieniami czy bazy danych. Jego zadanie polega na monitorowaniu stanu
węzła i informowaniu program gmetad o zmianach na węźle. Wykorzystuje
protokół multicast do rozsyłania informacji do innych węzłów.
–
Gmetad
(Ganglia
METAdata
Daemon)
jest
uruchamiany
na
jednym
komputerze np. kontrolerze klastra lub na niezależnej maszynie. Jego funkcja
polega
na
zbieraniu
(monitorujących
węzły)
danych
jak
pochodzących
również
od
od
programów
gmond
innych
programów
gmetad
(monitorujących inne klastry) i zapisywaniu ich w bazie Round Robin Database
(RRD). Zebrane informacje podlegają następnie odpowiedniej obróbce
i prezentowane są na stronie www w postaci wykresów.
33
Klaster klasy Beowulf w środowisku heterogenicznym
Rys. 10: Przykładowe statystyki generowane przez Ganglia
4.4.6 Syslog-NG
Syslog-ng [41] to system logowania zdarzeń systemowych. Jest to następca
popularnego syslogd i obsługuje zaawansowane metody filtrowania zdarzeń na
podstawie wyrażeń regularnych. W systemach klastrowych często wykorzystuje
się go do przesyłania informacji o zdarzeniach zachodzących na węzłach do innej
maszyny (niekoniecznie musi to być kontroler klastra) zajmującej się ich
składowaniem do plików (tzw. logów) oraz analizowaniem (opcjonalne).
Centralizacja logów znacznie ułatwia przeglądanie zdarzeń zachodzących na
34
Klaster klasy Beowulf w środowisku heterogenicznym
węzłach. Administrator nie musi logować się na inne maszyny w celu przeglądania
zdarzeń zachodzących na tych maszynach.
Zdalne logowanie zdarzeń systemowych jest jedyną możliwością logowania
zdarzeń zachodzących na systemach bezdyskowych.
4.5 Budowa systemu węzła
Poniżej schemat budowy systemu węzła klastra:
Rys. 11: Schemat systemu węzła.
4.5.1 Usługi węzła klastra
Lista najważniejszych usług uruchamianych na węzłach klastra:
–
Syslog-ng,
–
Ganglia (monitoruje aktywność węzła; informacje zbierane są przez serwer
Ganglii znajdujący się na kontrolerze klastra),
–
OpenSSH,
–
Ntpd.
35
Klaster klasy Beowulf w środowisku heterogenicznym
Ponadto na każdym z węzłów znajduje się VServer [42], w którym uruchamiany
jest system użytkowników (SU).
4.5.2 Mechanizmy wykorzystane w systemie węzła
Automatyczna konfiguracja IP oraz nazwy węzła. Po pobraniu adresu IP
oferowanego przez serwer DHCP (przydziały dynamiczne) węzeł klastra sam
dokonuje konfiguracji nazwy węzła.
Mechanizm sprawdzania połączenia NFS. Mechanizm ten polega na cyklicznym
odczycie pliku, który znajduje się na NFSie. W przypadku braku połączenia
z serwerem NFS, a co się z tym wiąże problemem z odczytem pliku, węzeł jest po
pewnym
czasie
restartowany.
Zapobiega
to
zawieszeniu
węzła
klastra
w przypadku tymczasowych problemów z siecią lub serwerem NFS.
Blokada dostępu do terminala. Po uruchomieniu węzła dostęp do systemu jest
blokowany poprzez blokadę terminala. Zapobiega to nieautoryzowanemu
dostępowi do systemu.
Katalogi montowane do pamięci RAM. Mechanizm polega na umieszczaniu do
pamięci RAM węzła katalogów, w których usługi zapisują swoje tymczasowe dane.
Zapobiega to konfliktom zapisu i odczytu przez usługi uruchomione na różnych
maszynach.
4.6 System użytkowników (SU) - VServer
Jest to oddzielny system stworzony w celu udostępnienia użytkownikom
klastra środowiska do kompilowania i uruchamiania aplikacji równoległych.
Środowisko to ma formę środowiska wirtualnego i jest uruchamiane zarówno na
kontrolerze klastra jak i na węzłach w formie systemu rezydującego w systemie już
uruchomionym (wirtualizacja [43] na poziomie systemu operacyjnego - jądra).
Wirtualizacji tej dokonuje się przy wykorzystaniu tzw. VServera.
Założeniem projektu VServer jest separacja środowiska jednego serwera
w niezależne jednostki (zwane także Virtual Private Server) [42]. W celu dokonania
tej
separacji
konieczne
jest
dokonanie
36
modyfikacji
jądra
systemowego
Klaster klasy Beowulf w środowisku heterogenicznym
i wprowadzenia pojęcia kontekstu. Głównym zadaniem kontekstu jest ukrycie
procesów w pewnym środowisku i niedopuszczenie do kontaktu procesów
należących do różnych kontekstów (separacja przestrzeni procesów). Tworzenie
nowych VPSów polega więc na tworzeniu środowisk o różnych kontekstach.
W obrębie jednego serwera może istnieć wiele takich wyseparowanych środowisk,
niemających ze sobą kontaktu.
Środowiska wirtualne mogą posiadać własne interfejsy sieciowe (widoczne tylko
w tym środowisku), każdy z nich może posiadać inny adres IP pod jakim będą
widoczne w sieci (separacja sieci IP). Z punktu widzenia użytkownika sieci VPSy
będą widoczne wówczas jako osobne komputery posiadające własne usługi.
Istnieje również możliwość korzystania z jednego adresu IP dla różnych VPSów
(współdzielenie).
VPS operuje na prawie identycznym środowisku operacyjnym jak w zwykłym
serwerze linuksowym. Wszystkie usługi, takie jak ssh, serwer www, poczta, bazy
danych mogą być uruchomione w takim VPS bez żadnych modyfikacji. Każdy
z wirtualnych serwerów posiada własną bazę użytkowników (w tym administratora
systemu) i korzysta z jednego, współdzielonego jądra systemowego. Istnieje
również możliwość ograniczania pracy procesora (mechanizm Token Bucket) oraz
przestrzeni dyskowej dla różnych kontekstów.
Zalety stosowania VServera:
Łatwe zarządzanie. VServer umożliwia łatwe przenoszenie VPSów na inne
maszyny. Przeniesienie VPS ogranicza się do następujących ruchów: wyłączenia
serwera, skopiowania go na inną maszynę, skopiowania konfiguracji oraz
wystartowania wirtualnego serwera na innej maszynie. Jest to mechanizm o wiele
prostszy niż w przypadku przenoszenia całego systemu na inną maszynę.
Bezpieczeństwo. VServer znacznie zwiększa bezpieczeństwo systemu poprzez
separacje usług narażonych na działanie intruza od właściwego systemu. Intruz po
zdobyciu kontroli nad VPS nie będzie miał dostępu do podstawowego systemu.
37
Klaster klasy Beowulf w środowisku heterogenicznym
Separacja serwisów. W przypadku usług, które mogą na siebie w jakiś sposób
oddziaływać (konfliktować ze sobą) istnieje możliwość ich odseparowania
w VPSach.
Łatwość zastosowania mechanizmu fail-over. W przypadku awarii VPS,
korzystając ze zreplikowanego (np. przy pomocy DRBD) serwera można bardzo
szybko przywrócić serwer do działania.
Łatwość przeprowadzania testów (sprawdzanie działania aplikacji w różnych
środowiskach).
Usługi uruchamiane w VPS
W zależności od maszyny, na której uruchamiane jest środowisko wirtualne (jeden
z węzłów lub kontroler) uruchamiane są różne usługi. Do najważniejszych z nich
należą syslog-ng, serwer ssh (dostęp poprzez port 10022) oraz system
kolejkowania zleceń użytkowników Torque Resourcer Manager bazujący na
Portable Batch System (PBS). Usługa monitora PBS (pbs_mom) uruchamiana jest
na węzłach i na kontrolerze klastra, serwer PBS (pbs_server) tylko na kontrolerze.
Wykorzystany został również zaawansowany planista Maui Cluster Scheduler,
który zastepuje domyślnie występującego planistę w pakiecie Torque. Dodatkowo
w VPS kontrolera uruchomione są aplikacje umożliwiające współprace z MPI (np.
ORTE daemon).
4.7 Torque Resource Manager
Torque Resource Manager jest programem bazującym na PBS (Portable
Batch System) służącym do zarządzania zasobami obliczeniowymi i pozwalającym
na optymalne ich wykorzystanie [44]. Jest to projekt typu OpenSource
i wykorzystywany jest zarówno w klastrach jak i superkomputerach.
Do głównych zadań tego programu należy kontrola zasobów obliczeniowych
klastra, przyjmowanie zadań od użytkowników oraz kolejkowanie ich, w razie
możliwości przydział zasobów obliczeniowych i wykonywanie zadań na węzłach
klastra oraz monitorowanie zleceń użytkowników wykonywanych w obrębie
klastra [45].
38
Klaster klasy Beowulf w środowisku heterogenicznym
Torque jest systemem kolejkowym, który rezerwuje i przydziela zasoby
użytkownikom zgodnie z wyznaczonymi zasadami. Po stronie użytkownika praca
z takim systemem ogranicza się do napisania skryptu, w którym określa się zasoby
z jakich chce się skorzystać (np. Ilość węzłów, czas pracy procesora). Następnie
wprowadza się zadanie do systemu kolejkowego za pomocą komendy qsub.
System kolejkowy na bieżąco sprawdza dostępne zasoby obliczeniowe całego
klastra i jeśli jest możliwość rezerwuje zasoby określone przez użytkownika,
a następnie przystępuje do wykonywania zadania. W momencie, gdy zadania
zlecone przez użytkowników przekraczają dostępne zasoby obliczeniowe, zlecenia
wykonywane są zgodnie z priorytetem wyznaczonym na podstawie podanego
zapotrzebowania na zasoby (tj. pamięci operacyjnej, czasu procesora). Po
zakończeniu zadania użytkownika system kolejkowy zwalnia zarezerwowane
wcześniej zasoby i przystępuje do realizacji kolejnych zadań umieszczonych
w kolejce [46].
W przypadku realizowanego w ramach pracy klastra programem odpowiadającym
za zarządzanie zleconymi zadaniami w kolejkach, przydzielaniem priorytetów oraz
przekazywaniem do uruchomienia jest Maui Cluster Scheduler [47]. Jest to mocno
zoptymalizowany planista bedący zamiennikiem standardowo występującego w
Torque planisty – pbs_sched. Posiada on zaawansowane polityki przydziałów
zasobów, przez co zarządzanie zasobami klastra jest bardziej efektywne.
Następcą Maui Cluster Schedulera jest komercyjny Moab Cluster Suite [48].
39
Klaster klasy Beowulf w środowisku heterogenicznym
5 Testy klastra
Rozdział dotyczy testów klastra w środowisku sieciowym.
Przedstawione zostały wyniki testów ładowania systemu węzła,
przesyłu komunikatów MPI oraz odczytu danych z serwera
sieciowego NFS.
5.1 Ładowanie systemu węzła
Celem testu było zbadanie wpływu ładowania systemu węzła na kontroler
klastra oraz sprawdzenie obciążenia sieci lokalnej. Monitorowaniu podlegał ruch
na interfejsie sieciowym (zarówno wychodzący jak i przychodzący) oraz
obciążenie procesora. Samo monitorowanie odbywało się po stronie kontrolera.
Testy przeprowadzono dla trzech różnych konfiguracji: dla jednego, dwóch oraz
szcześciu węzłów.
Dane odczytywano z /sys/class/net/rtl1/statistics/{tx,rx}_bytes za pomocą skryptu
uruchamianego co 0,25 sekundy. Katalog /sys jest puntem montowania tzw. sysfs.
Sysfs jest wirtualnym systemem plików, który dostarcza informacji o urządzeniach
i sterownikach z jądra systemowego do przestrzeni użytkownika i pozwala również
na ich konfigurację.
Próbkowanie nie było równomiernie rozłożone w dziedzinie czasu. Czas po jakim
były odczytywane kolejne dane był sumą 0,25s i czasu wykonania skryptu, który
zależał od lokalnych warunków systemowych np. aktualnego obciążenia
procesora.
40
Klaster klasy Beowulf w środowisku heterogenicznym
Ładowanie jednego węzła.
Rys. 12: Ładowanie jednego węzła: ilość wysłanych/odebranych danych.
Rys. 13: Ładowanie jednego węzła: przybliżona szybkość transmisji danych.
41
Klaster klasy Beowulf w środowisku heterogenicznym
Rys. 14: Ładowanie jednego węzła: obciążenie procesora.
Ładowanie dwóch węzłów jednocześnie
Rys. 15: Ładowanie dwóch węzłów: obciążenie procesora.
42
Klaster klasy Beowulf w środowisku heterogenicznym
Rys. 16: Ładowanie dwóch węzłów: ilość wysłanych/odebranych danych.
Rys. 17: Ładowanie dwóch węzłów: przybliżona szybkość transmisji danych.
43
Klaster klasy Beowulf w środowisku heterogenicznym
Ładowanie 6 węzłów w krótkich odstępach czasowych
Rys. 18: Ładowanie sześciu węzłów: ilość wysłanych/odebranych danych.
Rys. 19: Ładowanie sześciu węzłów: przybliżona szybkość transmisji danych.
44
Klaster klasy Beowulf w środowisku heterogenicznym
Rys. 20: Ładowanie sześciu węzłów: obciążenie procesora.
45
Klaster klasy Beowulf w środowisku heterogenicznym
5.2 Test wysycenia sieci
Test wysycenia sieci przy wykorzystaniu programu mpi_latency. Program mierzy
szybkość transmisji komunikatów MPI o różnych rozmiarach oraz wyznacza średni
czas opóźnienia pomiędzy węzłami a kontrolerem.
Rys. 21: Test MPI: szybkość transmisji danych.
Rys. 22: Test MPI: czas odpowiedzi.
46
Klaster klasy Beowulf w środowisku heterogenicznym
5.3 Test odczytu danych z serwera NFS
Test polegał na odczycie porcji danych (500MB) z serwera NFS przez jeden
z węzłów. Dane odczytywane były na 3 różne sposoby:
–
16000 plików po 32kB – łączenie 500MB danych,
–
1000 plików, z których każdy ma 512kB – łączenie 500MB,
–
jeden plik o rozmiarze 500MB.
Monitorowaniu odbywało się po stronie kontrolera - sprawdzano obciążenie
procesora oraz ruch na interfejsie siecowym. Próbkowanie danych następowało co
0,25 sekundy.
Celem testu było sprawdzenie zależności szybkości transmisji danych od rozmiaru
serwowanych przez serwer NFS plików.
Przypadek pierwszy: odczyt 16000 plików (każdy po 32kB)
Rys. 23: Test odczytu plików o rozmiarze 32kB z NFS.
47
Klaster klasy Beowulf w środowisku heterogenicznym
Przypadek drugi: 1000 plików po 512kB
Rys. 24: Test odczytu plików o rozmiarze 512kB z NFS.
Przypadek trzeci: odczyt jednego pliku o rozmiarze 500MB.
Rys. 25: Test odczytu 1 pliku z NFS o rozmiarze 500MB.
48
Klaster klasy Beowulf w środowisku heterogenicznym
5.4 Wnioski z testów
Wykorzystana sieć komputerowa zapewnia transfer na poziomie 100Mbit/s.
Jest to czynnik ograniczający, który może wypływać na spadek wydajności
działania klastra. Zalecane byłoby wykorzystanie sieci o większej przepustowości
np. 1Gbit/s, co wpłynęłoby znacznie na zmniejszenie opóźnienia pomiędzy
węzłami a kontrolerem, a zatem spowodowałoby przyspieszneie działania klastra.
Obecnie w wielu systemach klastrowych wykorzystuje się sieć tego typu. Można
zastanowić się również nad wykorzystaniem projektu The Genoa Active Message
Machine
(GAMMA),
który
poprzez
wprowadzenie
modyfikacji
do
jądra
systemowego dostarcza klastrom system komunikacji o małych opóźnieniach
i wysokiej wydajności [49].
Warto
przemyśleć
zwiększenie
możliwości
obliczeniowych
samego
kontrolera. Jak można wywnioskować z testu ładowania wezłów – im większa ilość
klientów do obsłużenia przez kontroler tym większe obciążenie jego procesora.
Obecnie kontroler jest maszyną stosunkowo wolną, co przy dużej ilości węzłów
może być kolejnym czynnikiem ograniczającym.
W przypadku testu odczytu danych z serwera NFS, szybkość transmisji
danych jednego dużego pliku jest ograniczona przez możliwości fizyczne samej
sieci lokalnej. Dla dużej ilości plików o mniejszych rozmiarach, transmisja danych
następuje z mniejszą szybkością. Jest to spowodowane zwiększoną ilością
procedur (np. realizacją dostępu do plików na serwerze), które muszą być
wykonane oraz obecnością narzutu stosu TCP. Czynniki te wpływają na obniżenie
szybkości przesyłu danych.
odczyt plików o rozmiarze:
szacowana średnia
szybkość transmisji danych
16000x32kB
1000x512kB
1x500MB
3,5MiB/s
8MiB/s
10,5MiB/s
Tabela 2: Zestawienie wyników testu odczytu danych z serwera NFS
49
Klaster klasy Beowulf w środowisku heterogenicznym
6 Podsumowanie
Celem
pracy
było
stworzenie
klastra
obliczeniowego,
czyli
grupy
połączonych komputerów, które widziane byłyby jako jedna maszyna i które
wykorzystywane byłyby do wykonywania zadań obliczeniowych. Zrealizowany
w ramach pracy klaster jest klasy Beowulf. Oznacza to, że w jego strukturze
wyróżnić można jeden główny komputer – tzw. kontroler, którego funkcja polega na
zarządzaniu pozostałymi maszynami wchodzącymi w skład klastra (węzłami).
Ze względu na użyty sprzęt oraz sieć jest to klaster heterogeniczny – zbudowany
jest z komputerów pochodzących od różnych dostawców oraz nie posiada sieci
dedykowanej - cała struktura osadzona została w istniejącej już sieci
komputerowej typu Ethernet, w której mogą pracować inne komputery należące do
użytkowników sieci. Pod względem oprogramowania klastra spełniono wszystkie
założenia – strukturę oprogramowania podzielono na niezależne systemy
operacyjne (system kontrolera, węzła oraz użytkowników). Systemy węzła oraz
użytkownika mają charakter systemów współdzielonych pomiędzy węzłami. Zaletą
stosowania
takiego
rozwiązania
jest
brak
konieczności
przygotowywania
oprogramowania dla każdego z węzłów z osobna. Redukuje to czas, jaki należy
poświęcić na administrację klastrem oraz ułatwia zarządzanie cała strukturą.
Umiejscowienie tych systemów na serwerze sieciowym NFS sprawia, że nie ma
potrzeby instalowania oprogramowania systemowego na dyskach twardych
węzłów. Wystarczy tylko komputer z możliwością ładowania systemu poprzez sieć.
Wybór takiego rozwiązania sprzyja łatwości rozbudowywania całej struktury o
kolejne węzły.
50
Klaster klasy Beowulf w środowisku heterogenicznym
Indeks ilustracji
Rys. 1: Redukcja czasu wykonywania różnych części programu
w zależności od liczby użytych procesorów [13]...................................... 12
Rys. 2: Zastosowanie systemów HPC (lista top500 – listopad 2006 [8])...............17
Rys. 3: Udział systemu Linux w systemach HPC. Opracowanie własne
na podstawie listy Top500 z 2006 roku uwzględniające tylko
rozwiązania klastrowe [8]......................................................................... 18
Rys. 4: Udział systemów operacyjnych w rozwiązaniach HPC
na przestrzeni lat (zaczerpnięte ze strony top500 [8])..............................19
Rys. 5: Schemat logiczny klastra Beowulf
(na podstawie IBM Redbooks „Linux HPC Cluster Installation”). ............23
Rys. 6: Struktura sieciowa klastra.........................................................................26
Rys. 7: Schemat logiczny klastra pod względem użytego oprogramowania........ 27
Rys. 8: Schemat systemu kontrolera.................................................................... 29
Rys. 9: Montowanie zasobów w NFS
(na podstawie Tanenbaum, van Steen, Systemy rozproszone
i paradygmaty)..........................................................................................32
Rys. 10: Przykładowe statystyki generowane przez Ganglia................................. 34
Rys. 11: Schemat systemu węzła...........................................................................35
Rys. 12: Ładowanie jednego węzła: ilość wysłanych/odebranych danych.............40
Rys. 13: Ładowanie jednego węzła: przybliżona szybkość transmisji danych....... 41
Rys. 14: Ładowanie jednego węzła: obciążenie procesora....................................41
Rys. 15: Ładowanie dwóch węzłów: ilość wysłanych/odebranych danych.............42
Rys. 16: Ładowanie dwóch węzłów: przybliżona szybkość transmisji danych....... 42
Rys. 17: Ładowanie dwóch węzłów: obciążenie procesora....................................43
Rys. 18: Ładowanie sześciu węzłów: ilość wysłanych/odebranych danych........... 43
Rys. 19: Ładowanie sześciu węzłów: przybliżona szybkość transmisji danych..... 44
Rys. 20: Ładowanie sześciu węzłów: obciążenie procesora.................................. 44
Rys. 21: Test MPI: szybkość transmisji danych......................................................45
Rys. 22: Test MPI: czas odpowiedzi.......................................................................45
Rys. 23: Test odczytu plików o rozmiarze 32kB z NFS.......................................... 46
Rys. 24: Test odczytu plików o rozmiarze 512kB z NFS........................................ 47
Rys. 25: Test odczytu 1 pliku z NFS o rozmiarze 500MB.......................................47
51
Klaster klasy Beowulf w środowisku heterogenicznym
Bibliografia
1: Wikipedia, CDC 6600, http://en.wikipedia.org/wiki/CDC_6600
2: Seymour Cray, http://www.cray.com/about_cray/seymourcray.html
3: Cray Inc - The Supercomputer Company, http://www.cray.com
4: European Centre for Medium-Range Weather Forecasts,
http://www.ecmwf.int/
5: The Earth Simulator Center,
http://www.es.jamstec.go.jp/index.en.html
6: The Cell project at IBM Research,
http://researchweb.watson.ibm.com/cell/
7: IBM BladeCenter QS20,
http://www-03.ibm.com/technology/splash/qs20/
8: Lista 500 najszybszych komputerów - Top500, http://www.top500.org
9: Symmetric multiprocessing,
http://en.wikipedia.org/wiki/Symmetric_multiprocessing
10: Wikipedia, Klaster komputerowy,
http://pl.wikipedia.org/wiki/Klaster_komputerowy
11: Strona domowa projektu Parallel Virtual Machine,
http://www.csm.ornl.gov/pvm/
12: Grzegorz Całkowski, Biblioteka komunikacyjna dla wydajnych
serwerów klastrowych,
http://students.mimuw.edu.pl/SR/prace-mgr/calkowski/node6.html
13: Politechnika Warszawska, Interdyscyplinarne Centrum Modelowania
Matematycznego i Komputerowego, Centrum Komputerów Dużej Mocy,
Biuletyn nr 18,
http://www.icm.edu.pl/kdm/Biuletyn_nr_18#Teoria:_Prawo_Amdahla
14: Adam Szpakowski, Obliczenia rozproszone - wykłady
15: Paweł Jerzy Matuszyk, Obiektowa realizacja równoległych
algorytmów dla wybranych procesów przeróbki plastycznej
w środowisku klastra z dzieloną pamięcią - praca doktorska,
http://home.agh.edu.pl/~pjm/pjm_phd_thesis.pdf
16: Skalowalność serwera,
http://technet2.microsoft.com/WindowsServer/pl/Library
17: Glossary of Computing Terms,
http://www.le.ac.uk/cc/glossary/ccglf.html
18: High-performance Linux clustering, Part 1: Clustering fundamentals,
http://www-128.ibm.com/developerworks/linux/library/l-cluster1/
19: Strona domowa projektu The High Availability Linux Project,
http://linux-ha.org/
52
Klaster klasy Beowulf w środowisku heterogenicznym
20: Klastry oparte na systemie operacyjnym Linux,
http://www.klastry.org.pl/
21: Strona domowa projektu Linux Virtual Server,
http://www.linuxvirtualserver.org/
22: Strona domowa projektu The openMosix Project,
http://openmosix.sourceforge.net/
23: Wielka Encyklopedia Sieci Komputerowych - wersja online,
http://www.robomatic.pl
24: Rajkumar Buyya, Toni Cortes, Hai Jin, Single System Image (SSI), 2001
25: Politechnika Wrocławska, Zakład Architektury Komputerów, Komputery
Równoległe – wykłady, openMosix,
http://www.zak.ict.pwr.wroc.pl/materialy/komputeryrownolegle/wyklad/OpenMosix3.pdf
26: Strona domowa projektu Beowulf Project, http://www.beowulf.org
27: autor nieznany, Beowulf
28: Beowulf HOWTO,
http://www.jtz.org.pl/Html/Beowulf-HOWTO.pl.html
29: Beowulf history,
http://www.beowulf.org/overview/history.html
30: The Message Passing Interface (MPI) standard,
http://www-unix.mcs.anl.gov/mpi/
31: RFC 1350 - The TFTP Protocol (Revision 2),
http://www.faqs.org/rfcs/rfc1350.html
32: Strona domowa projektu Linux Gentoo, http://gentoo.org
33: RFC 1094 - NFS: Network File System Protocol specification,
http://www.faqs.org/rfcs/rfc1094.html
34: Strona domowa projektu OpenSSH, http://www.openssh.org
35: Centrum dokumentacji Gentoo,
http://www.gentoo.org/doc/pl/articles/openssh-key-management-p1.xml
36: Strona domowa projektu Apache HTTP Server, http://httpd.apache.org
37: Strona domowa projektu PHP, http://www.php.net/
38: Strona domowa projektu Ganglia, http://ganglia.sourceforge.net/
39: Strona domowa projektu Network Time Protocol Daemon,
http://www.cis.udel.edu/~mills/ntp/html/ntpd.html
40: Network File System (NFS), Prezentacja rozproszonego systemu plików,
http://rainbow.mimuw.edu.pl/SO/Projekt02-03/temat3-g2/nfs/NFS_sl09.htm
41: Strona domowa projektu Syslog-ng, http://freshmeat.net/projects/syslog-ng/
42: Strona domowa projektu Linux VServer, http://linux-vserver.org
43: Wikipedia, Wirtualizacja, http://pl.wikipedia.org/wiki/Wirtualizacja
44: Strona domowa projektu TORQUE Resource Manager,
http://www.clusterresources.com/pages/products/torque-resourcemanager.php
53
Klaster klasy Beowulf w środowisku heterogenicznym
45: Central European ROC in EGEE Project,
Użytkowanie systemów kolejkowych klastrów ARES i ZEUS,
http://egee.grid.cyfronet.pl/for-users/uzytkowanie-systemow-kolejkowychklastrow-ares-i-zeus#id102075
46: System kolejkowy, http://www.icm.edu.pl/kdm/System_kolejkowy
47: Strona domowa projektu Maui Cluster Scheduler,
http://www.clusterresources.com/pages/products/maui-cluster-scheduler.php
48: Strona domowa projektu Moab Cluster Suite,
http://wb.clusterresources.com/pages/products/moab-cluster-suite.php
49: Strona domowa projektu The Genoa Active Message Machine (GAMMA)
http://www.disi.unige.it/project/gamma/index.html
54

Podobne dokumenty