Distribuited Garbage Collection Pastorino Luca. Distribuited Garbage Collector garbage collection in...

Post on 01-May-2015

220 views 0 download

Tags:

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.