Universität Karlsruhe (TH) Software Transactional Memory

Ähnliche Dokumente
Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Datensicherung. Beschreibung der Datensicherung

dpa-infocom - Datenlieferung

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

Synchronisation in Datenbanksystemen in a nutshell

Grundlagen von Python

Übungen zur Vorlesung. Datenbanken I

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Multicore Programming: Transactional Memory

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Grundlagen verteilter Systeme

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Softwarelösungen: Versuch 4

Software Engineering Klassendiagramme Assoziationen

Computeria Solothurn

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

ARCO Software - Anleitung zur Umstellung der MWSt

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

OP-LOG

Anlegen eines DLRG Accounts

ecaros2 - Accountmanager

Mediumwechsel - VR-NetWorld Software

Java Enterprise Architekturen Willkommen in der Realität

Updatehinweise für die Version forma 5.5.5

Lehrer: Einschreibemethoden

Sophos Anti-Virus. ITSC Handbuch. Version Datum Status... ( ) In Arbeit ( ) Bereit zum Review (x) Freigegeben ( ) Abgenommen

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Mediumwechsel - VR-NetWorld Software

Lokale Installation von DotNetNuke 4 ohne IIS

Benutzerverwaltung Business- & Company-Paket

1. Einführung. 2. Weitere Konten anlegen

2. Word-Dokumente verwalten

Professionelle Seminare im Bereich MS-Office

Version NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook

Objektorientierte Programmierung

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

NTT DATA Helpdesk Benutzerhandbuch

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Benutzerkonto unter Windows 2000

Moodle-Kurzübersicht Kurse Sichern und Zurücksetzen

Transaktionsverwaltung

DOKUMENTATION VOGELZUCHT 2015 PLUS

Guide DynDNS und Portforwarding

Erstellen einer in OWA (Outlook Web App)

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Leichte-Sprache-Bilder

TELIS FINANZ Login App

Microsoft Update Windows Update

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

malistor Phone ist für Kunden mit gültigem Servicevertrag kostenlos.

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Arbeiten mit dem neuen WU Fileshare unter Windows 7

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Benutzerhandbuch MedHQ-App

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung

Kurzanleitung. Toolbox. T_xls_Import

Buddy - Algorithmus Handbuch für Endnutzer Stand

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

Tipps und Tricks zu Netop Vision und Vision Pro

Handbuch B4000+ Preset Manager

SEP 114. Design by Contract

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

AdmiCash-Wiederherstellung auf einem neuen PC oder Betriebssystem

Stand vr bank Südthüringen eg 1 von 9. mobile TAN Umstellungsanleitung VR-NetWorld Software

Verarbeitung der -Adressen

Verwendung des IDS Backup Systems unter Windows 2000

Journaling-Dateisysteme

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

AutoCAD Dienstprogramm zur Lizenzübertragung

Kommunikations-Management

support Kurzanleitung Kunde Version 5.1.1

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

mobile TAN Umstellungsanleitung Star Money

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Software WISO Hausverwalter 2014 Datenübernahme aus WISO Mein Geld Version / Datum V 1.0 /

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

SILBER SURFER. PC-Treffen der Arbeiterwohlfahrt, Ortsverein Sehnde. PC Internet / Cloud. Leitfaden zur Schulung

GE Capital Equipment Financing. GE Capital Leasing-Tool Schulungsunterlagen

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Tipps und Tricks zu Netop Vision und Vision Pro

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann,

Stand vr bank Südthüringen eg 1 von 10. Smart TAN plus Umstellungsanleitung VR-NetWorld Software

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

Installation von Updates

Transkript:

Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Software Transactional Memory Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari

Software Transactional Memory Agenda 1. Motivation 2. Überblick 3. Konzepte Konfliktdetektion 4. Implementierungen Beispiel einer STM-Implementierung in Java 5. Probleme mit STM 6. Ausblick 2

Motivation (1) Der traditionelle Ansatz zur Synchronisation mehrfädiger Programme ist die Verwendung von Sperren. Probleme Fehleranfälligkeit beim Programmieren (z.b. Inkonsistentes Lesen/Schreiben, Deadlocks, etc.) Zu viele Sperren (z.b. bei Anfängern, die auf Nummer sicher gehen wollen) führen zu niedriger Performanz aufgrund von wartenden Prozessen 3

