Tracing unter L4/Fiasco€¦ · VAMPIR Visualisation and Analysis of MPI Resources Einsatzgebiet:...
Transcript of Tracing unter L4/Fiasco€¦ · VAMPIR Visualisation and Analysis of MPI Resources Einsatzgebiet:...
Tracing unter L4/Fiasco 111.04.2003
Tracing unter L4/Fiasco
Andreas Weigand
Großer Beleg
Tracing unter L4/Fiasco 211.04.2003
Überblick
� Einführung
� Entwurf und Implementation
� Tracing im Userland
� Tracing im Kern
� Messungen
Tracing unter L4/Fiasco 311.04.2003
DROPS
� Dresden Realtime Operating System
� Timesharing- und Echtzeitkomponenten
Tracing unter L4/Fiasco 411.04.2003
Derzeitiger Stand
� Eingeschränkte Debuggingmöglichkeiten
� Debugging mit printf()
� Kerndebugger JDB
� Profiling einzelner Programme
� Keine Visualisierung
Tracing unter L4/Fiasco 511.04.2003
Tracing allgemein
� Sammlung von Informationen
� Anwendung instrumentieren
� Entstandene Daten auswerten
� Visuelle Darstellung des Programmablaufs
� Erkenntnisse über Programmverhalten
� Verbesserung des Programms
Tracing unter L4/Fiasco 611.04.2003
VAMPIR
� Visualisation and Analysis of MPI Resources
� Einsatzgebiet: High Performance Computing
� VAMPIR-Primitive
� CPU ein Prozess oder Thread
� CLUSTER Sammlung von CPUs
� MESSAGE Nachrichten zwischen CPUs
Tracing unter L4/Fiasco 711.04.2003
Tracingmethoden
� Manuelles instrumentieren einer Anwendung
� Aufwändig
� Was ist interessant?
� Beispiel: Linux Tracing Toolkit
� Bibliotheken instrumentieren
� Mehrfachnutzung
� Beispiel: Vampirtrace MPI Library
Tracing unter L4/Fiasco 811.04.2003
Tracingmethoden (2)
� Automatisches instrumentieren
� Wenig Aufwand für den Nutzer
� gcc: -finstrument-functions
� Aber: Steuerung des Automatismus?
Tracing unter L4/Fiasco 911.04.2003
Tracing von Nutzerprogrammen
� Automatische Intrumentierung durch gcc
� Bibliothek mit
� Funktionen zur Tracingkontrolle
� gcc's Tracingfunktionen
� Tracepufferverwaltung
� Geringe Änderung am Programm
Tracing unter L4/Fiasco 1011.04.2003
Tracepuffer
� Ein Puffer pro L4-Thread
� Puffer werden geleert
� Wenn sie voll sind
� Auf Anforderung des Programms
� Programmende
Tracing unter L4/Fiasco 1111.04.2003
Kerntracing
� Aufzeichnung von Ereignissen, die für den Nutzeradressaum transparent sind
� Nachrichten (IPC)
� Kontextwechsel
� Instrumentierung von Kernfunktionen
� Erweiterung des Kerndebuggers
Tracing unter L4/Fiasco 1211.04.2003
Kerndebuggererweiterungen
� Export des JDB-Tracepuffers in den Nutzeradressraum
� Interrupterzeugung bei vollem Puffer
� Atomares erstellen von Tracerecords
� Neue Eventtypen
� Tracingkontrolle über int3-Interface
Tracing unter L4/Fiasco 1311.04.2003
Neue Eventtypen
� IPC-Tracing
� Bisher je ein Ereignis fürIPC-Eintritt und IPC-Ergebnis
� Jetzt nur noch ein Ereignis
� Datenmenge halbiert
� Eigener Pfad für IPC-Tracing
� Kontextwechsel
Tracing unter L4/Fiasco 1411.04.2003
Traceserver
� Weiterleitung der Kerntracepuffer
� Konfiguration der JDB-Tracingdienste
� Synchronisation der Anforderungen verschiedener Programme
Tracing unter L4/Fiasco 1511.04.2003
Datenauswertung
� Konvertierung in das VAMPIR-Format
� Rekonstruktion der Funktionsaufrufe aus Programmtracingdaten
� Symbolinformationen aus Binary herauslesen
� Funktionen gruppieren
� Eine VAMPIR-CPU pro instrumentierten Thread
� Threads eines Prozesses werden zu einem CLUSTER zusammengefasst
Tracing unter L4/Fiasco 1611.04.2003
Datenauswertung (2)
� Rekonstruktion von Nachrichten und Kontextwechseln aus Kerntracingdaten
� Zusätzliche CPU "others"
� Anzeige und Auswertung des Tracefiles mit VAMPIR
� Analyse des Programmverhaltens
Tracing unter L4/Fiasco 1711.04.2003
Messungen - Kern
Tracingart us Takte Kosten us Takte
Kein Tracing 6 821 - 6 841IPC Tracing 9 1308 487 40 5392Kontextwechsel 8 1149 327 45 6019Beides 12 1667 846 83 11123
Pentium 133, 64 MB Ram
Pingpong Benchmark, 100000 Zyklen
200000 IPC
Tracing unter L4/Fiasco 1811.04.2003
Programmtracing
us Takte TracingfunktionKeine Instrumentierung 6 806 -Instrumentiert, Kein Tracing 7 926 30 TakteInstrumentiert, Tracing 12 1638 208 Takte
� Geringer Overhead bei deaktiviertem Tracing
� 4 Aufrufe pro Pingpong Zyklus
Tracing unter L4/Fiasco 1911.04.2003
Programmtracing (2)
Kerntracing Datenübertragung us Takte
Nein Nein 12 1638Ja Nein 26 3475Nein Ja 25 3433Ja Ja 103 13772
� 38 MB Tracingdaten in 10 Sekunden
� 6 MB Trace von Pingpong
� 32 MB Kerntrace
� Problem: Netzwerkübertragung
Tracing unter L4/Fiasco 2011.04.2003
Tracing unter L4/Fiasco 2111.04.2003
Ausblick
� Bessere Datenübertragung
� Einschränkung der Tracingdatenmenge
� Steuerung der Instrumentierung durch gcc
Tracing unter L4/Fiasco 2211.04.2003
?