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 collector identification reclamation Classificazione Garbage collector
Identification DirectIndirect ImmediateDeferredSequentialConcurrent
Direct Identification of Garbage Lidentificazione 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 sullidea 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 Scan Nella 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 m n 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 Laccesso 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 nellordine 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 ABC Race condition
Distribuited Reference Counting Lermer and Maurer protocol per prevenire race conditions. ABC
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 dellordine casuale di arrivo dei messaggi Lidea è 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 lambiente 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 lesecuzione.
Distribuited Mark e Scan Il master ordina linizio 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 Lesecuzione del programma rimane sospesa per tutto il tempo che impiega il garbage collector a terminare. Se un host è più lento rallenta lesecuzione in tutto lambiente. 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.