Motivation (2) Problem-Potenziale beim Prozessabbruch Werden die Sperren freigegeben? In welchem Zustand befinden sich die gemeinsam genutzten Speicherbereiche? Prioritätsumkehr Prozess A mit hoher Priorität kann nicht ausgeführt werden, weil ein Prozess B niedriger Priorität eine benötigte Ressource blockiert. Wird B durch einen anderen Prozess C mittlerer Priorität verdrängt, so wird C vor A ausgeführt. Prozesse hoher Priorität sollten nicht auf solche mit niedriger Priorität warten müssen (wichtig insb. bei Echtzeit-Systemen). Sperren-Konvoi ( Lock convoying ) Prozesse arbeiten quasi im Gleichschritt, stürzen sich alle gleichzeitig auf die nächste Sperre. 4

Software Transactional Memory (1) Überblick Beim Software Transactional Memory (STM) wird das Transaktionskonzept auf gemeinsam genutzten Speicher übertragen. Transaktion: Folge von Aktionen mit folgenden Eigenschaften: Atomarität (Atomicity): Aktionen werden entweder ganz oder oder gar nicht ausgeführt bei Erfolg Abschluss mit commit (Änderungen werden wirksam) bei Fehlschlag Abschluss mit abort (Änderungen werden verworfen) Konsistenz (Consistency): Zustände vor und nach Ausführung einer Transaktion konsistent. (Beispiele applikationsspezifisch: gemeinsamer Speicher, Invarianten, etc.) Isolation: Eine Transaktion sieht andere Transaktionen nicht; sie produziert korrektes Ergebnis, unabhängig von den anderen Transaktionen 5

Software Transactional Memory (2) Überblick Transaktionaler Speicher als Alternative Statt Sperren kommen Transaktionen als Koordinationsmechanismus zum Einsatz Transaktionen nehmen dem Programmierer die Entscheidung ab zwischen der Verwendung von wenigen, grob-granularen Sperren Programme sind leichter verständlich, gut nachzuvollziehen Performanz ist nicht optimal vielen fein-granularen Sperren nicht gut überschaubar, fehleranfällig bessere Performanz 6

Transaktionaler Speicher: Konzepte (1) Paralleler Zugriff auf Datenstrukturen kann nicht mehr blockieren Keine Sperren mehr, d.h. kein Faden kann eine Sperre halten, die globalen Fortschritt verhindert Eigenschaften von Synchronisationsmechanismen [He+03, Her91] Lock-free : Irgend ein Faden macht immer Fortschritte Wait-free : Jeder Faden macht Fortschritte, sogar wenn andere Fäden ihre Ausführung verzögern oder abbrechen. stärkere Eigenschaft als lock-free Realisierung von Transaktionen basiert typischerweise auf atomaren Synchronisationsprimitiven, die von der Hardware angeboten werden z.b. Compare-and-Swap (kann für Implementierungen mit wait-free-eigenschaft genutzt werden, vgl. [He+03]) 7

Transaktionaler Speicher: Konzepte (2) CAS: Compare-and-swap Atomare Operation, die von der Hardware angeboten werden muss. Grundlage für Sperrmechanismen Drei Argumente: Adresse einer Hauptspeicherstelle Vergleichswert v neuer Wert w Funktionsweise (atomar!) Der Wert an der adressierten Speicherstelle wird mit V verglichen. Nur bei Übereinstimmung wird w an dieselbe Speicherstelle geschrieben. Erfolg oder Nichterfolg wird zurückgemeldet, z.b. durch Rückgabe des vorgefundenen Werts. 8

