Distribuited Garbage Collection Pastorino Luca. Distribuited Garbage Collector garbage collection in...
-
Upload
elisabetta-furlan -
Category
Documents
-
view
220 -
download
0
Transcript of Distribuited Garbage Collection Pastorino Luca. Distribuited Garbage Collector garbage collection in...
Distribuited Garbage Collection
Pastorino Luca
Distribuited Garbage Collector garbage collection in ambiente
distribuito è basato sulle idee nate per lo studio dei garbage collectors in ambiente locale(single-address space collectors)
single-address space garbage collector
Terminologia Mutator : un processo che modifica
lo stato dello heap.
Comprende operazioni come: Creazione di un nuovo oggetto Distruzione di un oggetto
Collector : il processo che recupera lo spazio “garbage”.
Questo può essere suddiviso in due sub-processi : Identification: identifica le celle irraggiungibili. Reclamation: recupera lo spazio
Garbage collectoridentification reclamation
Classificazione Garbage collector
Identification
Identification
Direct Indirect
Immediate Deferred Sequential Concurrent
Direct Identification of Garbage
L’identificazione diretta è effettuata tramite reference count.
Ogni cella ha uno spazio riservato per memorizzare un contatore.
Immediate Identification and Reclamation
Dopo ogni mutazione nello stato dello heap il contatore viene aggiornato e se diventa zero viene effettuato il recupero dello spazio.
Il collector recupera lo spazio ricorsivamente.
Problema: recursive freeing.
Deferred Reclamation
Usa un lista di celle libere.Quando un cella viene deallocata
viene messa alla fine della lista e il recupero dello spazio avviene solo quando questa è avanzata fino alla testa della lista.
Deferred Identification
Alcune operazione modificano il ref. Count di una cella solo momentaneamente. Ad es. quando aggiungo un riferimento come parametro di una procedura: il riferimento viene cancellato al termine di essa.
Space Overhead and Overflof Il reference count occupa spazio (di
solito è un valore basso). Il refence count potrebbe andare in
overflow
Indirect Identification of Garbage
Si basa sull’idea di scorrere tutti i riferimenti a partire dalla root e identificare tutte le celle raggiungibili (alive).
Di conseguenza, quelle non raggiunte sono garbage.
Mark and ScanNella sua versione più semplice, ritarda il
recupero dello spazio finchè lo heap non è saturo.
Il collector è composto da 2 fasi sequenziali: Vengono cercate tutte le celle accessibile
e segnate come “live”(basta 1 bit) Vengono recuperate quelle non raggiunte
e viene resettato il bit di mark in tutte le celle
Concurrent Mark-Scan (Dijkstra)
Il programma e il garbage collector possono operare concorrentemente (on-the-fly garbage collector).
Viene introdotto un terzo stato per una cella che vuol dire che la cella potrebbe essere raggiungibile.
Scavenging Collectors
La tecnica dello scan è inefficiente soprattutto se lo heap è grosso perché occorre scorrerlo tutto.
Soluzione: dividere lo heap in 2 parti: from-space e to-space.
Si alloca sempre nel from-space e quando è pieno si invertono le 2 parti.
Distribuited Garbage Collectors
Per sistemi distribuiti intendiamo un insieme di host autonomi che comunicano fra loro scambiandosi messaggi.
Un riferimento ad una cella che sta nello stesso host viene detto locale, altrimenti è detto remoto.
Example of computation graph
p
b
c
d
e
s
t
u
o
h
qr
a
f
g
i
l
mn
z
v
x
Garbage subgraph Intrasite acyclic garbage (v,x,z) Intrasite cyclic garbage (s,t,u) Intersite acyclic garbage (l,m,n) Intersite cyclic garbage (o,p,q,r)
Remote access
L’accesso remoto avviene tramite la spedizione di messaggi
Transmission problem Perdita di messaggi Duplicazione di messaggi Ordine di arrivo dei messaggi
sbagliato Host fuori uso Latenza
Transmission
Il protocollo TCP/IP è lo standard de facto. Esso dovrebbe occuparsi di far rispedire i pacchetti persi, cancellare quelli duplicati e riassemblarli nell’ordine corretto(FOFI)
Direct Identification of Distribuited Garbage
Deriva dalla tecnica del reference counter applicata in locale.
Però insorgono problemi legati alla latenza nelle trasmissioni.
Distribuited Reference Counting
A B C
cp(@b)
inc(@b) del(@b)
•Race condition
Distribuited Reference Counting Lermer and Maurer protocol per
prevenire race conditions.
A B C
Ack_req(@b,@C)
Cp(@b)
ack(@b)
Distribuited Reference Counting
Per il corretto funzionamento di questo metodo è necessario che i messaggi arrivino nello stesso ordine di partenza (FOFI)
Weighted Reference Count E’ un estensione del reference
counting che risolve il problema dell’ordine casuale di arrivo dei messaggi
L’idea è di associare un peso ad ogni riferimento, quindi il contatore viene solo decrementato e non ci sono race conditions.
Weighted Reference Count La somma di tutti i pesi dei riferimenti è
uguale al valore del counter. Quando un riferimento viene duplicato, il
peso viene diviso tra lui e la copia (non è necessario accedere alla cella).
Quando un riferimento viene eliminato il suo peso viene sottratto dal counter.
Indirect Identification of Distribuited Garbage
E’ basato sulla tecnica del mark e scan in locale, rivista per l’ambiente distribuito.
Distribuited Mark-Scan
E’ la versione più semplice e richiede che mentre è in esecuzione il garbage collector ogni altra operazione sia sospesa in tutti gli host.
Distribuited Mark-Scan
Quando un host ha lo heap saturo decide di chiamare il garbage collector, mandano un messaggio ad un host master. Il master può essere deciso sia staticamente che dinamicamente. Il master si occupa di mandare un messaggio a tutti i siti per sospendere l’esecuzione.
Distribuited Mark e Scan
Il master ordina l’inizio della fase di mark e aspetta che sia terminata in tutti gli host.
A questo punto il master manda un messaggio per iniziare la fase di recupero dello spazio, e quando è terminata in ogni host, il master permette di riprendere a ognuno di riprendere il proprio lavoro.
Problem with Distribuited Mark-Scan L’esecuzione del programma rimane
sospesa per tutto il tempo che impiega il garbage collector a terminare.
Se un host è più lento rallenta l’esecuzione in tutto l’ambiente.
Difficile distinguere un guasto da un semplice rallentemento.
Distribuited Concurrent Mark-Scan
Identification e Mutation possono avvenire concorrentemente in ogni host.
Ogni host ha 2 stack, uno per le operazioni del programma e uno per quelle del garbage collector.
Site A (mutator): MMM . . . Site A (collector): I I I . . . | R R R . . . | I I I . . .Site B (mutator): MMM . . . Site B (collector): I I I . . . | R R R . . . | I I I . . .
Distribuited Concurrent Mark-Scan
Durante la fase di mark, una cella può assumere 3 diversi stati:
White: non ancora visitata (le celle vengono inizializzate così)
Gray: visitata e sono stati avviati dei mark task sui suoi riferimenti.
Black: 2 tipi: una cella nuova oppure una che era gray di cui sono stati visitati tutti i suoi riferimenti.
Distribuited Concurrent Mark-Scan
La fase di reclamation (scan) recupera tutte le celle white.
Questa fase avviene mentre le altre operazioni sono sospese, quindi non c’è bisogno di bloccare le celle, che è invece necessario durante la fase di identification e mutation poiché potrebbero modificare contemporaneamente la stessa cella.
Altre tecniche Mantenere un area dati locale in cui
effettuare garbage collection locale. Cell migration: se ho un ciclo di
riferimenti tra più siti posso spostare quelle celle tutte nello stesso host e poi effettuare garbage collection locale.