Distributed
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

Distributed PowerPoint PPT Presentation


  • 51 Views
  • Uploaded on
  • Presentation posted in: General

Distributed. Garbage. Collection. Motivation. new(x). delete(x). Speicher. x. Inhalt. Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung. Wofür. Manuelle Speicherverwaltung kostet Zeit und führt zu Fehlern Programme mit Speicherlecks

Download Presentation

Distributed

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Distributed

Distributed

Garbage

Collection


Distributed

Motivation

new(x)

delete(x)

Speicher

x


Distributed

Inhalt

  • Einführung GC / DGC

  • Der ideale DGC

  • Algorithmen

  • Zusammenfassung


Distributed

Wofür

  • Manuelle Speicherverwaltung kostet Zeit und führt zu Fehlern

  • Programme mit Speicherlecks

  • mit wachsendem Internet von immer größerer Bedeutung

Was ist Garbage Collection?

Was

  • ü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


Distributed

Roots

Roots

Roots

Einblick

Objekte

lebendig

Root-Set

Referenz

tot


Distributed

stub

scion

Reference Consistency Protocol

  • Legt fest, wie Stubs und Scions erstellt werden

  • Konsistenten Zustand bewahren

  • Erreichbarkeit über Systemgrenzen sicher stellen

v

u


Distributed

Allgemeine Probleme

DGC

  • Statusabfrage mittels Nachrichten

  • Kommunikation ist unzuverlässig

  • Verteilte Systeme sind asynchron

  • Systemausfälle

  • Verteilte Zyklen

  • Race Conditions

  • Skalierbarkeit


Distributed

Eigenschaften eines idealen DGC

  • Sicher

  • Vollständig

  • Kooperierend

  • Schnell

  • Effizient

  • Lokal

  • Zweckmäßig

  • Skalierbar

  • Fault tolerant


Distributed

Algorithmen

Grundarten

  • 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


Distributed

Im Detail

@v

v

u

stub

scion

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


Distributed

@v

@v

ACK

+1

Race Conditions

u

w

+1

2

1

v

u

w

-1

1

0

v


Distributed

Reference Counting

Vorteile

  • einfache zu implementieren

  • inkrementell

  • Speicher wird in Echtzeit freigegeben

  • skalierbar

Nachteile

  • 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


Distributed

Garbage

Distributed Garbage Cycle

RA

RC

RB

2

1

1


Distributed

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


Distributed

@v/16

RA

RB

RC

@v/32

x

control message:

-16

v

Weighted Reference Counting

y

16

32

16

32/48

32/64


Distributed

Weighted Reference Counting

Vorteile

  • Benutzt nur wenige Nachrichten  wenig Traffic

  • Keine Race-Conditions

Nachteile

  • Bei Gesamtgewicht von 2k nur k Duplizierungen sein

  • nicht fault-tolerant

  • keine Beseitigung von Zyklen


Distributed

RA

RB

RC

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ösungtimeStamps)

x

v

y


Distributed

Mark-Sweep

  • Tracing-Collector

  • beginnen im root-set und verfolgen Referenzen

  • alle nicht erreichbaren Objekte werden entfernt

Algorithmus

  • 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


Distributed

root


Distributed

Mark-Sweep

Vorteile

  • automatisches beseitigen von zyklischen Datenstrukturen

  • Kein Overhead bei Zeiger-Operationen

  • fault-tolerant (bei Fehlern von vorn beginnen)

Nachteile

  • 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


Distributed

@x

@x

Synchronisationsproblem

C

x is garbage

A

B

RA

RB

z

x

Lösung

  • Strenge Protokolle (globale Barriere)

    • Am Ende jeder lokalen mark-Phase Barriere setzen

    • Danach tritt globale sweep-Phase ein


Distributed

Speicher

veraltet

aktuell

aktuell

veraltet

Copying GC

  • Erstmals in LISP verwendet (ca. 1965)

  • Speicher wird in der Hälfte geteilt

  • nur die lebendigen Objekte in den anderen Speicher bewegen


Distributed

Copying GC

Vorteile

  • Keine Fragmentierung

  • Einfache lineare Speicherzuordnung

  • Keine Zyklen

  • Kosten sind proportional zu den lebendigen Objekten

Nachteile

  • Kopieren ist teuer

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

  • Garbage wird erst entfernt, wenn Speicher erschöpft

  • schlecht skalierbar


Distributed

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)


Distributed

Zusammenfassung

  • es gibt keinen perfekten Algorithmus

  • Anpassung an die Systemumgebung

  • Counting-Algorithmen:

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

    • bei großen verteilten Systemen:

      • fault-tolerant Counting-Algorithmus (reference listing)

  • 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


Distributed

Fragen ???


  • Login