Design and Implementation of a concurrency profiling and visualing tool for Erlang programs in multicore architectures

see the original item page
in the repository's web site and access all digital files if the item*



Σχεδίαση και υλοποίηση ενός εργαλείου ανάλυσης της εκτέλεσης ενός προγράμματος σε πολυπύρηνες αρχιτεκτονικές για τη γλώσσα Erlang (EL)
Design and Implementation of a concurrency profiling and visualing tool for Erlang programs in multicore architectures (EN)

Τιντινίδης, Αθανάσιος Α. (EL)
Tintinidis, Athanasios A. (EN)

Κοζύρης, Νεκτάριος (EL)
Σαγώνας, Κωστής (EL)
Παπασπύρου, Νικόλαος (EL)

bachelorThesis

2012-09-21
2012-11-20T11:14:22Z
2012-09-19
2012-11-20


Η μετάβαση σε πολυπύρηνες αρχιτεκτονικές παρουσιάζει διάφορες προκλήσεις - τα προγράμματα πρέπει να παραλλοποιηθούν αποδοτικά, αποφεύγοντας προβλήματα όπως αμοιβαίος αποκλεισμός και σημεία συμφόρησης. Ακόμα και σε γλώσσες προγραμματισμού όπως η Erlang, της οποίας το μοντέλο ταυτoχρονισμού και οι βάσεις της στο συναρτησιακό προγραμματισμό επιτρέπουν στο προγραμματιστή να αποφύφει τις περισσότερες μορφές αμοιβαίου αποκλεισμού και συνθηκών ανταγωνισμού και να δημιουργήσει ασφαλείς, επεκτάσιμες και αποδοτικές εφαρμογές, πολλές φορές είναι αναγκαίο να εξεταστεί η πορεία εκτέλεσης ώστε να εντοπιστούν σημεία συμφόρησης και άλλα προβλήματα που περιορίζουν την επιτάχυνση λόγω των πολλαπλών πυρήνων. Σε αυτή τη διπλωματική εργασία θα περιγράψουμε την αρχιτεκτονική, σχεδιαστικές αποφάσεις και λεπτομέρειες υλοποίησης ενός νέου εργαλείου profiling για την Erlang με το όνομα Schedplot. Το εργαλείο αυτό συλλέγει δεδομένα κατά τη διάρκεια εκτέλεσης ενός προγράμματος Erlang και στη συνέχεια παρουσιάζει το βαθμό αξιοποίησης ανά το χρόνο του κάθε scheduler (ο οποίος συνήθως αντιστοιχεί σε ένα νήμα ΚΜΕ που αντιστοιχεί σε ένα πυρήνα) και του συλλέκτη σκουπιδιών. Προσπαθήσαμε να σχεδιάσουμε την αναπαράσταση ώστε ο μεγάλος όγκος δεδομένων, που παράεται από την εκτέλεση προγραμμάτων Erlang με υψηλό βαθμό παραλληλοποίησης σε πολυπύρηνες αρχιτεκτονικές, να είναι εύκολα κατανοητός. Ένα από τα κυριότερα ζήτημα ήταν η δειγματοληψία του χρονοδιαγράμματος ώστε να προκύψει μια σμίκρυνση που να μην αλλοιώνει τη σημασιολογία. Επίσης, για τη γρήγορη αποθήκευση των δεδομένων χωρίς σημαντική επιβάρυνση του χρόνου εκτέλεσης σχεδιάστηκε μια δυαδική κωδικοποίηση. Τέλος, μελετήσαμε την επιβάρυνση εξαιτίας της χρήσης της erlang:trace/3 που έδειξε ότι περαιτέρω βελτίωση θα επιτύχει σημαντική βελτίωση της επεκτασιμότητας και μείωση της επιβάρυνσης. (EL)
64 σ. (EL)
Αθανάσιος Α. Τιντινίδης (EL)
The shift towards multi-core architectures poses several challenges in software development as programs should be efficiently parallelized while avoiding related dangers such as deadlocks and bottlenecks. Even in languages such as Erlang, whose concurrency model and functional foundations enable the programmer to avoid most deadlocks and race conditions and build safe, scalable and efficient applications, it is often required to examine the execution in order to detect bottlenecks and other factors that limit the speedup. This thesis describes the architecture, design choices and implementation details of a new profiling tool for Erlang named Schedplot. Schedplot gathers data during the execution time and then, offline, visualizes the workload of each scheduler (which most of the time maps in a CPU-thread which maps in a core) and the garbage collector. We tried to optimize the graphical representation in order to aid the user’s comprehension of the large volume of data generated by highly scalable Erlang programs run in multicore architectures; one of the main problems encountered was sampling the timeline to provide a zoomed-out view without altering the semantics of the produced representation. Another challenge was storing the produced data sufficiently fast and minimize the overhead caused; according to the evaluation, by using a custom binary encoding, it was reduced to the point of being insignificant. Last, we examined the overhead caused by using erlang:trace/3 concluding that further improvements should be made to improve the scalability and reduce the overall overhead. (EN)


Ταυτοχρονισμός (EL)
Πολυπύρηνες αρχιτεκτονικές (EL)
Σημείο συμφόρησης (EL)
Οπτικοποίηση (EL)
Παραλληλοποίηση (EL)
Multicore architectures (EN)
Bottleneck (EN)
Visualization (EN)
Profiler (EN)
Scalability (EN)
Concurrency (EN)
Parallel (EN)
Erlang (EN)

Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών. Εργαστήριο Τεχνολογίας Λογισμικού (EL)

ETDRestricted-policy.xml (EN)




*Institutions are responsible for keeping their URLs functional (digital file, item page in repository site)