Συγχρονιστές Ειδικά Θέματα Κατανεμημένων Συστημάτων
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 2 Εισαγωγή Σύγχρονο ΚΣ: - Υπάρχει σφαιρικό ρολόι που τους παλμούς του ακούν όλοι οι κόμβοι. - Σε κάθε παλμό ένας κόμβος εκτελεί κάποιους υπολογισμούς και στέλνει μηνύματα στους γείτονές του. - Η χρονική διάρκεια των παλμών είναι αρκετή ώστε να εξασφαλίζεται ότι τα μηνύματα παραλαμβάνονται ώστε να είναι δυνατή η επεξεργασία τους με τον επόμενο παλμό. Αντίθετα σε ασύγχρονο ΚΣ δεν υπάρχει σφαιρικός παλμός και οι καθυστερήσεις μετάδοσης των μηνυμάτων είναι απρόβλεπτες.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 3 Εισαγωγή Η σχεδίαση αλγορίθμων για ασύγχρονο ΚΣ είναι δυσκολότερη αφού η επεξεργασία και η αποστολή μηνυμάτων δε συμβαίνουν σε προκαθορισμένους χρόνους. Τι είναι συγχρονιστής? Ένας μηχανισμός που επιτρέπει την εκτέλεση σύγχρονων αλγορίθμων σε ασύγχρονα συστήματα, μέσω μετατροπής (προσομοίωσης) του ασύγχρονου συστήματος σε σύγχρονο
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 4 Εισαγωγή Θα μπορούσαμε να το δούμε σαν: - Ένα πρωτόκολλο χαμηλού επιπέδου - Ένα μεταγλωττιστή που παίρνει σαν είσοδο ένα σύγχρονο κατανεμημένο αλγόριθμο και παράγει ασύγχρονο. Ένας συγχρονιστής S είναι ένα ασύγχρονο κατανεμημένο πρωτόκολλο που τρέχει παράλληλα με το σύγχρονο κατ. αλγόριθμο Α, που επιθυμούμε να τρέξουμε στο ασύγχρονο σύστημα.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 5 Εισαγωγή Αν ο αλγόριθμος Α περιλαμβάνει μόνο τοπικούς (σε κάθε κόμβο) υπολογισμούς, τότε δεν υπάρχει πρόβλημα με το γεγονός ότι το σύστημα είναι ασύγχρονο (οι κόμβοι θα μπορούσαν να αναφέρουν τα αποτελέσματά τους σε κάποιον προκαθορισμένο κόμβο ο οποίος θα αναλάμβανε και την εξαγωγή του αποτελέσματος) Σε μη τετριμμένους κατανεμημένους αλγορίθμους όμως πρέπει να υπάρχει συντονισμός μεταξύ των μηνυμάτων που στέλνονται.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 6 Global Synch Σφαιρικός Συγχρονιστής Ας φανταστούμε το ακόλουθο σενάριο. - Υπάρχει μια οντότητα που μαζεύει όλα τα μηνύματα των κόμβων μιας φάσης r. - Κατόπιν (αφού μαζευτούν όλα τα μηνύματα μιας φάσης) τα προωθεί στους προορισμούς τους. Είναι φανερό ότι κάθε σύγχρονος αλγόριθμος μπορεί να ξαναγραφεί έτσι ώστε τα μηνύματα όλων των κόμβων να αποστέλλονται στον GlobalSynch. Από τον τρόπο με τον οποίο ο GlobalSynch προωθεί τα μηνύματα είναι προφανές ότι οι κόμβοι θα συντονίζονται ως προς τις φάσεις τους.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 7 Global Synch Πως θα πρέπει ένας κόμβος να αλλάζει φάση? Επηρεάζoνται τα μηνύματα που στέλνονται από τον GlobalSynch από την ασύγχρονη λειτουργία του ΚΣ? Αν ναι παίζει αυτό ρόλο στην ορθότητα λειτουργίας του?
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 8 Local Synch - Στόχος μας είναι να φτιάξουμε κατανεμημένα πρωτόκολλα που να υλοποιούν τον GlobalSynch. - Στον GlobalSynch ένας κόμβος για να προχωρήσει στην επόμενη φάση, περιμένει πότε όλοι οι κόμβοι του δικτύου μπορούν να μπουν στην επόμενη φάση (η μέγιστη διαφορά φάσης μεταξύ δύο οποιονδήποτε κόμβων του ΚΣ είναι 1). - Διαισθητικά η υλοποίηση του GlobalSynch ενέχει μη αναγκαίες καθυστερήσεις. - Μπορούμε να πετύχουμε συγχρονισμό κοιτώντας τοπικά κριτήρια μόνο.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 9 Local Synch Local Synch Κριτήρια - Ίδιος στη βάση του με τον GlobalSynch (πάλι υποθέτουμε ότι υπάρχει κάπου μια οντότητα που μαζεύει όλα τα μηνύματα). - Η διαφορά είναι ότι τα μηνύματα προς τον κόμβο Ui της φάσης r αποστέλλονται αμέσως μόλις έχουν συγκεντρωθεί όλα τα μηνύματα της φάσης r από τους γείτονές του και τον ίδιο τον Ui. Λήμμα: Αν α είναι μία εκτέλεση του LocalSynch τότε υπάρχει ορθή εκτέλεση δ του GlobalSynch έτσι ώστε οι α και δ να είναι ισοδύναμες ως προς κάθε κόμβο Ui.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 10 Local Synch Ορισμοί Έστω π και φ είναι 2 γεγονότα σε μια εκτέλεση β με το π να προηγείται χρονικά του φ, τότε μπορώ να ορίσω τη μερική διάταξη → (β) ως εξής: π → (β) φ αν ένα από τα ακόλουθα είναι αληθή: Α) τα π και φ είναι γεγονότα στον ίδιο κόμβο Ui B) π=send(T,r) i και φ=receive(T ’, r) j (j γείτονας) Γ) π και φ συνδέονται με μια αλυσίδα των σχέσεων (Α) και (Β) Ισχυρισμός: Αν β είναι μια ορθή εκτέλεση και γ παράγεται από τη β έπειτα από επαναδιάταξη των γεγονότων αλλά τηρώντας την παραπάνω σχέση μερικής διάταξης, τότε η γ εκτέλεση είναι κι αυτή ορθή.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 11 Local Synch Απόδειξη Λήμματος (άτυπη). - Έστω α μία εκτέλεση του LocalSynch (αγνοώ υπολογισμούς). - Επαναδιατάσσω την α έτσι ώστε τα μηνύματα των γύρων να είναι διατεταγμένα σα σε μια γραμμή με τα μηνύματα του πρώτου γύρου να έρχονται πρώτα, του δεύτερου δεύτερα κλπ. Όλα τα send γεγονότα ενός γύρου προηγούνται των receive. - H νέα διάταξη διατηρεί τις αρχικές σχέσεις μερικής διάταξης. - Από ισχυρισμό αντιστοιχεί σε σωστή εκτέλεση του LocalSynch. - Είναι εύκολο να παρατηρηθεί ότι αντιστοιχεί και σε σωστή εκτέλεση του GlobalSynch
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 12 Απλή Υλοποίηση Local Synch - Έστω send(T,r) i δείχνει ότι ο Ui στέλνει μήνυμα στο γύρο r της μορφής {(m1, U1), (m2, U2)..} με mk να δηλώνει το περιεχόμενο του μηνύματος στον Uk. Simple Synch - Σε κάθε γύρο r αφού η SimpleSynch(i) διεργασία λάβει send(T,r) i μήνυμα, στέλνει σε όλες τις γειτονικές της SimpleSynch(j) μήνυμα με τον αριθμό του γύρου και τα μηνύματα του Τ που αντιστοιχούν στη Uj. - Όταν η SimpleSynch(i) λάβει μηνύματα από όλους τους γείτονές της στέλνει receive (T, r) i, όπου το σύνολο των μηνυμάτων που ελήφθησαν στο γύρο r, το καθένα μαρκαρισμένο με τον αποστολέα του.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 13 Απλή Υλοποίηση Local Synch Πολυπλοκότητα - Τα μηνύματα που ανταλλάσσονται σε κάθε φάση είναι 2|Ε|. Σύνολο 2r|E|. - Για το χρόνο, έστω c άνω φράγμα στο χρόνο για να συμβεί ένα send γεγονός δοθέντος ότι έχουν συμβεί τα αντίστοιχα receive, l άνω όριο στην εκτέλεση οποιουδήποτε υπολογισμού σε ένα κόμβο και d άνω όριο στο χρόνο παράδοσης του πιο παλιού (στο κανάλι) μηνύματος. Τότε ο συνολικός χρόνος είναι r(c+d+O(l))
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 14 SafeSynch Ως προς το χρόνο εκτέλεσης του SimpleSynch δεν μπορούμε να κάνουμε πολλά. Μπορούμε όμως να βελτιώσουμε τον αριθμό των μηνυμάτων που αποστέλλονται. - Παρόλο που στο σύγχρονο αλγόριθμο ένας κόμβος μπορεί να μη στέλνει μήνυμα σε ένα γύρο, εντούτοις ο SimpleSynch θα στείλει. - Δε μπορούμε να κόψουμε απευθείας το μήνυμα του SimpleSynch γιατί για να προχωρήσει στην επόμενη φάση ένας κόμβος πρέπει απαραίτητα να ξέρει ότι και οι γείτονές του μπορούν.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 15 SafeSynch ΙΔΕΑ - Για να γίνει το receive(T,r) i πρέπει να έχουν παραληφθεί τα μηνύματα από όλους τους γείτονες. - Κάθε κόμβος είναι σε ασφαλή κατάσταση όταν τα μηνύματά του έχουν παραληφθεί από όλους. - Άρα, αρκεί να ξέρουμε ότι όλοι οι γείτονες είναι σε ασφαλή κατάσταση. - Για κάθε μήνυμα που λαμβάνεται ο SafeSynch στέλνει ACK. - Όταν μία διεργασία SafeSynch(i) λάβει ACK από όλους περνάει σε ασφαλή κατάσταση και στέλνει ΟΚ σε όλες τις SafeSynch(j) διεργασίες (j γείτονες). - Όταν η SafeSynch(i) λάβει ΟΚ μηνύματα από όλες τις διεργασίες γείτονες, εκτελεί receive(T,r) i.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 16 Υλοποιήσεις SafeSynch Στη συνέχεια περιγράφουμε κατανεμημένους αλγόριθμους που υλοποιούν SafeSynch. α-Synch Όταν μία διεργασία α(i) λάβει ΟΚi σε κάποιο γύρο r, στέλνει την πληροφορία σε όλους τους γείτονες. Όταν πληροφορηθεί ότι όλοι οι γείτονες λάβαν ΟΚ μηνύματα και έχει λάβει και η ίδια, προχωρεί σε receive.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 17 Υλοποιήσεις SafeSynch ΠΟΛΥΠΛΟΚΟΤΗΤΑ Έστω m τα μη κενά μηνύματα του σύγχρονου αλγορίθμου. - Μηνύματα=2m + 2r|E| (2m για τα μηνύματα και τα ack και 2r|E| για τα ΟΚ μηνύματα). - Χρόνος=r(c+3d+O(l)) Χειρότερα από SimpleSynch
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 18 Υλοποιήσεις SafeSynch β-Synch - Υποθέτουμε την ύπαρξη δέντρου επικάλυψης (κατά προτίμηση με μικρό ύψος) - Όλες οι διεργασίες στέλνουν τα ΟΚ μηνύματα στη ρίζα χρησιμοποιώντας τις ακμές του δέντρου επικάλυψης. - Αφού η ρίζα συγκεντρώσει όλα τα ΟΚ στέλνει go μήνυμα μέσω του δέντρου. ΠΟΛΥΠΛΟΚΟΤΗΤΑ Μηνύματα=2m + 2rn (2rn για τα converge και broadcast) Χρόνος=r(c+2d+O(l)+2h(d+O(l))) ή r(c+O(hd)+O(hl)), όπου h το ύψος.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 19 Υλοποιήσεις SafeSynch γ-Synch - Συνδυασμός των α και β Synch. - Ο αλγόριθμος χρησιμοποιεί δάσος επικάλυψης. - Κάθε δέντρο του δάσους σχηματίζει το δικό του cluster. - Ο γ-αλγόριθμος χρησιμοποιεί τη β εκδοχή για να συγχρονίσει τους κόμβους που ανήκουν στο ίδιο δέντρο/cluster και τον α αλγόριθμο για να συγχρονίσει τα clusters μεταξύ τους. - Όταν κάθε cluster αποτελείται από ένα μόνο κόμβο ο αλγόριθμος συμπεριφέρεται ακριβώς όπως ο α, ενώ όταν υπάρχει ένα μόνο cluster συμπεριφέρεται όπως ο β.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 20 Υλοποιήσεις SafeSynch Ο γ-συγχρονιστής μπορεί να αναλυθεί σε δύο διεργασίες την ClusterSynch και τη ForestSynch. H ClusterSynch εκτελεί τα ακόλουθα: - Όταν λάβει ΟΚs από όλους τους κόμβους του cluster στέλνει cluster_OK στο ForestSynch. - Όταν λάβει go από το ForestSynch το κάνει broadcast στους κόμβους του cluster. - Οι παραπάνω λειτουργίες μπορούν να υλοποιηθούν με β- συγχρονιστή.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 21 Υλοποιήσεις SafeSynch H ForestSynch υλοποιεί SafeSynch στον παραγόμενο από τα clusters γράφο. - Όταν λάβει cluster_OK από όλους τους γείτονες ενός cluster στέλνει μήνυμα go στο cluster - Μπορεί να υλοποιηθεί τρέχοντας α-συγχρονιστή στις ρίζες των δέντρων. - Χρειάζεται preprocessing για να καθοριστούν τα μονοπάτια με τα οποία θα επικοινωνούν οι ρίζες των δέντρων.
Ειδικά Θέματα Κατ. Συστ. Συγχρονιστές/ Slide 22 Υλοποιήσεις SafeSynch ΠΟΛΥΠΛΟΚΟΤΗΤΑ - Έστω h το μέγιστο ύψος ενός cluster, e ο συνολικός αριθμός των ακμών στα μονοπάτια επικοινωνίας των ριζών των δέντρων. - Μηνύματα=2m+O(r(n+e)) (O(rn) για τα μηνύματα του ClusterSynch O(re) για τα μηνύματα του ForestSynch) - Χρόνος=Ο(r(c+O(hd)+O(hl))) Παρατήρηση: Εάν n+e<<|E| τότε ο γ-συγχρονιστής στέλνει λιγότερα μηνύματα από ότι ο α Εάν h<<ύψος δέντρου επικάλυψης στο συνολικό γράφο τότε τρέχει σε χρόνο μικρότερο του β.