Ablaufbeobachtung in einer opensource virtual machine Diplomarbeitsthema von David Lauterbach

Preview:

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

Recommended