Transaktionaler Speicher: Konzepte (3) Beispiel: Auszahlung am Geldautomaten Der Saldo des Kontos darf nicht negativ werden. Traditionelles Vorgehen Variante ohne Sperren: Während des Auszahlvorganges wird eine Sperre auf das Konto angefordert. Andere Geldautomaten müssen warten, wenn sie gleichzeitig auf dasselbe Konto zugreifen wollen. (1) lese den alten Wert, prüfe die Bonität (und breche evtl. ab) (2) ziehe Auszahlungsbetrag ab (3) setze neuen Betrag mittels CAS(Konto, alt,neu); Falls das fehlschlägt, starte wieder bei (1). Dieser Algorithmus ist lock-free aber nicht wait-free, denn durch andere Zugriffe auf dieses Konto könnte sich der Saldo stets wieder geändert haben, die CAS-Operation fehlschlagen und so den Auszahlungsvorgang hinauszögern. 9

Transaktionaler Speicher: Konzepte (4) Optimistisches Grundprinzip: Konkurrierender Zugriff auf gemeinsam genutzte Speicherbereiche wird nicht im Voraus verhindert, sondern nachträglich detektiert. Jeder Prozess führt während einer Transaktion Schreib- oder Leseoperationen auf dem gemeinsam genutzten Speicher zunächst ohne Rücksicht auf andere Prozesse durch. Sobald festgestellt wird, dass ein Konflikt aufgetreten ist, wird eine der betreffenden Transaktionen abgebrochen ( abort ) und neu gestartet. Konflikt: Die Daten, auf die lesend oder schreibend zugegriffen wurde und wird, wurden währenddessen durch eine andere Transaktion verändert. Wenn kein Konflikt aufgetreten ist, wird die Transaktion abgeschlossen und mögliche Änderungen werden permanent gemacht ( commit ). 10

Transaktionaler Speicher: Konzepte (5) Abbruch einer Transaktion (abort) Alle Effekte einer Transaktion müssen rückgängig gemacht werden, wenn diese abgebrochen wird. Dazu müssen bei schreibenden Zugriffe entweder alte Daten gesichert werden oder auf einer Kopie des Speicherbereiches gearbeitet werden meistens So kann im Falle des Abbruchs der Zustand vor der Transaktion wiederhergestellt werden. Während einer Transaktion dürfen keine E/A-Operationen ausgeführt werden, die nicht rückgängig gemacht werden könnten. Sog. Output-Commit -Problem kann durch Speichern und Wiederherstellen der Eingaben bzw. Zwischenspeichern und Verzögern der Ausgaben behoben werden. 11

Transaktionaler Speicher: Konzepte (6) Granularität Bei der Implementierung eines Transaktionalen Speicher- Systems muss festgelegt werden, mit welcher Granularität gearbeitet wird. Frühere Vorschläge für hard- und softwarebasierte Systeme arbeiteten auf Worten, d.h. jede Transaktion bestand aus dem Zugriff auf ein oder mehrere Worte großer Verwaltungsaufwand, großer Speicherbedarf Moderne hardwarebasierte Systeme arbeiten mit Blöcken fester Größe, insbesondere Seiten oder Cache-Zeilen. Andere Blockgrößen können unterstützt werden, je nach Fähigkeit der Hardware, die alle Schreib- und Lesezugriffe überwachen muss. Moderne STM-System arbeiten dagegen überwiegend objektorientiert, um den Aufwand für die Zugriffskontrolle zu minimieren. 12

Transaktionaler Speicher: Konzepte (7) Funktionsweise Innerhalb einer Transaktion muss Buch geführt werden über alle Lese- und Schreibzugriffe auf gemeinsam genutzte Speicherbereiche. In typischen STM-Systemen werden gemeinsam genutzte Speicherbereiche deklariert (durch open()) Dabei teilt der Programmierer dem STM mit, ob er nur lesend, oder auch schreibend auf diese Speicherbereiche zugreifen will. Von Speicherbereichen, auf die geschrieben werden soll, wird eine Kopie angelegt, und nur die Kopie modifiziert. Falls die Transaktion erfolgreich abgeschlossen wird, wird mit einer atomaren Operation der alte Speicherbereich durch den neuen ersetzt. 13

