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

Podobne dokumenty