• Nie Znaleziono Wyników

4.1 Badane charakterystyki węzła obliczeniowego

4.1.3 Model węzła obliczeniowego

Klaster obliczeniowy jest to równoległy system komputerowy składający się z połączonych ze sobą węzłów obliczeniowych wyposażonych w procesory, pamięć operacyjną i urządzenia umożliwiające komunikację wewnątrz klastra [czech10]. W dalszych rozważaniach będziemy brali pod uwagę klastry obliczeniowe, dla których wszystkie węzły są reprezentowane przez komputery o jednakowej architekturze, o jednakowych zasobach sprzętowych i posiadają ten sam system operacyjny. Innymi słowy rozpatrujemy homogeniczne klastry obliczeniowe, które są najczęściej oferowane na rynku przez producentów komputerów dużej mocy.

Typowym przykładem takiego klastra obliczeniowego jest superkomputer Galera zainstalowany na Politechnice Gdańskiej w Centrum Informatycznym Trójmiejskiej Akademickiej Sieci Komputerowej (CI TASK) [task]. Posiada on 672 węzły obliczeniowe połączone szybką siecią lokalną: Infiniband w topologii fat tree o przepływności nominalnej 20Gb/s. Wspólna pamięć masowa, dostarczana jest przez sieciowy system plików LUSTRE [lustre] z serwera plików o pojemności 500TB.

Definicja 3: Klaster obliczeniowy definiujemy jako zbiór homogenicznych węzłów obliczeniowych C={c1, c2, … c|C|}, gdzie |C|jest liczbą węzłów klastra.

Sam węzeł obliczeniowy może być autonomicznie analizowany jako system komputerowy (rozdz.

2.1 ), który posiada strukturę warstwową, patrz rys. 33. Warstwa sprzętu węzła składa się z dwóch 64-bitowych procesorów Intel Xeon, każdy z procesorów z czterema rdzeniami obliczeniowymi (Quad Core) – 8 rdzeni na węzeł, taktowane zegarem o częstotliwości 2,33GHz, z pamięcią podręczną L2 o pojemności 12MB w architekturze EM64T. Ponadto wyposażona jest w pamięć operacyjną o wielkości 8GB współdzieloną przez rdzenie obu procesorów, kartę sieciową Infiniband 20Gb/s oraz lokalny dysk twardy o pojemności 160GB. Warstwa procesów jest odpowiedzialna za realizację zadań obliczeniowych platformy KASKADA. Każdy z procesów posiadają swój własny wydzielony obszar pamięci oraz wątki działające równolegle w celu wykonania zadanego algorytmu. Możliwa jest także współpraca międzyprocesowa z wykorzystaniem typowych mechanizmów systemu Unix, takich jak kolejki, semafory itp. [posix].

System operacyjny jest odpowiedzialny za bezpośrednią współpracę ze sprzętem, do jego zadań należy zarządzanie procesami w tym ich szeregowanie i współpraca z innymi węzłami. Należy podkreślić, że na poziomie procesów i wątków modelu warstwowego platformy KASKADA (patrz rys. 11), to właśnie system operacyjny jest odpowiedzialny za szeregowanie procesów na rdzenie obliczeniowe procesorów. Każdy z rdzeni ma swoją kolejkę procesów oczekujących na kwant czasu. Długość przydzielonego czasu jest bezpośrednio zależna od priorytetu procesu i domyślnie

Rysunek 33: Model warstwowy węzła obliczeniowego.

procesy/wątki

sprzęt węzła system operacyjny

warstwa aplikacji warstwa pośrednia warstwa infrastruktury sprzętowej

dla komputerów klasy PC, a także rozpatrywanych węzłów klastra obliczeniowego wynosi ok. określone jako obciążenie obliczeniowe węzła klastra C przy wykonaniu na nim tylko zadania ti . Działające zadania obciążają węzeł w różny sposób powodując wykorzystanie części lub całości mocy obliczeniowej procesorów węzła (ang. processor utilization) [liu73]. Liczba i długość strumieni wyjściowych SOi zależy od algorytmu zadania i danych wejściowych tzn. zbioru przetwarzanych strumieni SIi. Przy założeniu poprawnego wykonania algorytmu zadania – bez żadnych strat związanych z brakiem zasobów obliczeniowych, zbiór SOi będziemy również nazywać pożądanym zbiorem strumieni wyjściowych odpowiadającym danemu zbiorowi strumieni wejściowych SIi i wykorzystywanemu algorytmowi ai.

Rozpatrzmy działanie pojedynczego węzła obliczeniowego c, posiada on określoną liczbę p rdzeni obliczeniowych (p=8 w naszym przypadku) oraz wspólną dla nich pamięć operacyjną (8GB).

