1 / 26

Distributed

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

isaura
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Distributed Garbage Collection

  2. Motivation new(x) delete(x) Speicher x

  3. Inhalt • Einführung GC / DGC • Der ideale DGC • Algorithmen • Zusammenfassung

  4. 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

  5. Roots Roots Roots Einblick Objekte lebendig Root-Set Referenz tot

  6. stub scion Reference Consistency Protocol • Legt fest, wie Stubs und Scions erstellt werden • Konsistenten Zustand bewahren • Erreichbarkeit über Systemgrenzen sicher stellen v u

  7. Allgemeine Probleme DGC • Statusabfrage mittels Nachrichten • Kommunikation ist unzuverlässig • Verteilte Systeme sind asynchron • Systemausfälle • Verteilte Zyklen • Race Conditions • Skalierbarkeit

  8. Eigenschaften eines idealen DGC • Sicher • Vollständig • Kooperierend • Schnell • Effizient • Lokal • Zweckmäßig • Skalierbar • Fault tolerant

  9. 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

  10. 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

  11. @v @v ACK +1 Race Conditions u w +1 2 1 v u w -1 1 0 v

  12. 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

  13. Garbage Distributed Garbage Cycle RA RC RB 2 1 1

  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

  15. @v/16 RA RB RC @v/32 x control message: -16 v Weighted Reference Counting y 16 32 16 32/48 32/64

  16. 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

  17. 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

  18. 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

  19. root

  20. 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

  21. @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

  22. 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

  23. 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

  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)

  25. 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

  26. Fragen ???

More Related