26
DGC 1

DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

Embed Size (px)

Citation preview

Page 1: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

1

Page 2: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

2

Motivation

x

new(x)

delete(x)

Speicher

Page 3: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

3

Inhalt

Einführung GC / DGC

Der ideale DGC

Algorithmen

Zusammenfassung

Page 4: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

4

Was ist Garbage Collection?

• übersetzt: „Müllsammlung“

• Automatisierte Verwaltung von dynamisch zugewiesenem Speicher

• Bestimmung des vom Programm nicht mehr genutzten Speichers

• Freigeben dieses Speichers

• Bestandteil einer Programmiersprache, der Hardware, des Betriebssystems

Was

• Manuelle Speicherverwaltung kostet Zeit und führt zu Fehlern

• Programme mit Speicherlecks

• mit wachsendem Internet von immer größerer Bedeutung

Wofür

Page 5: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

5

Roots Roots

Einblick

lebendig

tot

Objekte

Roots Root-Set

Referenz

Page 6: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

6

Reference Consistency Protocol

• Legt fest, wie Stubs und Scions erstellt werden

• Konsistenten Zustand bewahren

• Erreichbarkeit über Systemgrenzen sicher stellen

u v

stub scion

Page 7: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

7

Allgemeine Probleme

• Statusabfrage mittels Nachrichten

• Kommunikation ist unzuverlässig

• Verteilte Systeme sind asynchron

• Systemausfälle

• Verteilte Zyklen

• Race Conditions

• Skalierbarkeit

DGC

Page 8: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

8

Eigenschaften eines idealen DGC

• Vollständig

• Kooperierend

• Schnell

• Effizient

• Lokal

• Zweckmäßig

• Skalierbar

• Fault tolerant

• Sicher

Page 9: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

9

Algorithmen

Counting-Algorithmen

• Zählen die Referenzen zu einem Objekt

• wenn keine Referenz existiert, wird Objekt entfernt

• z.B. Reference Counting

Tracing-Algorithmen

• Durchlaufen des Referenz-Graphen von der Root-Set aus bis zu den Kindern

• z.B. Mark-Sweep

Hybride-Algorithmen

• Komposition aus mehreren Algorithmen

• DGC Algorithmen sind modifizierte GC-Algorithmen

Grundarten

Page 10: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

10

Reference Counting

• Einfachster Algorithmus (1960)

• An jedem Objekt wird ein Zähler angehängt

• Dieser wird erhöht bzw. erniedrigt bei einer Vervielfältigung bzw. Löschung einer Referenz

• Wenn der Zähler = 0 ist, wird das Objekt aus dem Speicher entfernt

1

Im Detail

u v

stub scion

@v

Page 11: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

11

u

v

w

+1

Race Conditions

@v

12

u

v

w

-1+1

@v

10

ACK

Page 12: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

12

• einfache zu implementieren

• inkrementell

• Speicher wird in Echtzeit freigegeben

• skalierbar

• Jedes Objekt muss Platz für Zähler lassen

• Overhead an Pointer-Update-Operationen

• Race Conditions oder

• Bestätigungsnachrichten (ACK) erzeugen extra Traffic

• Nicht fault-tolerant

• Speicherfragmentierung

• Zyklen werden nicht erkannt

Vorteile

Nachteile

Reference Counting

Page 13: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

13

Distributed Garbage Cycle

Garbage

RA

RB RC

2

1

1

Page 14: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

14

Weighted Reference Counting

• statt eines Counters werden Gewichte benutzt

• Jede entfernte Referenz hat zwei Gewichte

• Gesamt- und Teilgewicht (im scion)

• Ein stub beinhaltet nur das Teilgewicht

• Bei einer neuen entfernten Referenz:

• Hälfte des Gesamtgewichts an Referenz übergeben

• Bei Duplikation einer Referenz wird Teilgewicht halbiert

• entfernte Referenz erhält nur dekrement-Nachrichten, das sie vom Gesamtgewicht abzieht

• sind Gesamt- und Teilgewicht gleich, bestehen keine Referenzen mehr