Zakładamy również, że węzeł wyposażony jest w dwukierunkowe łącze sieciowe o określonej maksymalnej przepływności, jak również posiada system operacyjny umożliwiający uruchamianie wielowątkowych zadań obliczeniowych, przełączający procesy w sposób równomierny – mają one ten sam priorytet. W wyniku działania algorytmu szeregowania procesów (realizujących zadania obliczeniowe) na rdzeniach procesorów następuje przydział czasu rdzeni procesorów. Na każdym z tych rdzeni obserwujemy aktywność obliczeniową, zbiór takich okresów aktywności konkretnego zadania ti oznaczamy przez Πi={π1i, π2i,… π|Πi|i}. Aktywności obliczeniowe nawet w ramach jednego zadania mogą zachodzić równolegle dzięki wykorzystaniu wątków działających na kilku rdzeniach obliczeniowych węzła. Rys. 34 przedstawia przykładowe szeregowania 2 procesów w czasie obserwacji τE.

Definicja 5: Obciążenie obliczeniowe węzła c przez zbiór zadań T oznaczamy przez ɣ(c, T) i definiujemy jako:

Rysunek 34: Przykład przydziału rdzeni obliczeniowych w czasie obserwacji τE, dla dwóch zadań, gdzie kolorem szarym oznaczono przedziały aktywności rdzeni gdzie dla zadania 1:

ɣ (c ,T )=τr (c , T ) p⋅τE (4)

gdzie τEE>0) jest całkowitym czasem przetwarzania zadań, p liczbą rdzeni obliczeniowych, a τr(c, T) jest sumą wszystkich przedziałów czasu aktywności, w których rdzenie węzła c wykonywały obliczenia dla zadań ze zbioru T:

τr (c , T )=

przeznaczony na obliczenia to ɣ(c, T)=1, natomiast jeśli w całości przeznaczony są na oczekiwanie to ɣ(c, T)=0.

Zgodnie z definicją 4, ɣi jest wyznaczane gdy na węźle c realizowane jest tylko zadanie ti, inaczej kiedy T={ti}. Wówczas:

ɣi=ɣ (c , {ti})=τr (c , {ti}) p⋅τE (6)

Obciążenie obliczeniowe jest często używane do oceny algorytmów szeregowania dla twardych systemów czasu rzeczywistego. W zależności od liczby i częstotliwości żądań obliczeń w zadaniach, można określić maksymalne obciążenie (ang. utilization bound), generowane przez zadany zbiór zadań czasu rzeczywistego, dla którego dany system może być wykorzystany (ang.

schedulability), np. [liu73, oh95, chen03, qi11].

Przyjmując założenie, że strumienie wejściowe są przetwarzane na bieżąco przez zadania obliczeniowe, rys. 35 przedstawia przykładową reprezentacje graficzną pojedynczego zadania ti

analizującego dwa strumienie danych i generującego jeden strumień wyjściowy, ciemnym kolorem zaznaczone zostało obciążenie ɣi węzła c jakie generowane jest przez to zadanie, przy założeniu, że jest ono jedynym zadaniem wykonywanym na tym węźle. Z rysunku wynika, że ɣ(c, {ti})=0,05.

Definicja 6: Strata danych wyjściowych w zadaniu ti∈T na węźle c przy obciążeniu zbiorem zadań T oznaczamy jako φ(c, ti, T), i definiujemy jako stosunek liczby straconych elementów strumieni wyjściowych zadania ti podczas wykonania zadań ze zbioru T na węźle c do liczby wszystkich elementów wyjściowych strumieni, które powinny być generowane przez zadanie ti:

φ(c , ti,T )=1− wyjściowych, zaś SOi={soi1, soi2, … soi|SOi|} jest pożądanym zbiorem strumieni wyjściowych.

Na ogół liczba strumieni jest zachowana |SOiR|= |SOi|, zaś straty dotyczą tylko ich elementów.

Definicja 7: Strata danych na węźle c przy obciążeniu zbiorem zadań T oznaczamy jako φ(c, T), Rysunek 35: Przykładowa reprezentacja graficzna zadania ti przetwarzającego dwa strumienie wejściowe SIi={sii1, sii2} i zwracjącego jeden wyjściowym SOi={soi1}.

ti

SIi SOi

i definiujemy jako średnią stratę danych wszystkich zrealizowanych zadań ze zbioru T:

φ(c ,T )=

i=1

∣T∣

φ(c , ti, T )

∣T∣

(8)

Tak więc stratę danych wyjściowych określa się po wykonaniu zadań alokowanych na węźle w całym przedziale ich realizacji τE.

4.1.4 Procedura oceny charakterystyk wydajnościowych i wiarygodnościowych