sieć relokacja
Transkrypt
sieć relokacja
Rozproszona pamięć współdzielona (ang. Distributed Shared Memory) Cel: dostarczenie wspólnej wirtualnej przestrzeni adresowej, dostępnej (potencjalnie) dla wszystkich węzłów systemu Zalety: ª wygodny dla programisty paradygmat programowania równoległego, ª skalowalność i łatwość rozbudowy, ª dostępność wirtualnej przestrzeni adresowej obejmującej pamięci fizyczne wszystkich węzłów, ª możliwość uruchamiania w środowisku rozproszonym programów równoległych zaprojektowanych dla środowisk wieloproc. z pamięcią współdzieloną Obsługa błędu strony w systemie pamięci wirtualnej system operacyjny pułapka tablica stron s p n s — numer strony r — numer ramki o — przesunięcie urządzenie wymiany błąd strony procesor s o adres logiczny pamięć Obsługa błędu strony w systemie pamięci wirtualnej s — numer strony r — numer ramki o — przesunięcie tablica stron s adres fizyczny p r o procesor s o adres logiczny pamięć Obsługa błędu strony w systemie wirtualnej pamięci rozproszonej system operacyjny pułapka tablica stron s p n błąd strony procesor s o adres logiczny pamięć s — numer strony r — numer ramki o — przesunięcie Koncepcje dostępu do danych & Dostęp zdalny — każdy dostęp do współdzielonego obiektu, zlokalizowanego fizycznie w pamięci lokalnej innego węzła, odbywa się przez sieć. & Relokacja — możliwa jest zmiana fizycznej lokalizacji współdzielonego obiektu, czyli umieszczenie go w pamięci lokalnej węzła, w którym pojawiło się żądanie dostępu. & Replikacja — obiekt logiczny może być jednocześnie zlokalizowany fizycznie w pamięci lokalnej wielu węzłów, co umożliwia równoległy dostęp do tego obiektu w wielu węzłach. Dostęp zdalny węzeł procesor pamięć lokalna procesor sieć pamięć lokalna procesor pamięć lokalna zarządca DSM węzeł węzeł Zdalny dostęp — charakterystyka & Stosunkowo prosta realizacja & Problem efektywności — duży czas dostępu do danych w zdalnych węzłach Relokacja węzeł procesor procesor sieć pamięć lokalna procesor węzeł zarządca DSM węzeł Relokacja — charakterystyka & Problem lokalizacji & Problem rozmiaru i struktury jednostki podlegającej relokacji & Problem migotania (ang. trashing, ping-pong effect) Replikacja węzeł procesor procesor sieć pamięć lokalna procesor węzeł zarządca DSM węzeł Replikacja — charakterystyka & Problem lokalizacji & Problem rozmiaru i struktury jednostki podlegającej replikacji & Problem migotania (ang. trashing, ping-pong effect) & Problem spójności kopii (replik) Struktura jednostki podlegającej replikacji lub relokacji & Strona — fizyczne połączenie kilku odrębnych obiektów logicznych w jedną jednostkę udostępnianą jako całość przez DSM (problem fałszywego współdzielenia. & Pojedyncza zmienna — duży jednostkowy koszt relokacji i utrzymywania spójności. & Obiekt (hermetyczna struktura danych udostępniana tylko przez zdefiniowane metody) — możliwość optymalizacji w strategii utrzymywania spójności w związku ze ściśle określonym sposobem dostępu (poprzez metody). Fałszywe współdzielenie Problem spójności replik — protokół koherencji & Protokół unieważniania danych (ang. invalidation protocol) — niespójne repliki są usuwane z pamięci lokalnej. & Protokół aktualizacji danych (ang. update protocol) — niespójne repliki są aktualizowane. Problem lokalizacji — system IVY & statyczny scentralizowany mechanizm lokalizacji stron & statyczny rozproszony mechanizm lokalizacji stron & dynamiczny mechanizm lokalizacji stron System IVY — podstawowe pojęcia i struktury danych (1) & właściciel strony — węzeł, na którym była wykonywana ostatnia operacja zapisu danej strony & zbiór kopii (copyset) — zawiera identyfikatory węzłów posiadających kopię strony (przechowywana przez właściciela strony) System IVY — podstawowe pojęcia i struktury danych (2) & zarządca (w podejściu statycznym) — węzeł, który przechowuje dane o właścicielach poszczególnych stron & tablica właścicieli stron — dla każdej strony zawiera identyfikator jej właściciela (przechowywany przez zarządców) & prawdopodobny właściciel (w podejściu dynamicznym) — tablica zawierająca dla każdej strony w systemie identyfikator węzła, o którym wiadomo, że był kiedyś (lub jeszcze jest) właścicielem danej strony (przechowywana przez każdy węzeł Statyczny scentralizowany mechanizm lokalizacji stron — odczyt zarządca Odczyt strony #4: 1. uzyskanie repliki 2. wykonanie operacji węzeł A #1 {} #2 {} #4 #1 #2 #3 #4 A A C C węzeł C #3 {} #4 {B}A} węzeł B #4 Statyczny scentralizowany mechanizm lokalizacji stron — zapis zarządca Zapis strony #4: 1. uzyskanie własności 2. unieważnienie repliki 3. wykonanie operacji węzeł A #1 {} #2 {} #4 {B} } #1 #2 #3 #4 A A C C A węzeł C #3 {} #4 {B} węzeł B #4 Dynamiczny mechanizm lokalizacji stron — odczyt Odczyt strony #4: 1. uzyskanie repliki 2. wykonanie operacji węzeł A #1 {} #2 {} #4 węzeł B #1 #2 #3 #4 A A C C B #4 węzeł C #3 {} #4 {B}A} #1 #2 #3 #4 A A C C #1 #2 #3 #4 A A C C Dynamiczny mechanizm lokalizacji stron — zapis Zapis strony #4: 1. uzyskanie własności 2. unieważnienie repliki 3. wykonanie operacji węzeł A #1 {} #2 {} #4 {B} } węzeł B #1 #2 #3 #4 A A C B #4 węzeł C #3 {} #4 {B} #1 #2 #3 #4 A A C C A #1 #2 #3 #4 A A C C A Model spójności Model spójności określa gwarancje dotyczące spójności replik, dawane aplikacji (równoległej) przez system DSM. & W jaki sposób definiować model spójności? & W jaki sposób określić gwarancje dla aplikacji? & Kiedy i w jaki sposób egzekwować te gwarancje? Modele spójności replik & Modele spójności przy dostępie ogólnym (ang. general access consistency models) — doprowadzanie do spójności replik realizowane jest przy każdej modyfikacji DSM. & Modele spójności przy dostępie synchronizowanym (ang. synchronisation access consistency models) — doprowadzanie do spójności replik realizowane jest tylko przy wykonywaniu operacji synchronizujących, które są rozpoznawane przez system DSM. Modele spójności przy dostępie ogólnym (elementarne modele spójności) & spójność atomowa (ang. atomic consistency) & spójność sekwencyjna (ang. sequential consistency) & spójność przyczynowa (ang. causal consistency) & spójność PRAM (ang. Pipelined RAM consistency) & koherencja (ang. coherence) & spójność procesorowa (ang. processor consistency) Modele spójności przy dostępie synchronizowanym & spójność słaba (ang. weak consistency) & spójność zwalniania (ang. release consistency) & spójność wejścia (ang. entry consistency) & spójność zakresu (ang. scope consistency) Definicja modeli spójności — podstawowe założenia & System DSM składa się z: ª zbioru sekwencyjnych procesów P = {p1, p2, ..., pn} ª zbioru współdzielonych zmiennych X = {x1, x2, ...} & Każdy proces ma własną replikę całego zbioru X & Proces pi może realizować na zmiennej x ∈ X dwie operacje: ª zapisu wartości v — wi(x)v ª odczytu wartości v — ri(x)v & Realizacja operacji przebiega w dwóch fazach: ª żądanie operacji (ang. operation issue) ª wykonanie operacji (ang. operation execution) Definicja modeli spójności — oznaczenia (1) wi(x)v operacja zapisu wartości v w zmiennej x, wykonana przez proces pi ri(x)v operacja odczytu wartości v w zmiennej x, wykonana przez proces pi O zbiór wszystkich operacji w systemie Oi zbiór operacji procesu pi (żądanych przez pi) OW zbiór wszystkich operacji zapisu w systemie O|x zbiór wszystkich operacji na zmiennej x Definicja modeli spójności — oznaczenia (2) →i → ai lokalny porządek operacji procesu pi (lokalny porządek zgłaszania żądań przez procesu pi) przyczynowy porządek operacji procesu pi (przyczynowy porządek zgłaszania żądań przez procesu pi) porządek (uszeregowanie, ang. serialisation), zgodnie z którym operacje postrzegane są przez proces pi (zgodnie z którym operacje wykonywane są na replice procesu pi) Definicja uszeregowania legalnego Uszeregowanie ai jest legalne ⇔ w( x)v a i r ( x)v ∧ ∀ w ( x ) v∈OW , r ( x ) v∈Oi (u ≠ v ∧w( x)v a i o( x)u a i r ( x)v ) ∃ / o ( x ) u ∈Oi ∪OW UWAGA: w celu uproszczenia definicji zakład się, że każda operacja zapisu danej zmiennej zapisuje unikalną wartość, co umożliwia identyfikowanie operacji zapisu poprzez tą wartość. Definicja historii & Historia lokalna (procesu pi): zbiór uporządkowany hi = (Oi, →i), gdzie →i jest relacją porządku lokalnego. & Historia globalna zbiór uporządkowany h = (O, →), gdzie → jest relacją porządku przyczynowego. & Obraz historii h w procesie pi: zbiór uporządkowany hvi = (Oi ∪OW, ai), gdzie ai jest legalnym uszeregowaniem. & Obraz historii h: kolekcja obrazów poszczególnych procesów: hv = 〈 hv1, hv2, ..., hvn〉 Modele spójności — definicja spójności sekwencyjnej Obraz hv historii h musi spełniać następujące warunki: ∀ ∃ o1 → j o2 ⇒ o1 a i o2 o1,o 2∈Oi ∪OW j =1..n ∀ w1 a i w2 ∨ ∀ w2 a i w1 ∀ w1, w 2∈OW i =1..n i =1..n Spójność sekwencyjna — przykład hv1: w2(x)1 a1 r1(x)1 a1 w2(x)2 r1(x)1 p1 p2 hv2: w2(x)1 w2(x)2 w2(x)1 a2 w2(x)2 Spójność sekwencyjna — protokół koherencji (1) Algorytm fast-read dla procesu pi: & read(x ∈ X) return Mi [x] & write(x ∈ X, v) atomic_broadcast U(x, v) wait return & on receipt of U(x, v) from pk Mi [x] := v if k = i signal end if Spójność sekwencyjna — protokół koherencji (2) Algorytm fast-write dla procesu pi: & read(x ∈ X) if numi ≠ 0 wait end if return Mi [x] & write(x ∈ X, v) numi := numi + 1 FIFO_atomic_broadcast U(x, v) return & on receipt of U(x, v) from pk Mi [x] := v if k = i numi := numi − 1 if numi = 0 signal end if end if Modele spójności — definicja spójności atomowej Obraz hv historii h musi spełniać następujące warunki: ∀ ∃ o1 → RT o2 ⇒ o1 a i o2 o1,o 2∈Oi ∪OW j =1..n ∀ w1 a i w2 ∨ ∀ w2 a i w1 ∀ w1, w 2∈OW i =1..n i =1..n o1 → RT o 2 o1 kończy się w czasie rzeczywistym, zanim zaczyna się o2 Spójność atomowa — przykład r1(x)1 p1 p2 w2(x)1 r1(x)2 w2(x)2 Modele spójności — definicja spójności przyczynowej (1) Definicja porządku przyczynowego: (o1 →i o2 ⇒ o1 → o2) ∀ o1,o 2 ∈O i w( x)v → r ( x)v ∀ x ∈X ((o1 → o ∧ o → o2) ⇒ o1 → o2) ∀ o1, o 2, o ∈H Modele spójności — definicja spójności przyczynowej (2) Obraz hv historii h musi spełniać warunek: (o1 → o2 ⇒ o1 a i o2) ∀ 1, 2∈ ∪ o o Oi OW Spójność przyczynowa — przykład hv1: w1(x)2 a1 w1(y)1 a1 w2(x)1 a1 r1(x)1 p1 p2 w1(x)2 w2(x)1 w1(y)1 r2(y)1 r1(x)1 r2(x)2 hv2: w2(x)1 a2 w1(x)2 a2 w1(y)1 a2 r2(y)1 a2 r2(x)2 Spójność przyczynowa — protokół koherencji Algorytm dla procesu pi: & read(x ∈ X) return Mi [x] & write(x ∈ X, v) Mi [x] := v causal_broadcast U(x, v) return & on receipt of U(x, v) from pk if k ≠ i Mi [x] := v end if Modele spójności — definicja spójności PRAM Obraz hv historii h musi spełniać warunek: ∃ o1 → j o 2 ⇒ o1 a i o 2 ∀ o1,o 2∈Oi ∪OW j =1..n Spójność PRAM — przykład p1 p2 p3 w1(x)1 w1(y)1 w2(x)2 r2(y)1 r3(x)2 r3(x)1 Spójność PRAM — protokół koherencji Algorytm dla procesu pi: & read(x ∈ X) return Mi [x] & write(x ∈ X, v) Mi [x] := v FIFO_broadcast U(x, v) return & on receipt of U(x, v) from pk if k ≠ i Mi [x] := v end if Modele spójności — definicja koherencji Obraz hv historii h musi spełniać warunek: ∀ x ∈X ∀ w1 a i w2 ∨ ∀ w2 a i w1 ∀ w1, w 2 ∈OW ∩O| x i =1..n i =1..n Koherencja — przykład p1 p2 r1(x)1 w1(x)2 r1(x)2 w1(y)1 w2(x)1 r2(y)1 r2(x)1 r2(x)2 Koherencja (model spójności) — protokół koherencji (1) Algorytm fast-read dla procesu pi: & read(x ∈ X) return Mi [x] & write(x ∈ X, v) atomicx_broadcast U(x, v) wait return & on receipt of U(x, v) from pk Mi [x] := v if k = i signal end if Uwaga: w rzeczywistości jest to protokół dla modelu spójności procesorowej. Koherencja (model spójności) — protokół koherencji (2) Algorytm fast-write dla procesu pi: & read(x ∈ X) if numi [x] ≠ 0 wait end if return Mi [x] & on receipt of U(x, v) from pk Mi [x] := v if k = i numi [x] := numi [x] − 1 if numi [x] = 0 signal end if end if & write(x ∈ X, v) numi [x] := numi [x] + 1 FIFOx_atomicx_broadcast U(x, v) return Modele spójności — definicja spójności procesorowej Obraz hv historii h musi spełniać następujące warunki (PRAM + koherencja): ∀ x ∈X ∀ w1 a i w2 ∨ ∀ w2 a i w1 ∀ w1, w 2 ∈OW ∩O| x i =1..n i =1..n ∀ ∃ o1 → j o2 ⇒ o1 a i o2 o1,o 2∈Oi ∪OW j =1..n Spójność procesorowa — przykład p1 p2 w1(x)2 w2(x)1 w1(y)1 r2(y)1 r1(x)1 r2(x)1 Spójność procesorowa — protokół koherencji Algorytm fast-write dla procesu pi: & read(x ∈ X) if numi [x] ≠ 0 wait end if return Mi [x] & on receipt of U(x, v) from pk Mi [x] := v if k = i numi [x] := numi [x] − 1 if numi [x] = 0 signal end if end if & write(x ∈ X, v) numi [x] := numi [x] + 1 FIFO_atomicx_broadcast U(x, v) return Spójność procesorowa — przykład naruszenia porządku przyczynowego p1 p2 p3 w1(x)1 → w1(x)2 → w2(y)1 w1(x)1 w1(x)2 w2(y)1 r2(x)1 r2(x)2 r3(y)1 r3(x)1 r3(x)2 hv3: w2(y)1 a r3(y)1 a w1(x)1 a r3(x)1 a w1(x)2 a r3(x)2 Relacje pomiędzy modelami spójności atomowa ∀ ∃ o1 → RT o2 ⇒ o1 a i o2 o1,o 2∈Oi ∪OW j =1..n sekwencyjna ∀ w1 a i w2 ∨ ∀ w2 a i w1 ∀ w1, w 2∈OW i =1..n i =1..n przyczynowa ∀ (o1 → o2 ⇒ o1 a i o2) procesorowa o1,o 2∈Oi ∪OW PRAM ∀ ∃ o1 → j o2 ⇒ o1 a i o2 o1,o 2∈Oi ∪OW j =1..n koherencja ∀ x ∈X ∀ w1 a i w2 ∨ ∀ w2 a i w1 ∀ w1, w 2 ∈OW ∩O| x i =1..n i =1..n Definicja modeli spójności przy dostępie synchroniz. — założenia & System DSM składa się z: ª zbioru sekwencyjnych procesów P = {p1, p2, ..., pn} ª zbioru współdzielonych zmiennych X = {x1, x2, ...} ª zbioru obiektów synchronizujących S = {s1, s2, ...} & Wyróżnia się (najczęściej) dwa rodzaje obiektów synchronizujących: ª zamek (ang. lock), na którym wykonywane są operacje: Facquire — nabycie zamka Frelease — zwolnienie zamka ª bariera (ang. barrier) z operacją Fsynchronizacja na barierze mechanizm wzajemnego wykluczania Spójność słaba (ang. weak consistency) & Wyróżnia się dwa rodzaje operacji dostępu: ª operacje dostępu do globalnych danych (współdzielonych), ª operacje dostępu do zmiennych synchronizujących. & Definicja modelu: ª operacje dostępu do zmiennych synchronizujących są spójne atomowo (w nowszym podejściu sekwencyjnie), ª nie można wykonać operacji dostępu do zmiennej synchronizującej przed globalnym zakończeniem wcześniejszych operacji dostępu do zmiennych globalnych, ª nie można wykonać operacji dostępu do zmiennej globalnej przed globalnym zakończeniem wcześniejszych operacji dostępu do zmiennych synchronizujących. Spójność słaba — przykład p1 p2 w1(x)2 synch1(s) w2(x)1 synch2(s) r1(x)1 r2(x)1 Spójność zwalniania (ang. release consistency) & Dwa rodzaje synchronizacji są możliwe: ª wzajemne wykluczanie (acquire-release), ª synchronizacja na barierze. & Operacje synchronizujące są spójne procesorowo, a pozostałe operacje są spójne w sensie PRAM. & Repliki są doprowadzane do stanu spójnego przy operacji bariery oraz przy ª release w przypadku spójności eager release, ª acquire w przypadku spójności lazy release. & Doprowadzanie do stanu spójnego polega na: ª unieważnianiu replik w przypadku protokołu unieważniania, ª aktualizacji replik w przypadku protokołu aktualizacji. Spójność zwalniania — przykład p1 p2 w1(y)1 acq1(lock) w1(x)1 rel1(lock) r2(y)0 r2(x)0 acq1(lock) r2(x)1 r2(y)1 w przypadku protokołu unieważniania operacje spowodują błąd strony Spójność zakresu (ang. scope consistency) & Operacje acquire i release odpowiednio otwierają i zamykają zakres. & Operacja bariery zamyka zakres globalny i otwiera następny zakres globalny. & Istnieją jawne operacje otwarcia i zamknięcia zakresu: open_scope i close_scope. & Po otwarciu zakresu aktualizowane/unieważnianie są wszystkie repliki zmodyfikowane w czasie poprzedniego otwarcia zakresu (poprzedni zakres musi być zamknięty. Spójność zakresu — przykład p1 p2 w1(y)1 acq1(lock) w1(x)1 rel1(lock) r2(y)0 r2(x)0 acq1(lock) r2(x)1 r2(y)0 Spójność wejścia (ang. entry consistency) & Spójność wejścia zbliżona jest do spójności zakresu. & Są dwa rodzaje operacji acquire: współdzielona i wyłączna. & Z każdym globalnym obiektem związana jest zmienna synchronizująca, na której wykonywana jest odpowiednia operacja przed dostępem do zmiennej. Własność lokalności Własność P systemu współbieżnego jest lokalna wówczas, gdy system jako całość posiada własność P, jeśli każdy pojedynczy obiekt posiada własność P. Lokalność jest cechą spójności atomowej i koherencji. Własność lokalności — przykład hv1: w1(x1)2 a1 w1(x2)1 a1 w2(y1)1 a1 w1(y2)1 p1 p2 w1(x1)1 w1(x2)1 w1(y1)1 r2(x1)1 w1(y2)1 r2(y1)1 r2(x2)0 r2(x2)1 r1(y2)1 hv2: w1(x1)1 a2 r2(x1)1 a2 w1(y1)1 a2 r2(y1)1 a2 r2(x2)0 a2 w1(x2)1a2 r2(x2)1 a2 w1(y2)1 a2 r2(y2)1 Własność lokalności — przykład hv1: w1(x1)2 a1 w1(x2)1 p1 p2 w1(x1)1 w1(x2)1 r2(x1)1 r2(x2)0 r2(x2)1 hv2: w1(x1)1 a2 r2(x1)1 a2 r2(x2)0 a2 w1(x2)1a2 r2(x2)1 Własność lokalności — przykład hv1: w2(y1)1a1 w1(y2)1 p1 p2 w1(y1)1 r2(y1)1 w1(y2)1 r1(y2)1 hv2: w1(y1)1 a2 r2(y1)1 a2 w1(y2)1 a2 r2(y2)1