Upload
ilse-acker
View
215
Download
0
Embed Size (px)
Citation preview
Ablaufbeobachtung in einer opensource virtual machine
Diplomarbeitsthema von David Lauterbach
Gliederung
1. Einführung ins Thema2. Aktuelle Techniken / Algorithmen 3. Beispiel4. Ziel der Diplomarbeit5. Implementierungsidee6. 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:• Anzeige der letzten Befehle/Variablenwerte
vor der fehlerhaftenTerminierung• Stacktrace
– Coredump:• Anzeige der Registerwerte vor Absturz des
Systems
Algorithmen
• Vertex – Profiling :– Knuth und Stevenson (1973)
• Edge – Profiling : – minimaler Spannbaum
• Program-Tracing:– Ramamoorthy, Kim und Chen (1975) – Sergej Alekseev (2006)
Ablaufgraph (graphisch)S
1
E
2
4
7
3
5
6
Rekonstruktion (Knuth-Stevenson)• Instrumentieren des Programmablaufgraphen:
S
1
E
2;5;7
4
3
6
Rekonstruktion (Knuth-Stevenson)• Instrumentieren des Programmablaufgraphen:
S
1
E
2;5;7
4
3
6
Rekonstruktion (Knuth-Stevenson)• Instrumentieren des Programmablaufgraphen:
S
1
E
2;5;7
4
3
6
Rekonstruktion (Knuth-Stevenson)• Instrumentieren des Programmablaufgraphen:
S
1
E
2
4
7
3
5
6
Rekonstruktion (SetEvents)• Instrumentieren des Programmablaufgraphen:
S
1
E
2
4
7
3
5
6
Rekonstruktion (SetEvents)• Instrumentieren des Programmablaufgraphen:
2
4
3
Rekonstruktion (SetEvents)• Instrumentieren des Programmablaufgraphen:
S
1
E
2
4
7
3
5
6
Rekonstruktion (SetEvents)• Instrumentieren des Programmablaufgraphen:
S
1
E
2
4
7
3
5
6
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
Performanzauswertung
• Benchmark durch Zeitvergleich:• Benötigte Zeit des Klassenladers :
– ohne Markierung– mit Knuth-Stevenson Algorithmus – mit SetEvents Algorithmus