Lernprogramm: Profilermittlungsdaten analysieren

Ziele

Analysieren der durch Erstellung eines Java-Prozessprofils gewonnenen Daten unter Verwendung der Sichten zur Profilermittlung und Protokollierung in der Perspektive 'Profilermittlung und Protokollierung':

Erforderliche Zeit

Eine Stunde

Vorbereitende Schritte

Bevor Sie mit diesem Lernprogramm beginnen, müssen Sie:

  1. Die Eclipse-Plattform inklusive der Test and Performance Tools Platform (TPTP) implementieren.
  2. Halten Sie die Beispieldaten für die Profilermittlung (hcframe.jar) zum Import bereit. Die Datei sollte im folgenden Verzeichnis gespeichert werden:
    TPTP_installationsverzeichnis\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0

Beschreibung

In diesem Lernprogramm werden Sie die verschiedenen Sichten zur Profilermittlung und Protokollierung zum Analysieren der Beispielklasse PerformanceExample.class verwenden. In dem Beispiel wird ein Rahmen mit zwei Schaltflächen geöffnet.

Sie werden die folgenden Tasks durchführen:

  1. Öffnen der Perspektive 'Profilermittlung und Protokollierung' in der Workbench
  2. Erstellen eines Profils der Klasse PerformanceExample
  3. Analysieren der Profildaten

Verwenden Sie die Schalfläche 'Sichten aktualisieren' Eine Schaltfläche mit stilisiertem Symbol, um die Sichten der Anwendung zu aktualisieren, während die Anwendung überwacht wird.

Öffnen der Perspektive 'Profilermittlung und Protokollierung' in der Workbench

Klicken Sie im Menü Fenster auf Perspektive öffnen > Sonstige > Profilermittlung und Protokollierung.

Erstellen eines Profils der Klasse PerformanceExample

