Ablaufbeobachtung in einer opensource virtual machine Diplomarbeitsthema von David Lauterbach
Gliederung Einführung ins Thema Aktuelle Techniken / Algorithmen Beispiel Ziel der Diplomarbeit Implementierungsidee Auswertung / Evaluation
Einführung ins Thema IT-Firmen immer mehr unter Zeitdruck > Qualitätseinbußen durch Quantitätsdruck Applikationen immer größer/komplexer > Fehlersuche immer schwieriger Zeit für Fehlersuche kostet Geld Ausgleichzahlungen/Strafe für Ausfall
Aktuelle Techniken Fehlersuchetools: Profiler: Finden von Speicherlecks Optimierung der Performance Vertex-Profiling Edge-Profiling
Aktuelle Techniken Debugger: Coredump: Anzeige der letzten Befehle/Variablenwerte vor der fehlerhaftenTerminierung Stacktrace Coredump: Anzeige der Registerwerte vor Absturz des Systems
Algorithmen Vertex – Profiling : Edge – Profiling : Program-Tracing: Knuth und Stevenson (1973) Edge – Profiling : minimaler Spannbaum Program-Tracing: Ramamoorthy, Kim und Chen (1975) Sergej Alekseev (2006) Ramamoorthy, Kim und Chen (1975) -> Edge – Tracing wobei der Quellcode modifiziert wird Sergej Alekseev (2006) -> Vertex – Tracing ohne Codeänderung
Ablaufgraph (graphisch)
Rekonstruktion (Knuth-Stevenson) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (Knuth-Stevenson) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (Knuth-Stevenson) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (Knuth-Stevenson) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (SetEvents) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (SetEvents) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (SetEvents) Instrumentieren des Programmablaufgraphen:
Rekonstruktion (SetEvents) Instrumentieren des Programmablaufgraphen:
Ziel der Diplomarbeit Neues Verfahren für automatische Ablaufprotokollierung in einer Laufzeitumgebung kompletten Rekonstruktion des Programmablaufes Ohne Verwendung von Zusatzprogrammen Zur Laufzeit Anspruch: keine Änderung des Quellcode Laufzeit nicht stark beeinflußt
Nachweis durch Implementierung Graph ist gegeben durch java bytecode Erweitern oder modifizieren des Instruktionssets von openjdk (https://openjdk.dev.java.net/) Programmiersprache C/C++ Versionskontrollsystem subversion (https://openjdk.dev.java.net/svn/openjdk/)
Integration des neuen stack trace Auszug aus hotspot/src/share/vm/interpreter/bytecodes.hpp „class Bytecodes: AllStatic { public: enum Code { _illegal = -1, // Java bytecodes _breakpoint = 202, // 0xca“ Nachhaltige Änderung des Bytecodes Z.B. durch Änderung bestehender BCs oder Hinzufügen eines neuen BCs -Eventhandler an den Bytecode anbinen
Performanzauswertung Benchmark durch Zeitvergleich: Benötigte Zeit des Klassenladers : ohne Markierung mit Knuth-Stevenson Algorithmus mit SetEvents Algorithmus