Page 15: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

15

x

v

y

@v/16

32/64

32 1616

32/48

@v/32

control message:-16

Weighted Reference Counting

RA RB

RC

Page 16: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

16

• Bei Gesamtgewicht von 2k nur k Duplizierungen sein

• nicht fault-tolerant

• keine Beseitigung von Zyklen

Vorteile

Nachteile

• Benutzt nur wenige Nachrichten wenig Traffic

• Keine Race-Conditions

Weighted Reference Counting

Page 17: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

17

Reference Listing

• es gibt max. einen stub für einen scion

• scion gewöhnlich als doppelt verkettete Liste implementiert

• Operationen sind einfügen und löschen

• fault-tolerant

• Race Conditions bleiben bestehen (LösungtimeStamps)

RA

RB

RCx

y

v

Page 18: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

18

Mark-Sweep

• Besteht aus 2 Phasen

• Phase 1 (Mark):

• Markieren der erreichbaren Objekte vom root-set aus

• Phase 2 (Sweep):

• Löschen aller unmarkierten Objekte

• in verteilten Systemen ist Mark-Phase global und Sweep-Phase lokal

Algorithmus

• Tracing-Collector

• beginnen im root-set und verfolgen Referenzen

• alle nicht erreichbaren Objekte werden entfernt

Page 19: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

19

root

Page 20: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

20

• automatisches beseitigen von zyklischen Datenstrukturen

• Kein Overhead bei Zeiger-Operationen

• fault-tolerant (bei Fehlern von vorn beginnen)

Vorteile

Nachteile

Mark-Sweep

• Fragmentierung

• Garbage wird erst entfernt, wenn Speicher erschöpft

• Unterbricht das Programm während des Vorgangs

• Kosten sind proportional zur Größe des Systems

• schlecht skalierbar

• Trashing

• Synchronisationsproblem

Page 21: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

21

Synchronisationsproblem

A B

C

x

RA RB

z

@x

@x

x is garbage

Lösung

• Strenge Protokolle (globale Barriere)

• Am Ende jeder lokalen mark-Phase Barriere setzen

• Danach tritt globale sweep-Phase ein

Page 22: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

22

Copying GC

• Erstmals in LISP verwendet (ca. 1965)

• Speicher wird in der Hälfte geteilt

• nur die lebendigen Objekte in den anderen Speicher bewegen

aktuell

veraltet

Speicher

aktuell

veraltet

Page 23: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

23

• Keine Fragmentierung

• Einfache lineare Speicherzuordnung

• Keine Zyklen

• Kosten sind proportional zu den lebendigen Objekten

Vorteile

Nachteile

Copying GC

• Kopieren ist teuer

• doppelte Größe des benutzten Speichers wird benötigt

• Garbage wird erst entfernt, wenn Speicher erschöpft

• schlecht skalierbar

Page 24: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

24

Hybride GCs

• Kombinieren zwei oder mehreren Algorithmen

• meist wird Reference Counting Technik mit Tracing Technik kombiniert

• so werden auch Zyklen entfernt

• Tracing wird dabei weniger häufig ausgeführt wie Reference Counting

• Algortihmen sind z.B.:

•Migration, Trial Deletion und Local Tracing

• heuristische Suche nach Zyklen

• sind meist ineffizient (Overheads beim Löschen einer Referenz)

Page 25: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

25

Zusammenfassung

• es gibt keinen perfekten Algorithmus

• Anpassung an die Systemumgebung

• Tracing-Algorithmen:

• sollten nur in kleinen Verteilten Systemen angewendet werden (wegen Synchronisation+schlechten Skalierbarkeit)

• nicht für Interaktive und RealTime-Anwendungen geeignet

• wenn Response-Time unwichtig, dann schneller als Counting Algorithmen

• Counting-Algorithmen:

• Verwendung in Systemen, wo Zyklen selten oder nicht vorhanden sind

• bei großen verteilten Systemen:

• fault-tolerant Counting-Algorithmus (reference listing)

Page 26: DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung

DGC

26

Fragen ???