Klaster klasy Beowulf w środowisku heterogenicznym



Podobne dokumenty
Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Sposoby klastrowania aplikacji webowych w oparciu o rozwiązania OpenSource. Piotr Klimek. piko@piko.homelinux.net

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Dokumentacja aplikacji Szachy online

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Praca w sieci z serwerem

Działanie komputera i sieci komputerowej.

Charakterystyka sieci klient-serwer i sieci równorzędnej

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Algorytmy i Struktury Danych

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Win Admin Replikator Instrukcja Obsługi

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Projektowanie i implementacja infrastruktury serwerów

27/13 ZAŁĄCZNIK NR 4 DO SIWZ. 1 Serwery przetwarzania danych. 1.1 Serwery. dostawa, rozmieszczenie i zainstalowanie 2. serwerów przetwarzania danych.

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Protokoły zdalnego logowania Telnet i SSH

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Referat pracy dyplomowej

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Systemy wieloprocesorowe i wielokomputerowe

61 Topologie wirtualne

Tworzenie maszyn wirtualnych przy pomocy systemu FAI

MASKI SIECIOWE W IPv4

7. zainstalowane oprogramowanie zarządzane stacje robocze

1. Zakres modernizacji Active Directory

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Rodzaje pamięci masowych by Silas Mariusz

Architektura komputerów

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Nowoczesne technologie przetwarzania informacji

System Kancelaris. Zdalny dostęp do danych

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Software RAID funkcje dostarcza zaimplementowane oprogramowanie, bez wykorzystania z dedykowanych kontrolerów.

1 Implementowanie i konfigurowanie infrastruktury wdraŝania systemu Windows... 1

16. Taksonomia Flynn'a.

Sieciowe Systemy Operacyjne

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER

Adres IP

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

LANDINGI.COM. Case Study. Klient Landingi.com. Branża IT, marketing i PR. Okres realizacji od grudnia 2013 do chwili obecnej.

ASEM UBIQUITY PRZEGLĄD FUNKCJONALNOŚCI

LEKCJA TEMAT: Zasada działania komputera.

USŁUGI HIGH PERFORMANCE COMPUTING (HPC) DLA FIRM. Juliusz Pukacki,PCSS

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Klaster obliczeniowy

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Wprowadzenie. Dariusz Wawrzyniak 1

Wprowadzenie do systemów operacyjnych

Komputery bezdyskowe - wprowadzenie

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

5R]G]LDï %LEOLRJUDğD Skorowidz

ActiveXperts SMS Messaging Server

Programowanie współbieżne Wykład 2. Iwona Kochańska

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

System generacji raportów

WHITE PAPER. Planowanie, przygotowanie i testowanie działań na wypadek wystąpienia awarii

WLAN bezpieczne sieci radiowe 01

Wprowadzenie. Klastry komputerowe. Superkomputery. informatyka +

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Usługi sieciowe systemu Linux

Sieci komputerowe. Wstęp

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wykaz zmian w programie SysLoger

Wybrane działy Informatyki Stosowanej

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Jednolite zarządzanie użytkownikami systemów Windows i Linux

Bazy danych 2. Wykład 1

Zdalne logowanie do serwerów

Opis wdrożenia Platformy Technologicznej epodreczniki.pl na zasobach Poznańskiego Centrum Superkomputerowo-Sieciowego

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Sposób funkcjonowania

Marek Parfieniuk, Tomasz Łukaszuk, Tomasz Grześ. Symulator zawodnej sieci IP do badania aplikacji multimedialnych i peer-to-peer

NOWY OPIS TECHNICZNY PRZEDMIOTU ZAMÓWIENIA

Systemy operacyjne. wykład 1- System operacyjny i jego zadania. dr Marcin Ziółkowski

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Analiza ilościowa w przetwarzaniu równoległym

Zarządzanie farmami serwerów Linux

Konfigurowanie sieci VLAN

Praca w sieci równorzędnej

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Od czego zacząć przy budowaniu środowisk wysokiej dostępności?

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

IBM DCE/DFS. Mikołaj Gierulski. 17 stycznia 2003

I. Postanowienia ogólne. a. Definicje

Transkrypt:

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ł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

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

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

Ł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

Rys. 20: Ładowanie sześciu węzłów: obciążenie procesora. 45

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

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