Um eine Profilermittlung für die Klasse 'PerformanceExample' durchzuführen, gehen Sie wie folgt vor:

  1. Klicken Sie auf das Dropdown-Menü Profil  Eine Schaltfläche mit stilisiertem Symbol und wählen Sie Profil aus. Der Dialog 'Profil starten' wird geöffnet.
  2. Klicken Sie Externe Java-Anwendung doppelt an, um eine neue Konfiguration zu erstellen.
  3. Wechseln Sie zur Registerkarte Haupt.
  4. Geben Sie org.eclipse.hyades.test.collection.framework.PerformanceExample in das Feld Klassenname ein.
  5. Klicken Sie JAR hinzufügen an, um die JAR hinzuzufügen, die diese Klasse enthält.
  6. Wählen Sie TPTP_installationsverzeichnis\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0\hcframe.jar aus.
  7. Klicken Sie Öffnen an. Die JAR wird hinzugefügt.
  8. Klicken Sie die Registerkarte Überwachung an. Auf dieser Registerkarte können Sie die Kriterien für die Profilermittlung angeben.
  9. Erweitern Sie auf der Seite 'Überwachung' den Knoten Java-Profilermittlung, wählen Sie Speicherbasisanalyse aus und aktivieren Sie das nebenstehende Markierungsfeld. Hierdurch werden speicherbezogene Informationen der Liste der Informationstypen hinzugefügt, die von der Anwendung erfasst werden sollen..
  10. Wählen Sie Ausführungszeitanalyse aus, und wählen Sie das nebenstehende Markierungsfeld aus. Wenn diese Option ausgewählt ist, können Sie die statistischen Sichten zum Analysieren zeitbezogener Informationen verwenden. Sie müssen grafische Details zur Ausführung erfassen, wenn Sie die Sichten 'Ausführungsablauf' und 'Methodenaufruf' verwenden wollen. Da Sie sich in diesem Beispiel mit allen Sichten zur Profilerstellung vertraut machen sollen, also auch mit den Sichten 'Ausführungsablauf' und 'Methodenaufruf', klicken Sie bei der Auswahl von Ausführungszeitanalyse auf Optionen bearbeiten und klicken Sie im Dialog 'Profilermittlungsoptionen bearbeiten' auf Grafikdetails für Ausführungsablauf anzeigen. Wählen Sie außerdem das Markierungsfeld Durch Filtergruppe ausgeschlossene Grenzwertklassen erfassen, und legen Sie die Tiefe für Grenzwertklasse auf 1 fest. Klicken Sie auf Fertig stellen.
  11. Die Filtergruppe für Profilermittlung ermöglicht Ihnen die Angabe einer Untergruppe für die Analyse. Dies ist sinnvoll, wenn Sie Klassen oder Pakete herausfiltern wollen, die nicht analysiert werden sollen.
    Wählen Sie den Datenkollektor Java-Profilermittlung aus, und klicken Sie auf Optionen bearbeiten. Der Dialog für Filtergruppen wird geöffnet. Klicken Sie unter Inhalt der ausgewählten Filtergruppe die Option Hinzufügen an, um Klassen oder Pakete hinzuzufügen, für die Sie Daten erfassen wollen. Der Dialog 'Filter hinzufügen' wird geöffnet.
  12. Um eine Profilermittlung für diese Klasse durchzuführen, geben Sie org.eclipse.hyades.test.collection.framework.* als Klasse ein.
  13. Geben Sie den Methodennamen als * an, um nur die zu diesem Beispiel gehörenden Methoden aufzunehmen.
  14. Klicken Sie auf OK. Das Filterkriterium wird der Inhaltsliste hinzugefügt.
  15. Um andere vorhandene Klassen aus der Liste des Filterinhalts auszuschließen, klicken Sie Einschließen unter der Spalte 'Regel' für die Klasse an, und ändern Sie die Angabe in Ausschließen.
  16. Klicken Sie auf Weiter, um zur Seite Grenzwerte zu gelangen. Diese Seite steuert die erfasste Datenmenge, entweder auf Grundlage der vergangenen Zeit oder auf Grundlage der Anzahl der Methodenaufrufe. Übernehmen Sie die Standardwerte. Klicken Sie auf Fertig stellen, um die Seite zu schließen und die Änderungen anzuwenden.
  17. Klicken Sie die Registerkarte Ziel an. 'ProfileProject' und 'DefaultMonitor' sind die Standardressourcen für die Profilermittlung, die zum Speichern von Daten aus dieser Profilermittlungssitzung verwendet werden können.
  18. Klicken Sie auf Profil.
  19. Die erforderlichen Profildaten werden erstellt und der Agent erscheint zusammen mit dem Prozess in der Sicht 'Profilmonitor'. 
  20. Aktivieren Sie die Anzeige von Überwachungen, indem Sie Verteiltes Layout auswählen, so wie in der folgenden Anzeigenerfassung dargestellt. Dadurch sehen Sie das Überwachungsprogramm, das Ihre Daten gruppiert, sowie das System, auf dem Sie die Workbench ausführen.

    Profilermittlungsüberwachung mit Ressourcenhierarchie und Dropdown-Menü zur Auswahl der Ressourcen, die ausgeblendet werden sollen

Analysieren der Profildaten

Anzeigen des Ausführungsverhaltens in einem bestimmten Zeitraum

