Meta-level-Ansätze und Werkzeuge für komplexe nebenläufige Systeme
Meta-level Engineering and Tooling for Complex Concurrent Systems
Bilaterale Ausschreibung: Belgien
Wissenschaftsdisziplinen
Informatik (100%)
Keywords
-
Concurrency,
Language Implementation,
Debugging,
Meta-Interaces,
Instrumentation,
Optimization
In den letzten Jahren sind Multi-Core-Prozessoren zum Standard in Handys, Tablets, Laptops und Servern geworden. Um diese neuen Prozessoren effizient zu nutzen, gibt es diverse Ansätze zur nebenläufigen Programmierung. Besonders in komplexen Softwaresystemen werden diese Ansätze auch immer mehr miteinander kombiniert. Für die Wartbarkeit der Software ergeben sich dadurch jedoch erhebliche Probleme, da Nebenläufigkeit im Gegensatz zur sequentiellen Programmierung Einfluss auf das gesamte System hat und nicht bloß auf einen bestimmten Teil des Systems. Dies erschwert es, komplexe Systeme zu verstehen und darin Fehler zu beheben. Hinzu kommt, dass heutige Debugging-Werkzeuge auf der einfachsten Abstraktionsebene ansetzen und Entwicklern z.B. lediglich Informationen zu Speicherzugriffen bereitstellen, anstatt die verwendeten Nebenläufigkeitskonstrukte auf höherer Ebene darzustellen. Um die Entwicklung komplexer nebenläufiger Systeme zu erleichtern, möchten wir erforschen, wie man von der Vielzahl von Nebenläufigkeitskonstrukten abstrahieren kann. Unser Ziel ist es, einen Abstraktionsmechanismus zu entwickeln, der es Werkzeugen ermöglicht, mit der Vielzahl unterschiedlicher Nebenläufigkeitskonstrukte umzugehen. Neben der eigentlichen Entwicklung dieses Abstraktionsmechanismus wird es eine Herausforderung sein, ihn so umzusetzen, dass er die Ausführung eines Systems nicht verfälscht, damit eventuelle Nebenläufigkeitsprobleme beobachtbar bleiben. Bisher wurde noch zu wenig erforscht, welche Werkzeuge man zur Fehlersuche in Systemen mit unterschiedlichen Nebenläufigkeitskonstrukten braucht und wie man solche Werkzeuge effizient implementiert. Es gibt zwar Ansätze für einige ausgewählte Konstrukte, die aber für heutige komplexe Softwaresysteme nicht ausreichend sind. Um unsere Forschung erfolgreich durchzuführen, kombi- nieren wir das Expertenwissen des Software Languages Lab der Vrije Universi- teit Brussel in Belgien und des Instituts für Systemsoftware an der Johannes Kepler Universität in Linz, Österreich. Wir werden der Frage nachgehen, wie man Nebenläufigkeitskonstrukte durch eine gemeinsame Werkzeug-Meta- Schnittstelle darstellen kann, und wie man diese Werkzeuge so umsetzt, dass sie die Ausführung des beobachteten Programms nicht verfälschen. Dabei bauen wir auf Truffle auf, einer neuartigen Plattform zur effizienten Implementierung von Programmiersprachen. Truffle erlaubt es uns, mit Prototypen zu experimen- tieren, deren Performanz auf dem aktuellen Stand der Java Virtual-Machine- Technologie sind. Einerseits werden wir iterativ Ansätze entwickeln, um die wesentlichen Nebenläufigkeitskonstrukte durch Werkzeuge zu unterstützen, die mit Hilfe einer Meta-Schnittstelle von den spezifischen Konstrukten abstra- hieren. Andererseits werden wir erforschen, wie eine solche Schnittstelle effizient implementiert werden kann, um es Programmierern zu erlauben, komplexe nebenläufige Systeme zu verstehen und dynamische Abläufe mit Hilfe eines sogenannten Time-Travelling-Debuggers nachzuvollziehen.
Moores Gesetz, nachdem sich die Leistung von Prozessoren alle 1,5 Jahre verdoppelt, ist an seine Grenze gekommen. Infolgedessen haben unsere Computer und Smartphones statt einem eher 4 aber immer öfter 8 oder 16 Prozessoren. Um diese Prozessoren zu nutzen, werden Programme parallelisiert, indem Teile auf unterschiedlichen Prozessoren gleichzeitig laufen. Die Parallelisierung bringt aber neue Probleme. Die Wechselwirkung zwischen parallelen Prozessen ist inherent nichtdeterministisch. Fehler treten oft sporadisch auf und sind meist nur schwer reproduzierbar, da sie sich nur bei ganz bestimmten Wechselwirkungen bemerkbar machen. Dazu kommt, dass es unterschiedliche Modelle zur Implementierung von Parallelität gibt, die immer häufiger in ein und demselben Programm kombiniert werden. Das Thema unserer Forschung war daher die Entwicklung einer neuartigen Software-Infrastruktur, mit der parallele Programme zur Laufzeit besser analysiert und sporadisch auftretende Probleme lokalisiert werden können. Die Idee hinter unserem Ansatz ist, das Verhalten der Programme und ihre Wechselwirkungen aufzuzeichnen und diese "Programmspuren" nachträglich zu analysieren. Die Herausforderung dabei war, unterschiedliche Parallelisierungsmodelle unter einen Hut zu bringen, d.h. ein einheitliches Aufzeichnungsverfahren für alle diese Modelle zu finden, das es einerseits erlaubt, parallele Programme so nachzuspielen, dass dieselben Wechselwirkungen wie bei der ursprünglichen Ausführung auftreten, andererseits diese Aufzeichnungen so kompakt und effizient wie möglich zu gestalten, so dass die Ausführung der Programme dadurch so wenig wie möglich gebremst wird. Dieser Record&Replay-Ansatz wurde erfolgreich umgesetzt und in 22 Publikationen in internationalen Fachzeitschriften und Konferenzen veröffentlicht. Die entwickelte Software-Infrastruktur und die darauf basierenden Werkzeuge wurden in einem Open Source Repository zur Verfügung gestellt und dienen nun anderen Forschern als Grundlage für weitere Untersuchungen. Die geforderte Effizienz wurde unter anderem durch neuartige dynamische Optimierungsverfahren erreicht. Um eine kontinuierliche Aufzeichnung lange laufender Programme zu gewährleisten, wurde ein Schnappschuss-Verfahren entwickelt, mit dem der Zustand eines Programms zu gewissen Zeitpunkten erfasst und abgespeichert werden kann, so dass die Analyse bei diesen Schnappschüssen beginnen kann, ohne frühere Programmspuren berücksichtigen zu müssen. Das Projekt war eine Kooperation zwischen der Johannes Kepler Universität Linz und der Freien Universität Brüssel. Während sich die Linzer Gruppe vor allem mit der effizienten Aufzeichnung paralleler Programme und ihrer anschließenden Analyse beschäftigte, forschte die Brüsseler Gruppe vor allem an Parallelisierungsmodellen und Analysewerkzeugen, um zum Beispiel parallele Programme vorwärts und rückwärts wieder abspielen und dabei analysieren zu können.
- Universität Linz - 100%
Research Output
- 109 Zitationen
- 39 Publikationen
- 2 Methoden & Materialien
- 2 Software
- 3 Disseminationen
- 1 Wissenschaftliche Auszeichnungen
-
2021
Titel Capturing High-level Nondeterminism in Concurrent Programs for Practical Concurrency Model Agnostic Record & Replay DOI 10.22152/programming-journal.org/2021/5/14 Typ Journal Article Autor Aumayr D Journal The Art, Science, and Engineering of Programming Link Publikation -
2019
Titel Asynchronous snapshots of actor systems for latency-sensitive applications DOI 10.1145/3357390.3361019 Typ Conference Proceeding Abstract Autor Aumayr D Seiten 157-171 Link Publikation -
2019
Titel Debugging support for multi-paradigm concurrent programs DOI 10.1145/3359061.3361074 Typ Conference Proceeding Abstract Autor Aumayr D Seiten 38-40 -
2016
Titel Efficient and thread-safe objects for dynamically-typed languages DOI 10.1145/3022671.2984001 Typ Journal Article Autor Daloze B Journal ACM SIGPLAN Notices Seiten 642-659 Link Publikation -
2016
Titel GEMs: shared-memory parallel programming for Node.js DOI 10.1145/3022671.2984039 Typ Journal Article Autor Bonetta D Journal ACM SIGPLAN Notices Seiten 531-547 Link Publikation -
2016
Titel Cross-language compiler benchmarking: are we fast yet? DOI 10.1145/2989225.2989232 Typ Conference Proceeding Abstract Autor Daloze B Seiten 120-131 -
2016
Titel Cross-language compiler benchmarking: are we fast yet? DOI 10.1145/3093334.2989232 Typ Journal Article Autor Marr S Journal ACM SIGPLAN Notices Seiten 120-131 Link Publikation -
2016
Titel Building efficient and highly run-time adaptable virtual machines DOI 10.1145/3093334.2989234 Typ Journal Article Autor Chari G Journal ACM SIGPLAN Notices Seiten 60-71 Link Publikation -
2016
Titel Building efficient and highly run-time adaptable virtual machines DOI 10.1145/2989225.2989234 Typ Conference Proceeding Abstract Autor Chari G Seiten 60-71 Link Publikation -
2017
Titel A Concurrency-Agnostic Protocol for Multi-Paradigm Concurrent Debugging Tools DOI 10.48550/arxiv.1706.00363 Typ Preprint Autor Marr S -
2017
Titel A Study of Concurrency Bugs and Advanced Development Support for Actor-based Programs DOI 10.48550/arxiv.1706.07372 Typ Preprint Autor Lopez C -
2017
Titel Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages, DLS 2017 DOI 10.1145/3133841 Typ Journal Article Link Publikation -
2016
Titel GEMs: shared-memory parallel programming for Node.js DOI 10.1145/2983990.2984039 Typ Conference Proceeding Abstract Autor Bonetta D Seiten 531-547 Link Publikation -
2016
Titel Towards Advanced Debugging Support for Actor Languages - Studying Concurrency Bugs in Actor-based Programs Typ Other Autor Marr S. Konferenz Work-in-progress Talk, AGERE! Workshop Link Publikation -
2016
Titel Towards Meta-Level Engineering and Tooling for Complex Concurrent Systems Typ Conference Proceeding Abstract Autor Gonzalez Boix E. Konferenz Arbeitstagung Programmiersprachen, ATPS'16 Seiten 91-95 Link Publikation -
2016
Titel Efficient and thread-safe objects for dynamically-typed languages DOI 10.1145/2983990.2984001 Typ Conference Proceeding Abstract Autor Daloze B Seiten 642-659 Link Publikation -
2018
Titel Efficient and deterministic record & replay for actor languages DOI 10.1145/3237009.3237015 Typ Conference Proceeding Abstract Autor Aumayr D Seiten 1-14 Link Publikation -
2018
Titel A Study of Concurrency Bugs and Advanced Development Support for Actor-based Programs DOI 10.1007/978-3-030-00302-9_6 Typ Book Chapter Autor Torres Lopez C Verlag Springer Nature Seiten 155-185 -
2018
Titel Parallelization of dynamic languages: synchronizing built-in collections DOI 10.1145/3276478 Typ Journal Article Autor Daloze B Journal Proceedings of the ACM on Programming Languages Seiten 1-30 Link Publikation -
2018
Titel Fully Reflective Execution Environments: Virtual Machines for More Flexible Software DOI 10.1109/tse.2018.2812715 Typ Journal Article Autor Chari G Journal IEEE Transactions on Software Engineering Seiten 858-876 Link Publikation -
2018
Titel A flexible framework for studying trace-based just-in-time compilation DOI 10.1016/j.cl.2017.07.005 Typ Journal Article Autor Vandercammen M Journal Computer Languages, Systems & Structures Seiten 22-47 Link Publikation -
2018
Titel Efficient and Deterministic Record & Replay for Actor Languages DOI 10.48550/arxiv.1805.06267 Typ Preprint Autor Aumayr D -
2017
Titel Fully-Reflective VMs for Ruling Software Adaptation DOI 10.1109/icse-c.2017.144 Typ Conference Proceeding Abstract Autor Chari G Seiten 229-231 -
2017
Titel A concurrency-agnostic protocol for multi-paradigm concurrent debugging tools DOI 10.1145/3170472.3133842 Typ Journal Article Autor Marr S Journal ACM SIGPLAN Notices Seiten 3-14 Link Publikation -
2017
Titel Garbage collection and efficiency in dynamic metacircular runtimes: an experience report DOI 10.1145/3170472.3133845 Typ Journal Article Autor Pimás J Journal ACM SIGPLAN Notices Seiten 39-50 -
2017
Titel A principled approach towards debugging communicating event-loops DOI 10.1145/3141834.3141839 Typ Conference Proceeding Abstract Autor Lopez C Seiten 41-49 Link Publikation -
2017
Titel A concurrency-agnostic protocol for multi-paradigm concurrent debugging tools DOI 10.1145/3133841.3133842 Typ Conference Proceeding Abstract Autor Marr S Seiten 3-14 Link Publikation -
2017
Titel Garbage collection and efficiency in dynamic metacircular runtimes: an experience report DOI 10.1145/3133841.3133845 Typ Conference Proceeding Abstract Autor Pimás J Seiten 39-50 Link Publikation -
2017
Titel Trace Register Allocation Policies DOI 10.1145/3132190.3132209 Typ Conference Proceeding Abstract Autor Eisl J Seiten 92-104 Link Publikation -
2017
Titel Applying Optimizations for Dynamically-typed Languages to Java DOI 10.1145/3132190.3132202 Typ Conference Proceeding Abstract Autor Grimmer M Seiten 12-22 Link Publikation -
2017
Titel Kóµpo? DOI 10.1145/3079368.3079378 Typ Conference Proceeding Abstract Autor Marr S Seiten 1-2 Link Publikation -
2017
Titel Toward Virtual Machine Adaption Rather than Reimplementation: Adapting SOMns for Grace Typ Other Autor Marr S. Link Publikation -
2017
Titel A Metaobject Protocol for Optimizing Application-Specific Run-Time Variability DOI 10.1145/3098572.3098577 Typ Conference Proceeding Abstract Autor Chari G Seiten 1-5 Link Publikation -
0
DOI 10.1145/2989225 Typ Other -
0
DOI 10.1145/2983990 Typ Other -
0
DOI 10.1145/3098572 Typ Other -
0
DOI 10.1145/3141834 Typ Other -
0
DOI 10.1145/3132190 Typ Other -
0
DOI 10.1145/3079368 Typ Other
-
2017
Link
Titel SOMns: A Platform for Research on Concurrent Programming Models and Tooling Typ Improvements to research infrastructure Öffentlich zugänglich Link Link -
2016
Link
Titel Are We Fast Yet Benchmark Suite DOI 10.1145/10.1145/2989225.2989232 Typ Improvements to research infrastructure Öffentlich zugänglich Link Link
-
2020
Link
Titel smarr/ReBench: 1.0.0 Foundations DOI 10.5281/zenodo.3782861 Link Link -
2019
Link
Titel SOMns: A Newspeak for Concurrency Research DOI 10.5281/zenodo.3270909 Link Link
-
2017
Link
Titel MoreVMs Workshop Series Typ Participation in an activity, workshop or similar Link Link -
2016
Link
Titel Virtual Machine Meetup Typ A talk or presentation Link Link -
2016
Link
Titel Meta: Workshop Series on Meta-Programming Techniques and Reflection Typ Participation in an activity, workshop or similar Link Link
-
2019
Titel 2nd place at the Student Research Competition (Graduate Category) at the SPLASH'19 Doctoral Symposium Typ Research prize Bekanntheitsgrad Continental/International