Konzepte - Konfliktdetektion (1) In einem typischen STM wird die Absicht eines Schreibzugriffs publiziert (d.h. für alle anderen Prozesse sichtbar). Man sagt, dass der jeweilige Prozess versucht, den entsprechenden Block in Besitz zu nehmen (acquire()) An dieser Stelle werden Konflikte sichtbar: Wenn eine andere Transaktion den fraglichen Bereich in Besitz hält, kann eine der beiden Transaktionen abgebrochen werden. Andere Transaktionen können abgebrochen werden, wenn sie die Daten gelesen haben, für die hier grade der Besitz angefordert wird. Die Transaktion kann abgebrochen werden, wenn Daten ihrer vorhergehenden Lesezugriffe inzwischen überschrieben wurden. 14

Konzepte - Konfliktdetektion (2) Die Bekanntgabe der Schreiber ist grundsätzlich unerlässlich für die Konflikterkennung und findet immer vor dem abschließenden, tatsächlichen Festschreiben der Änderungen (Commit) statt. acquire() ist normalerweise keine eigenständige Operation, sondern Bestandteil von open() oder commit() (je nach STM- Implementierung). Beides hat Vor- und Nachteile. Frühzeitige Besitznahme: + Kann Konflikte frühzeitig detektieren. - Kann Transaktionen unnötigerweise abbrechen. (z.b. wenn die störende Transaktion selbst später abbricht) Späte Besitznahme: - Lässt zum Scheitern verurteilte Transaktionen lange laufen. + Übersieht Konflikte, die sich später gar nicht auswirken. open() acquire() commit() 15

Implementierungen Zunächst als Hardware-Mechanismus vorgeschlagen. [HeMo93] Herlihy and Moos: Architectural Support for Lock-Free Data Structures, 1992 Heute überwiegend in Software realisiert, z.t. mit Hardware-Unterstützung. [ShTo95] STM: Shavit and Touitou: Software Transactional Memory, 1995 16

STM-Beispiel-Implementierung (1) Im folgenden wird beispielhaft eine STM- Implementierung mit frühzeitiger Konflikterkennung gezeigt [He2+03]. Prototyp u.a. in Java, verwendet compare-and-swap Transaktion durch TMThread-Klasse realisiert, die von Thread erbt und zusätzliche Methoden für Transaktion bereitstellt: begintransaction, open, commit, abort, checkstatus, Transaktions-Objekt TMObject als Hüll-Klasse realisiert, die Java Object enthält; implementiert clone-operation. 17

STM-Beispiel-Implementierung (2) Beispiel atomarer Zähler: //Initialisierung Counter counter = new Counter(0); TMOBject tmobject = new TMObject(counter); //Verwendung innerhalb einer Transaktion //Faden ruft begintransaction auf Counter counter=(counter)tmobject.open(write); counter.inc();... open legt Datenstrukturen für Transaktion einschließlich einer Kopie an (vgl. nächste Folien) Faden manipuliert Kopie des Objektes wie gewöhnlich Implementierung garantiert, dass kein anderer Faden Zugriff auf lokale Kopie hat Transaktion kann von sich aus abbrechen (aborttransaction) committransaction: Erzeugt mit CAS eine konsistente neue Version oder schlägt fehl 18

STM-Beispiel-Implementierung (3) Details zur Realisierung eines Transaktions-Objekts Jedes Objekt hat 3 Felder (referenziert über Lokator ) eine Referenz auf die letzte Transaktion, die das Objekt im Schreibmodus geöffnet hat altesobjekt: Zeiger auf die alte Version des Objekts (vor Beginn der Transaktion) neuesobjekt: Zeiger auf neue Version des Objekts (aktuelle Daten). Diese wird von der Transaktion genutzt und ggf. verändert. Indirektion über TM-Objekt erlaubt atomaren Zugang zu allen Lokator-Feldern. Methode: Zeiger mit compare-and-swap auf anderen Lokator umschwenken TM-Objekt Transaktion neuesobjekt Status: active, aborted, committed Datenobjekt neue Version altesobjekt Lokator Datenobjekt alte Version 19