Sie können die Ausführung der Anwendung mit Hilfe der Sicht und Tabelle 'Ausführungsablauf' untersuchen. Die Ausführung dieses Programms wird in dieser Sicht grafisch und im Tabellenformat dargestellt. In der Sicht 'Ausführungsablauf' wird auf der vertikalen Achse die Zeit angezeigt. Die Tabelle 'Ausführungsablauf' wird unter der Sicht 'Ausführungsablauf' geöffnet und führt sämtliche Threads und die durch die jeweiligen Threads aufgerufenen Methoden auf.

  1. Wählen Sie in der Sicht 'Profilermittlung - Überwachung' Ihre Überwachung aus, klicken Sie die rechte Maustaste an und wählen Sie Öffnen mit > Ausführungsablauf an, um die Sicht 'Ausführungsablauf' zu öffnen. Die Sicht 'Ausführungsablauf' wird geöffnet.
  2. Um eine bestimmte Methode zu untersuchen, klicken Sie die entsprechende Methode, um die Methode auswählen. Dadurch werden alle zugehörigen aufgerufenen Methoden gelb hervorgehoben. Die vertikale Länge des hervorgehobenen Bereichs deutet auf die Basiszeit der Methode hin. Den genauen Wert der Basiszeit sehen Sie in der Statuszeile.

     Sicht 'Ausführungsablauf' mit zwei Methoden

    Wenn Sie Ihren Cursor über ein Objekt in der Sicht bewegen, werden in der Statusleiste am unteren Ende des Fensters detaillierte Informationen angezeigt.

  3. Verwenden Sie zum Aktivieren des Cursors das Tool Vergrößern   Eine Schaltfläche mit stilisiertem Symbol. Zeigen und klicken Sie dann auf einen gewünschten Bereich, um ihn zu vergrößern. 

Hinweis: Um die Sichten während der Überwachung der Anwendung zu aktualisieren, klicken Sie die Schaltfläche Sichten aktualisieren Eine Schaltfläche mit stilisiertem Symbol an.

Identifizieren aktiver Threads

In der Sicht 'Ausführungsablauf' sind jedem Thread bestimmte Aktivitätszeiträume zugeordnet, in denen sich ein Überfluss an Methodenaufrufen erkennen lässt. In der symbolischen Darstellung ist die erste aufgerufene Methode ein Streifen, und die von dieser Methode anschließend aufgerufenen Methoden werden rechts daneben als Streifen dargestellt. Die Reihenfolge der Methodenaufrufe schreitet von links nach rechts fort; die aktiven Teile des Threads lassen sich durch diesen Fortschritt von links nach rechts ablesen.

Wenn Sie einen ganzen Bereich auswählen, der die Reihenfolge der Methodenaufrufe umschließt, wird in der Statuszeile die Basiszeit angezeigt, die zur Ausführung dieser Reihenfolge benötigt wurde. Sie können die Basiszeit ermitteln, die der Thread bereits aktiv ist, indem Sie die Differenz zwischen den folgenden Zeiten ermitteln:

  1. Zeigen Sie mit der Maus auf die obere horizontale Linie des ausgewählten gelben Bereichs, damit die entsprechende Basiszeit in der Statuszeile angezeigt wird.
  2. Zeigen Sie auf die untere Kante des gelben ausgewählten Bereichs (der den Ausführungszeitraum während der Ausführung der Methodensequenz abdeckt), und zeigen Sie die Basiszeit an diesem Punkt an.

Tipps

Identifizieren häufig aufgerufener Methoden

So identifizieren Sie häufig aufgerufene Methoden:

  1. Verwenden Sie das Vergrößerungstool  Eine Schaltfläche mit stilisiertem Symbol zum Vergrößern einer Methodenaufrufreihenfolge.
  2. Suchen Sie Streifen mit der gleichen Farbe im ausgewählten Bereich. Diese Streifen signalisieren Methoden des gleichen Klassenexemplars, die mehrere Male aufgerufen wurden.
  3. Prüfen Sie die Länge verschiedenfarbiger Streifen (von denen jeder eine Methode repräsentiert). Je länger der Streifen, desto länger die Ausführungszeit der jeweiligen Methode.

Garbage-Collection untersuchen

Im Normalfall lässt sich durch Untersuchen der Streifen in einem Benutzer-Thread in dieser Sicht nicht feststellen, ob die Garbage-Collection bereits für ein Objekt stattgefunden hat.

