Effektive Kombination von Softwarefehlertoleranzmechanismen mittels eines Recovery Modells
Zusammenfassung der Projektergebnisse
Zusätzliche Selbstüberprüfungen (Checks) eines Programmes sind im Kontext von Server- und Cloud-Applikationen notwendig, um eine hohe Servicequalität zu erreichen und Ausfälle zu vermeiden. Ursachen für fehlerhafte Ausführungen sind Fehler in der Implementierung und das Auftreten von Fehlern, die nicht erwartet wurden. Die nebenläufige Ausführung bietet eine Möglichkeit, Ressourcen von Server- und Cloud-Instanzen besser zu nutzen, birgt jedoch gleichzeitig die Gefahr weiterer Fehler, da Nebenläufige Prozesse schwieriger zu analysieren sind. Eine weitere Fehlerquelle sind Hardwarefehler (z.B. Bitflips) verursacht durch alternde Hardware und kosmische Strahlung. Diese können für falsche Berechnung und Korruption von Daten sorgen. Diese Probleme sprechen für die Benutzung von Laufzeit-Checks. Dennoch nutzen Checks wichtige Ressourcen und deren Einsatz sollte balanciert erfolgen. Ziel des Projektes war es, verschiedene Checks ressourcenschonender einzusetzen. Dazu wurden z.B. Checks für die Detektierung von Hardware-Fehlern nur auf einen stark begrenzten Bereich innerhalb der untersuchten Software eingesetzt und trotzdem nur geringfügig zusätzliche Ressourcen in Anspruch genommen bei gleichzeitig erhöhter Fehlertoleranz. Die automatische Analyse mittels symbolischer Ausführung, um so mögliche Implementierungsfehler schon vorzeitig zu erkennen, stellt eine Herausforderung dar. Die Einsetzbarkeit ist stark abhängig von der Komplexität und Umfang der Software. Aus diesem Grund haben wir versucht, Möglichkeiten aufzuzeigen, den Umfang zu reduzieren. Mittels atomarer Fehlerbehandlung können Anwendungslogik und Fehlerbehandlungslogik besser getrennt werden, was den Einsatz von symbolischer Ausführung wahrscheinlicher macht. Wir haben aufgezeigt, wie atomare Fehlerbehandlung mit parallelem Exceptionhandling kombiniert werden kann. Atomizität und Isolation der atomarer Fehlerbehandlung schränkt die Menge an möglichen Nebenläufigkeiten von Code ein, was den Einsatz von Symbolic Execution auch in diesem Bereich möglich macht. Darüber hinaus haben wir Symbolic Execution für das Überprüfen von Bibliotheken für transaktionalen Speicher eingesetzt. Weiterhin haben wir Möglichkeiten aufgezeigt, wie Atomizität bei Interaktion mit dem Betriebssystem umgesetzt werden kann. Zur Beschleunigung von Transaktionalem Speicher und Fehlerbehandlung haben wir Hardware-Erweiterungen aufgezeigt.
Projektbezogene Publikationen (Auswahl)
- Brief announcement: Between all and nothing - versatile aborts in hardware transactional memory. In Proceedings of the Twenty-fifth Annual ACM Symposium on Parallelism in Algorithms and Architectures, SPAA ’13, pages 108–110, New York, NY, USA, 2013. ACM
Stephan Diestelhorst, Martin Nowack, Michael Spear, and Christof Fetzer
- Tm-dietlibc: A tm-aware real-world system library. In Parallel Distributed Processing (IPDPS), 2013 IEEE 27th International Symposium on, pages 1266–1274, May 2013
V. Smiljkovic, M. Nowack, N. Miletic, T. Harris, O. Unsal, A Cristal, and M. Valero
- Hardpaxos: Replication hardened against hardware errors. In Proceedings of the 33rd IEEE Symposium on Reliable Distributed Systems (SRDS’14), 2014
Diogo Behrens, Dmitrii Kuvaiskii, and Christof Fetzer
(Siehe online unter https://doi.org/10.1109/SRDS.2014.13)