Transactional Memory.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

Τι είναι ο προγραμματισμός
Indexing.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Επεξεργασία Δοσοληψιών.
Προγραμματισμός Ι (αποφύγετέ τον!) 3) Διακοπτόμενος βρόχος: (αποφύγετέ τον!) float energy;......while(TRUE){drink_water(); if(energy
Transactions & P2P Systems Διονύσης Αθανασόπουλος Βασίλης Φωτόπουλος.
Νήματα στη Java Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Πολυεπεξεργαστές.
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα. Συστήματα με Κοινή ή Κατανεμημένη Μνήμη  Σύστημα μοιραζόμενης μνήμης  Σύστημα κατανεμημένης μνήμης.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αδιέξοδα (Deadlocks).
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
1/12/2003Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
1 Επεξεργασία Συναλλαγών. 2 Συναλλαγές m Η ταυτόχρονη εκτέλεση προγραμμάτων χρηστών είναι απαραίτητη για την καλή απόδοση ενός ΣΔΒΔ m Επειδή οι προσπελάσεις.
Βάσεις Δεδομένων II Περίληψη: Προχωρημένα Θέματα Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης 2002
Υποθετικός Πολυνηματισμός. Τα προβλήματα του παράλληλου προγραμματισμού  Εντοπισμός παραλληλισμού – χειροκίνητα (επισκόπηση) – αυτόματα (compiler) 
Λειτουργικά συστήματα ΙΙ
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Επεξεργασία Δοσοληψιών Ανακεφαλαίωση.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Επεξεργασία Δοσοληψιών Ανακεφαλαίωση.
1 Εισαγωγή στις Βάσεις Δεδομένων  Ανάγκη Αποθήκευσης και Διαχείρισης Δεδομένων  Συστήματα Αρχείων  Συστήματα Βάσεων Δεδομένων  Παραδοσιακές και Σύγχρονες.
1515 Διαχείριση Συναλλαγών  Συναλλαγές  Έλεγχος ταυτοχρονισμού  Επανάκτηση δεδομένων.
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ1. 2 Θεωρείστε δύο συναλλαγές (Xacts): T1:BEGIN R(X), X=Χ-N, W(X), R(Y), Y=Y+N, W(Y), END T2:BEGIN R(X) X=X+M, W(X) END v Διαισθητικά, η.
1 Εισαγωγή στις Βάσεις Δεδομένων  Ανάγκη Αποθήκευσης και Διαχείρισης Δεδομένων  Συστήματα Αρχείων  Συστήματα Βάσεων Δεδομένων  Παραδοσιακές και Σύγχρονες.
Κεφάλαιο 19 Τεχνικές Ανάκαμψης Βάσεων Δεδομένων (Recovery)
Βάσεις Δεδομένων II Ενότητα 6: Ανάκαμψη Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
Ντίρλης Νίκος- ΕΤΥ 4ο ΦΡΟΝΤΙΣΤΗΡΙΟ Παρασκευή Β4 1.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Επεξεργασία Δοσοληψιών (συνέχεια)
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
Parallel Architectures Memory Consistency + Synchronization Figures, examples από 1.Transactional Memory, D. Wood, Lecture Notes.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Βάσεις Δεδομένων II Περίληψη: Τεχνικές Ανάνηψης Πάνος Βασιλειάδης Νοέμβρης 2002
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Τεχνικές Ανάκαμψης.
Σύγχρονες Προκλήσεις. Εισαγωγή Οι CMP είναι πια πραγματικότητα – Intel Core 2, Quad, Nehalem – IBM Power5, Power6 – Sun Niagara, Niagara2, Rock –
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
© Processor-Memory (DRAM) Διαφορά επίδοσης Performance
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Οι κίνδυνοι της.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Επεξεργασία Δοσοληψιών.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙΙ.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙΙ.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Βάσεις Δεδομένων II Περίληψη: Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Οκτώβρης 2002
Βάσεις Δεδομένων II Περίληψη: Βασικές Αρχές Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης 2002
Cortex-A Πλήρη λειτουργικά Yψηλή επίδοση Cortex-A Πλήρη λειτουργικά Yψηλή επίδοση Cortex-R Αυστηρές διορίες Διαχείριση λαθών Cortex-R Αυστηρές διορίες.
X-FTL: Transactional Flash Translation Layer for SQLite Databases WOON-HAK KAN, GY SANG-WON LEE, GI-HWAN OH, CHANGWOO MIN COLLEGE OF INFO. AND COMM. ENGR.,
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
Calvin:Fast Distributed Transactions for Partitioned Database System Ηλίας Σπανός Αντωνία Νικολάου Calvin: Fast Distributed Transactions for Partitioned.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Διοίκηση Επιχειρήσεων Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας.
Parallel Architectures Memory Consistency + Synchronization
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Κατανεμημένα Συστήματα
Συγχρονισμός Διεργασιών
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Ομοιόμορφη Αποδοτική Διαχείριση του Ταυτοχρονισμού των Εξυπηρετητών
Διπλωματική Εργασία για το Μεταπτυχιακό Δίπλωμα Ειδίκευσης
Διαχείριση Συναλλαγών
Κατανεμημένα Συστήματα
Κατανεμημένα Συστήματα
Μεταγράφημα παρουσίασης:

Transactional Memory

Τακτικές Συγχρονισμού Κλειδώματα (locks) Coarse-grain Fine-grain Non-blocking Lock-free Wait-free Transactional Memory Συστήματα Παράλληλης Επεξεργασίας

Συγχρονισμός Γιατί δε μας αρέσουν τα locks ... Δυσκολία προγραμματισμού εύκολο να κάνουμε coarse-grain υλοποιήσεις για να εκμεταλλευτούμε όμως τον παραλληλισμό πρέπει να κάνουμε fine-grain υλοποιήσεις ... ... και εκεί ξεκινάει ο εφιάλτης Convoying ένα νήμα που κρατάει ένα lock γίνεται schedule out τα υπόλοιπα νήματα περιμένουν την απελευθέρωση του lock ακόμα και μετά την απελευθέρωση του lock υπάρχει μία ουρά από νήματα που περιμένουν να πάρουν το lock Συστήματα Παράλληλης Επεξεργασίας

Συγχρονισμός Γιατί δε μας αρέσουν τα locks ... Αντιστροφή προτεραιοτήτων (Priority inversion) ένα νήμα T1 υψηλής προτεραιότητας περιμένει να ελευθερωθεί κάποιο lock ένα άλλο νήμα T2 χαμηλότερης προτεραιότητας εκτελείται πριν το T1 Mars Pathfinder (1997) αποστολή της NASA για αποστολή του εξερευνητικού οχήματος Sojourner στον Άρη λίγες μέρες μετά την προσεδάφιση στον Άρη το λογισμικού του συστήματος κάνει επανεκκινήσεις Γιατί; Priority inversion Concurrent programming is hard: “After the failure, JPL engineers spent hours and hours running the system on the exact spacecraft replica in their lab with tracing turned on, attempting to replicate the precise conditions under which they believed that the reset occurred. Early in the morning, after all but one engineer had gone home, the engineer finally reproduced a system reset on the replica. Analysis of the trace revealed the priority inversion.” Πηγή: wikipedia Πηγή:http://research.microsoft.com/en-us/um/people/mbj/Mars_Pathfinder/Mars_Pathfinder.html Συστήματα Παράλληλης Επεξεργασίας

Συγχρονισμός Γιατί δε μας αρέσουν τα locks ... Composability void transfer (account A, account B, int amount) { lock(A); lock(B); withdraw(A, amount); deposit(B, amount); unlock(B); unlock(A); } Νήμα 1: transfer(A, B, 10); lock(A); lock(B); Νήμα 2: transfer(B, A, 20); lock(B); lock(A); DEADLOCK! Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. Συστήματα Παράλληλης Επεξεργασίας

Συγχρονισμός Γιατί δε μας αρέσουν τα locks ... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(A, amount); deposit(B, amount); unlock(bank); } Νήμα 1: transfer(A, B, 10); lock(bank); ... critical section... Νήμα 2: transfer(C, D, 20); lock(bank); ... stall ... No Concurrency! Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. Coarse-grain locking: δεν υπάρχει παραλληλία, χαμηλή επίδοση Συστήματα Παράλληλης Επεξεργασίας

Παράδειγμα: Java 1.4 HashMap Map: key → value (-) δεν είναι thread-safe Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Synchronized HashMap Η λύση της Java 1.4: synchronized layer ρητό, coarse-grain locking από τον προγραμματιστή Coarse-grain synchronized HashMap (+) thread-safe, εύκολο στον προγραμματισμό (-) περιορίζει τον (όποιον) ταυτοχρονισμό, χαμηλή κλιμακωσιμότητα μόνο ένα thread μπορεί να επεξεργάζεται το HashMap κάθε φορά Fine-grain locking HashMap (Java 5) ένα lock ανά bucket (+) καλή επίδοση και κλιμακωσιμότητα (-) δυσκολία προγραμματισμού Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Επίδοση: Locks Συστήματα Παράλληλης Επεξεργασίας

Transactional Memory (TM) Ιδανικά θα θέλαμε: προγραμματιστική ευκολία αντίστοιχη με coarse-grain locking απόδοση συγκρίσιμη με fine-grain locking Transactional memory ο χρήστης σημειώνει κομμάτια κώδικα τα οποία πρέπει να εκτελεστούν ατομικά (transactions) το TM σύστημα είναι υπεύθυνο για την σωστή εκτέλεση Μεταφέρουμε την πολυπλοκότητα του fine-grain συγχρονισμού στο TM σύστημα. Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Προγραμματισμός με ΤΜ void transfer (account A, account B, int amount) { lock(A); lock(B); withdraw(A, amount); deposit(B, amount); unlock(B); unlock(A); } void transfer (account A, account B, int amount) { tx_begin(); withdraw(A, amount); deposit(B, amount); tx_end(); } Προστακτικός vs. Δηλωτικός προγραμματισμός Περιγραφή συγχρονισμού σε υψηλό επίπεδο ο προγραμματιστής λέει τι, όχι πώς Το υποκείμενο σύστημα υλοποιεί το συγχρονισμό εξασφαλίζει ατομικότητα, απομόνωση & σειριοποίηση Επίδοση; εξαρτάται από το κρίσιμο τμήμα και την υλοποίηση του TM Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Transactions Memory transaction μία ατομική και απομονωμένη ακολουθία λειτουργιών μνήμης εμπνευσμένη από τις δοσοληψίες στις Βάσεις Δεδομένων Ατομικότητα (Atomicity) θα γίνουν είτε όλες οι εγγραφές στη μνήμη ή καμία (all or nothing) commit, όλες οι εγγραφές στη μνήμη abort, καμία εγγραφή στη μνήμη Απομόνωση (Isolation) κανένα άλλο τμήμα κώδικα δεν μπορεί να δεί τις εγγραφές ενός transaction πριν το commit Σειριοποίηση (Serializability) τα αποτελέσματα των transactions είναι συνεπή (ίδια με αυτά της σειριακής/σειριοποιημένης εκτέλεσης) τα transactions φαίνονται ότι κάνουν commit σειριακά η συγκεκριμένη σειρά ωστόσο δεν είναι εγγυημένη Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 lock(L) lock(L) lock(L) tx_begin() tx_begin() tx_begin() acq. wr A rd B wr B rd A x conflict tx_begin() unlock(L) tx_end() tx_end() acq. tx_end() unlock(L) acq. unlock(L) Αναμενόμενο κέρδος σε περίπτωση μη-conflict Επιβράδυνση σε conflicts (R-W ή W-W) λόγω χαμένης δουλείας Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο 1 Hand-over-hand locking 2 3 4 Ακόμα και fine-grain υλοποιήσεις μπορεί να μην εκμεταλλεύονται πλήρως τον παραλληλισμό Παράδειγμα: ένα lock στον κόμβο 1 μπλοκάρει νήματα που θα μπορούσαν να εκτελεστούν ταυτόχρονα Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο 1 1 1 Transactions 2 2 3 4 Transaction A READ 1,2,3 Transaction B READ 1,2,4 Τα δύο updates μπορούν να γίνουν ταυτόχρονα: δεν υπάρχει conflict WRITE 3 WRITE 4 Συστήματα Παράλληλης Επεξεργασίας

Transactional HashMap Απλά εσωκλείουμε τη λειτουργία σε ένα atomic block το σύστημα εξασφαλίζει την ατομικότητα Transactional HashMap (+) thread-safe, εύκολο στον προγραμματισμό Καλή επίδοση & κλιμακωσιμότητα? Εξαρτάται από την υλοποίηση του TM και το σενάριο εκτέλεσης, αλλά τυπικά ναι Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Επίδοση: Locks vs. TM Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Πλεονεκτήματα ΤΜ Ευκολία προγραμματισμού παραπλήσια με αυτή των coarse-grain locks ο προγραμματιστής δηλώνει, το σύστημα υλοποιεί Επίδοση παραπλήσια με αυτή των fine-grain locks εκμεταλλεύεται αυτόματα τον fine-grain ταυτοχρονισμό δεν υπάρχει tradeoff ανάμεσα στην απόδοση & την ορθότητα Failure atomicity & recovery δεν «χάνονται» locks όταν ένα νήμα αποτυγχάνει failure recovery = transaction abort + restart Composability σύνθεση επιμέρους ατομικών λειτουργιών / software modules σε μία ενιαία ατομική λειτουργία ασφαλής & κλιμακώσιμη Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Υλοποίηση ΤΜ Τα ΤΜ συστήματα πρέπει να παρέχουν ατομικότητα και απομόνωση χωρίς να θυσιάζεται ο ταυτοχρονισμός Ζητήματα υλοποίησης Data versioning (ώστε να μπορεί να γίνει abort/rollback) Conflict detection & resolution (για να ανιχνεύουμε πότε πρέπει να γίνει abort) Επιλογές Hardware transactional memory (HTM) Software transactional memory (STM) Hybrid transactional memory Hardware accelerated STMs Dual-mode systems Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Data Versioning Διαχείριση uncommitted (νέων) και committed (παλιών) εκδόσεων δεδομένων για ταυτόχρονα transactions Lazy versioning (write-buffer based) Eager versioning (undo-log based) Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Lazy versioning Καταγραφή των αλλαγών σε “write buffer”, ενημέρωση της μνήμης κατά το commit Begin Transaction Write X = 15 Thread Thread X: 15 Write Buffer Write Buffer X: 10 Memory X: 10 Memory Commit Transaction Abort Transaction Thread Thread X: 15 X: 15 Write Buffer Write Buffer X: 10 X: 15 Memory X: 10 Memory Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση “undo log” για την περίπτωση abort Begin Transaction Write X = 15 Thread Thread X:10 Undo Log Undo Log X: 10 Memory X: 15 X: 10 Memory Commit Transaction Abort Transaction Thread Thread X:10 X:10 Undo Log Undo Log X: 15 Memory X: 10 X: 15 Memory Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Data versioning Lazy versioning (write-buffer based) καταγραφή νέων δεδομένων σε write-buffer μέχρι το commit πραγματική ενημέρωση μνήμης κατά το commit (+) γρήγορο abort, fault tolerant (απλά «πετάμε» τον writer-buffer) (-) αργά commits (πρέπει τα δεδομένα να γραφτούν στη μνήμη) Eager versioning (undo-log based) απευθείας ενημέρωση μνήμης διατήρηση undo πληροφορίας σε log (+) γρήγορο commit (τα δεδομένα είναι ήδη στη μνήμη) (-) αργό abort, ζητήματα fault tolerance (τι γίνεται αν ένα thread αποτύχει κατά τη διάρκεια ενός transaction) Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Conflict detection Ανίχνευση και διαχείριση conflicts ανάμεσα σε transactions read-write conflict: ένα transaction A διαβάζει τη διεύθυνση X, η οποία έχει γραφτεί από ένα τρέχων transaction B. write-write conflict: δύο transactions γράφουν στην ίδια διεύθυνση μνήμης X Πρέπει να παρακολουθούνται το read-set & write-set ενός transaction read-set: οι διευθύνσεις που διαβάζονται εντός του transaction write-set: οι διευθύνσεις που γράφονται εντός του transaction Conflict resolution τι γίνεται όταν ανιχνευθεί ένα conflict διάφορες πολιτικές stall writer wins committer wins ... Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Conflict detection Pessimistic (eager) detection Έλεγχος για conflicts σε κάθε load ή store Χρήση contention manager για να αποφασίσει να κάνει stall ή abort Απαισιοδοξία: «Θα έχω conflicts οπότε ας ελέγχω μετά από κάθε πρόσβαση στη μνήμη... Αν χρειαστεί να γίνει abort θα γλιτώσω άσκοπη δουλειά.» Optimistic (lazy) detection Έλεγχος για conflicts κατά το commit Σε περίπτωση conflict, προτεραιότητα στο committing transaction Αισιοδοξία: «Δεν θα έχω conflicts οπότε ελέγχω μόνο κατά την διάρκεια του commit.» Συστήματα Παράλληλης Επεξεργασίας

Pessimistic detection Case 1 Case 2 Case 3 Case 4 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 wr A rd A rd A rd A wr A check check TIME check check rd A wr A rd A wr B wr A check check check stall check restart restart wr C commit commit rd A check wr A rd A check commit check restart commit commit rd A wr A commit check restart Success Early Detect Abort No progress 26 Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Optimistic detection Case 1 Case 2 Case 3 Case 4 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 wr A rd A rd A rd A wr A TIME wr A rd A rd A wr B wr A commit check wr C commit commit commit check check check restart commit restart check rd A wr A commit check rd A commit commit check check Success Abort Success Forward progress 27 Συστήματα Παράλληλης Επεξεργασίας

Conflict Detection Tradeoffs Pessimistic conflict detection (+) ανιχνεύει τα conflicts νωρίς αναιρεί λιγότερη δουλειά, μετατρέπει μερικά aborts σε stalls (-) δεν εγγυάται την πρόοδο προς τα εμπρός, πολλά aborts σε κάποιες περιπτώσεις Optimistic conflict detection (+) εγγυάται την πρόοδο προς τα εμπρός (-) ανιχνεύει τα conflicts αργά, άσκοπη δουλειά (-) starvation Συστήματα Παράλληλης Επεξεργασίας

TM Implementation Space (παραδείγματα) ΗΤΜ συστήματα Lazy + optimistic: Stanford TCC Lazy + pessimistic: MIT LTM, Intel VTM, Sun’s Rock Eager + pessimistic: Wisconsin LogTM STM συστήματα Lazy + optimistic (rd/wr): Sun TL2 Lazy + optimistic (rd) / pessimistic (wr): MS OSTM Eager + optimistic (rd) / pessimistic (wr): Intel STM Eager + pessimistic (rd/wr): Intel STM Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Hardware TM 2011 – IBM Blue Gene/Q 2012 – IBM zEC12 mainframe 2013 – Intel TSX (Haswell, Broadwell …) 2014 – IBM Power8 Κοινά χαρακτηριστικά εκμετάλλευση των ήδη υπάρχοντων μηχανισμών για coherency conflict detection σε επίπεδο cache line – false sharing περιορισμένο μέγεθος read/write sets aborts για διάφορους λόγους εκτός από data conflict cache line eviction, interrupt … best-effort: δεν εγγυώνται forward progress ένα transaction μπορεί να μην κάνει commit ποτέ είναι ευθύνη του χρήστη να εγγυηθεί forward progress με ένα non-transactional path Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Intel TSX Διαθέσιμο στους επεξεργαστές Haswell και μεταγενέστερους. Η πρώτη υλοποίηση HTM διαθέσιμη σε εμπορικούς επεξεργαστές. Στις πρώτες εκδόσεις επεξεργαστών Haswell και Broadwell το TSX είναι buggy Αύγουστος 2014: «Errata prompts Intel to disable TSX in Haswell, early Broadwell CPUs» http://techreport.com/news/26911/errata-prompts-intel-to-disable-tsx-in-haswell-early-broadwell-cpus HSW136. Software Using Intel TSX May Result in Unpredictable System Behavior http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e3-1200v3-spec-update.pdf Λύση; Απενεργοποίηση του TSX από το BIOS.  Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Intel TSX interfaces Παρέχονται δύο interfaces για την χρήση του Restricted Transactional Memory (RTM) 4 νέες εντολές assembly για τη διαχείριση transactions μεγαλύτερη ευελιξία – ο προγραμματιστής επιλέγει τι θα γίνει σε περίπτωση abort Hardware Lock Elision (HLE) 2 νέα προθέματα εντολών assembly ένα critical section προστατεύετεται από ένα lock, το σύστημα προσπαθεί πρώτα να το εκτελέσει σε transaction, αν αποτύχει εκτελείται με την απόκτηση του lock ο κώδικας που προκύπτει εκτελείται και σε παλιότερους επεξεργαστές χωρίς TSX (τα προθέματα αντιμετωπίζονται σαν nops) Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Intel TSX - RTM XBEGIN <fallback address> δηλώνει την αρχή ενός transaction <fallback address>: η διεύθυνση του κώδικα που θα εκτελεστεί σε περίπτωση abort XEND δηλώνει το τέλος ενός transaction XTEST δείχνει αν εκτελείται transaction ή όχι XABORT <abort code> αναγκάζει το τρέχων transaction να κάνει abort <abort code>: χρησιμοποιείται για την διάκριση μεταξύ διαφορετικών λόγων για abort Συστήματα Παράλληλης Επεξεργασίας

Intel TSX – RTM example Ξεκίνα ένα transaction int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT(); ... Critical Section ... TX_END(); } else { /* status != TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; acquire_lock(fallback_global_lock); release_lock(fallback_global_lock); } Προσθήκη του fallback lock στο read-set Transactional path – σε πέρίπτωση abort το hardware αναλαμβάνει να κάνει rollback και η ροή του προγράμματος επιστρέφει στην κλήση της TX_BEGIN() Commit Transaction aborted Αν δεν έχει ξεπεραστεί το όριο των aborts κάνουμε retry το transaction Αλλιώς «κλείδωσε» το lock και εκτέλεσε το κρίσιμο τμήμα – non-transactional path Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Intel TSX – HLE 2 νέα προθέματα εντολών assembly XACQUIRE XRELEASE Παράδειγμα: elision ενός TAS lock /* acquire lock */ while (__sync_lock_test_and_set(&lock_var) == 0) /* do nothing */; ... Critical section with lock acquired ... /* release lock */ __sync_lock_release(&lock_var); /* elide lock */ while (__hle_acquire_test_and_set(&lock_var) == 0) /* do nothing */; ... Critical section with lock acquired ... /* release lock */ __hle_release_clear(&lock_var); Το σύστημα εκτελεί αρχικά το κρίσιμο τμήμα με transaction Αν γίνει abort παίρνει το lock και επανεκτελεί το κρίσιμο τμήμα Συστήματα Παράλληλης Επεξεργασίας

Συστήματα Παράλληλης Επεξεργασίας Συγχρονισμός Multi-cores Κοινή Μνήμη Συγχρονισμός CPU 0 Atomic operations CPU 1 Locks Non-blocking CPU 2 Δυσκολία προγραμματισμού Coarse-grain Fine-grain CPU 3 Κακή επίδοση Δυσκολία προγραμματισμού Convoying Deadlocks Priority Inversion Not composable Συστήματα Παράλληλης Επεξεργασίας

Concurrent HashMap (Java 5) Πιο αποδοτική thread-safe υλοποίηση ένα lock ανά bucket Fine-grain synchronized concurrent HashMap (-) fine-grain παραλληλισμός, ταυτόχρονες αναγνώσεις (+) περίπλοκο & επιρρεπές σε λάθη Συστήματα Παράλληλης Επεξεργασίας