Gehen Sie folgendermaßen vor:

  1. Der Garbage-Collection-Thread ist standardmäßig ausgeblendet. Aktivieren Sie ihn, indem sie im Menü Kontext der Sicht Threads > GC auswählen.
  2. Prüfen Sie die Spalte ganz links in dieser Sicht. Diese Spalte ist für die Garbage-Collection reserviert und heißt 'GC-Thread'.
  3. Stellen Sie fest, ob sich in dieser Spalte ein einzelnes, dünnes Rechteck befindet. Das Rechteck befindet sich wahrscheinlich weit unterhalb der meisten Methodenaufrufe des Objekts. Das Rechteck wird in der Spalte 'GC-Thread' angezeigt, wenn die Garbage-Collection für ein Objekt stattgefunden hat.

Phasen der Programmausführung identifizieren

Initialisierungsphase identifizieren

  1. Verwenden Sie das Vergrößerungstool  Eine Schaltfläche mit stilisiertem Symbol zum Vergrößern der Methodenaufrufreihenfolge am Anfang des Haupt-Threads.
  2. Beachten Sie die Methoden, die mit -init- gekennzeichnet sind.
  3. Klicken Sie auf eine dieser Methoden. In der Statuszeile wird angezeigt, dass diese Methode am Initialisierungsprozess (dem Zuweisen von Werten und Variablen, die in der Anwendung verwendet werden) beteiligt ist.

Analysieren von Methoden mit der Sicht 'Methodenaufruf'

  1. Wählen Sie einen Monitor oder einen Agenten im Profilmonitor aus. Klicken Sie mit der rechten Maustaste, und wählen Sie dann die Option Öffnen mit > Ausführungsablauf aus. Die Sicht 'Ausführungsablauf' wird angezeigt.
  2. Wählen Sie die gewünschte Methode aus, klicken Sie die rechte Maustaste an und wählen Sie dann die Option Methodenaufruf anzeigen aus.
  3. Verwenden Sie das Vergrößerungstool  Eine Schaltfläche mit stilisiertem Symbol zum Vergrößern eines Anzeigebereichs.  Die Streifen sind nach Klasse farblich gekennzeichnet und über horizontale Linien verbunden, die die Methodenaufrufe darstellen.
  4. Wählen Sie eine Methode aus, indem Sie auf ihren Namen klicken. 
  5. Klicken Sie auf Sichten aktualisieren Eine Schaltfläche mit einem stilisierten Symbol, damit die aktuellen Daten angezeigt werden.
  6. Beachten Sie die Zeile:
    Statuszeile, in der der Methodenname und die Zahlen 1/1 angezeigt werden

    In dieser Zeile wird der Name der Methode gefolgt von n/m angezeigt, wobei n der momentan angezeigte Aufruf von den m Gesamtaufrufen der Methode ist.
  7. Klicken Sie auf Zurück  Eine Schaltfläche mit einem stilisierten Symbol und Weiter  Eine Schaltfläche mit einem stilisierten Symbol um alle Aufrufe der ausgewählten Methode (oder jede Nachricht für das ausgewählte Objekt) anzuzeigen. Der Bruch in der Symbolleiste wird entsprechend mit der aktuellen Aufrufnummer aktualisiert.

Finden eines Methodenaufrufers

Um den Ursprung eines Methodenaufrufs zu bestimmen, fahren Sie in der Sicht 'Methodenaufruf' mit den folgenden Schritten fort:

  1. Um das aufrufende Modul der Methode anzuzeigen, klicken Sie die auf die Schaltfläche Aufrufendes Modul anzeigen  Eine Schaltfläche mit stilisiertem Symbol. Die Methode wird zusammen mit ihrem aufrufenden Modul (links von der Methode) angezeigt.
  2. Weitere Einzelheiten zum Aufrufer der Methode für jeden neuen Aufruf erhalten Sie, wenn Sie den Cursor über dem Streifen positionieren, der den Aufrufer in der Sicht darstellt. Die Informationen zum aufrufenden Modul werden dann in der Statuszeile angezeigt.
  3. Klicken Sie zum Anzeigen der Methode, die von einer ausgewählten Methode aufgerufen wird, auf die Schaltfläche Aufgerufene Methode anzeigen Eine Schaltfläche mit einem stilisierten Symbol