TM-Objekt 1 5 CAS STM-Beispiel-Implementierung (4) Öffnen eines TMObject in Transaktion B neuesobjekt altesobjekt alter Lokator 2 Transaktion A neuesobjekt altesobjekt neuer Lokator 3 4b Status: committed Datenobjekt neue Version Datenobjekt alte Version Status: active Datenobjekt neue Version Annahme: B abgeschlossen mit commit; A beginnt; C (nicht gezeigt) konkurriert mit A 4a Kopie Schreibmodus und Commit: 1. Ein Zeiger auf den alten Locator wird gespeichert. 2. Es wird ein neuer Locator angelegt, der auf die neue Transaktion verweist. Deren Zustand wurde mit active initialisiert. 3. Der Zeiger alt des neuen Locators zeigt auf die aktuellen ( neu nach commit) Daten der abgeschlossenen Transaktion. 4. Der Zeiger neu im neuen Lokator zeigt auf eine frisch angelegte Kopie dieser Daten. 5. Mittels einer CAS-Operation wird die global sichtbare Referenz für das gemeinsam genutzte Objekt auf den neuen Locator umgesetzt, wenn die Referenz sich seit (1.) nicht geändert hat (durch Transaktion C). 20

TM-Objekt 1 5 CAS STM-Beispiel-Implementierung (5) Beispiel nach Abort von B: Transaktion B Transaktion A neuesobjekt altesobjekt Status: aborted Datenobjekt neuesobjekt neue Version altesobjekt Datenobjekt alter Lokator alte Version 4a 2 3 Kopie neuer Lokator 4b Status: active Datenobjekt neue Version Annahme: B abgeschlossen mit abort; A beginnt; C (nicht gezeigt) konkurriert mit A 1. Ein Zeiger auf den alten Locator wird gespeichert. 2. Es wird ein neuer Locator angelegt, der auf die neue Transaktion verweist. Deren Zustand wurde mit active initialisiert. 3. Der Zeiger alt des neuen Locators zeigt auf die alten, ungeänderten Daten der abgebrochenen Transaktion. 4. Der Zeiger neu des neuen Lokators zeigt auf eine frisch angelegte Kopie dieser alten Daten. 5. Mittels einer CAS-Operation wird die global sichtbare Referenz für das gemeinsam genutzte Objekt auf den neuen Locator umgesetzt, wenn sie sich seit (1.) nicht geändert hat (durch Transaktion C). 21

STM-Beispiel-Implementierung (6) Nur lesende Transaktionen Signalisieren nur Lesen durch tmobject.open(read); Am Ende einer solchen Transaktion kann wieder mit compare-and-swap (tmobjectref, alter Verweis, alter Verweis) validiert werden, ob die gelesenen Daten noch gültig sind (und nicht von einer anderen Transaktion verändert wurden). 22

Probleme mit STM Programmierfehler immer noch möglich. Beispiel für Verklemmung (Deadlock) [Bl+06]: bool a = false; bool b = false; //Thread 1: //a lesend, b schreibend //Thread2: //a schreibend, b lesend atomic { atomic { while (!a); a = true; b = true; while (!b); } } Oft Annahme: Kurze kritische Sektionen [HeMo93] 23

Ausblick Gegenstand aktueller Forschung: Verbesserung der Performanz Integration in bestehende Programmiersprachen (Bibliotheken & Spracherweiterungen) Formale Fragestellungen (Vermeidung von Deadlocks, Livelocks, etc.) 24

Literatur / Links [Bl+06] Colin Blundell et al., Subleties of Transactional Memory Atomicity Semantics, Computer Architecture Letters, Volume 5, Number 2, November 2006 [Her91] Herlihy, M., Wait-free synchronization, ACM TOPLAS, 1991, 13, 124-149 [He+03] Herlihy, M. et al., Obstruction-Free Synchronization: Double-Ended Queues as an Example, Proc. ICDS, 2003 [He2+03] Herlihy, M. et al., Software transactional memory for dynamic-sized data structures, ACM PODC '03, 2003, 92-101 [HeMo93] Herlihy, M., Moss, J. E. B. Transactional memory: architectural support for lock-free data structures, Proc. ISCA '93, 1993, pp. 289-300 [LaRa07] Larus, J.R., Rajwar, R., Transactional Memory, Morgan & Claypool Publishers, 2007 [ShTo97] Shavit, N., Touitou, D. Software transactional memory Distributed Computing, 1997, V10, pp. 99-116 [Intel07] Intel C++ STM Compiler, Prototype Edition, http://softwarecommunity.intel.com/articles/eng/1498.htm (09/2007) 25