Show TOC

Performance-Hotspots mit der ABAP-Laufzeitanalyse ermittelnLocate this document in the navigation structure

Vorgehensweise

Mit der ABAP-Laufzeitanalyse können Sie Ihren Quelltext nach Hotspots in der Laufzeit oder beim Speicherverbrauch durchsuchen. Mit der Hotspot-Analyse können Sie schnell Prozeduren ausfindig machen, bei denen eine Optimierung oder ein Refactoring nötig sein könnte.

In diesem Abschnitt wird gezeigt, wie Sie das Hotspot Scanning der Laufzeitanalyse verwenden.

Laufzeit- und Speicher-Hotspots in Messungen suchen

Verfahren Sie zum Scannen von Laufzeit- oder Speicher-Hotspots wie folgt:

  1. Starten Sie die ABAP-Laufzeitanalyse, indem Sie entweder den Transaktionscode SAT eingeben oder Anfang des Navigationspfads System Nächster Navigationsschritt Hilfsmittel Nächster Navigationsschritt Laufzeitanalyse Nächster Navigationsschritt Ausführen Ende des Navigationspfads wählen.

  2. Geben Sie eine Variante an, für welche die Aggregation auf Keine gesetzt ist.

    Die resultierenden 'ABAP Trace'-Messdatensätze erstellen einzelne Traces pro Ereignis, so dass Sie nach bestimmten ABAP-Anweisungen suchen können.

    Wenn Sie nach Speicher-Hotspots scannen, geben Sie in der Variante die Option Speicherverbrauch messen an.

    Optional können Sie das Trace selbst ein- bzw. ausschalten. Dies bietet sich an, wenn Sie den Teil eines interaktiv gestarteten Programms bzw. einer Transaktion kennen, für den Sie ein Trace erstellen möchten. Sie können das Trace dann auf den entsprechenden Programm- bzw. Transaktionsteil einschränken.

  3. Starten Sie die nicht aggregierte Messung (ABAP Trace) mit Hilfe einer der drei Laufzeitanalyse-Startmethoden.

  4. Zeigen Sie das Trace nach Beendigung an, sofern es nicht automatisch angezeigt wird.

    Sie befinden sich auf dem Register Desktop 1, das standardmäßig für die Performance-Analyse eingerichtet ist.

    Wechseln Sie zum Register Desktop 2. Dort finden Sie Werkzeuge zur Analyse des Programmflusses, die Aufrufhierarchie und das Werkzeug Verarbeitungsblöcke.

  5. Scannen Sie die Messung nach Laufzeit- oder Performance-Hotspots. Wechseln Sie zu dem Werkzeug Verarbeitungsblöcke. Wählen Sie Kritische Verarbeitungsblöcke.

    Die Laufzeitanalyse öffnet ein Dialogfenster zum Anpassen des Hotspot-Scans.

  6. Entscheiden Sie, welchen der drei Scans Sie verwenden möchten.

    Sie können die Scans folgendermaßen verwenden:

    • Anteil an der Gesamtlaufzeit (Brutto): Finden Sie heraus, wo Ihr Programm die meiste Zeit benötigt.

      Der Scan kennzeichnet die Verarbeitungsblöcke (Methode, Funktionsbaustein, Aufrufe von Unterprogrammen und dergleichen) mit der zwischen Anfang und Ende abgelaufenen Zeit (Bruttolaufzeit), sobald diese die von Ihnen angegebene Obergrenze überschreitet.

    • Anteil an der Gesamtlaufzeit (Netto): Suchen Sie nach den Verarbeitungsblöcken, in denen Ihr Programm die meiste Laufzeit benötigt.

      Der Scan kennzeichnet die Verarbeitungsblöcke, die sehr viel Nettolaufzeit benötigten, ohne die anderen Verarbeitungsblöcke zu berücksichtigen, die innerhalb dieser Blöcke aufgerufen werden.

      Beginnen Sie mit einem hohen Wert im Feld Grenzwert, zum Beispiel mit 20%. So können Sie schnell sehen, ob es Blöcke mit sehr hohem Verbrauch an Nettolaufzeit gibt.

      Hinweis

      Die Bruttolaufzeit entspricht der abgelaufenen Zeit zwischen Anfang und Ende eines Verarbeitungsblocks. Die Nettolaufzeit ist normalerweise hilfreicher, da sie die in anderen Verarbeitungsblöcken verbrauchte Laufzeit nicht berücksichtigt. Die Nettolaufzeit ist nur die Zeit, die direkt in einem Verarbeitungsblock zur Verarbeitung von Quelltext benötigt wird.

    • Speicherzuwachs im Verarbeitungsblock: Suchen Sie nach Verarbeitungsblöcken, die auffallend viel Speicher verbrauchen. Die Laufzeitanalyse misst den verbrauchten Speicher am Anfang und am Ende eines Verarbeitungsblocks. Änderungen beim Speicherverbrauch während der Ausführung eines Verarbeitungsblocks können somit berechnet werden.

      Der Scan kennzeichnet die Verarbeitungsblöcke, die mit den von Ihnen analysierten speicherbezogenen Problemen zu tun haben können.

    Das Werkzeug Verarbeitungsblöcke kennzeichnet alle beim Scannen gefundenen Verarbeitungsblöcke mit roter Farbe. Es öffnet auch den Aufrufstack für jeden dieser Verarbeitungsblöcke.

  7. Sobald Sie Speicher- oder Laufzeit-Hotspots gefunden haben, verwenden Sie die anderen Werkzeuge der Laufzeitanalyse, um sie zu analysieren.

    Warum ein bestimmter Verarbeitungsblock viel Nettolaufzeit oder Speicher verbraucht, können Sie wie folgt herausfinden:

    • Zeigen Sie mit der Laufzeitanalyse nur Trace-Sätze an, die mit einem Hotspot zu tun haben. Hierzu positionieren Sie im Werkzeug Verarbeitungsblöcke den Cursor auf den Hotspot. Dann wählen Sie Auf Teilbereich einschränken aus der Symbolleiste des Werkzeugs Verarbeitungsblöcke.

      Das Laufzeitanalysewerkzeug zeigt jetzt nur Trace-Sätze an, die den Hotspot betreffen.

      Mit diesen Trace-Sätzen können Sie jetzt so arbeiten, als handle es sich um die gesamte Messung. Sie können zum Beispiel in dem Hotspot-Verarbeitungsblock wieder nach Hotspots suchen. In dem Werkzeug Aufrufhierarchie oder Zeiten können Sie die Verarbeitung in dem Hotspot auch im Detail überprüfen. In dieser Detailanzeige ist es unerheblich, wo die Sätze des Hotspots beginnen oder enden.

    • Wechseln Sie in das Werkzeug Aufrufhierarchie oder Zeiten, um den detaillierten Trace der Verarbeitung in dem Hotspot anzuzeigen. Wählen Sie den Hotspot aus und wählen Sie aus dem Kontextmenü die Funktion, die Sie verwenden möchten.

      Beachten Sie, dass sich die Nettolaufzeit, die Ihnen angezeigt wird, bei dem Werkzeug Verarbeitungsblöcke und bei den anderen Werkzeugen unterscheidet. Dies ist deshalb so, weil die Werkzeuge Aufrufhierarchie und Zeiten viel detailliertere Messdaten zur Verfügung stellen. Die Nettolaufzeit des Hotspots wird deshalb auf die untergeordneten Trace-Sätze des Hotspots aufgeteilt.

    • Springen Sie in den Quelltext aus den detaillierten Sätzen in dem Werkzeug Aufrufhierarchie oder Zeiten. Sie können den Quelltext analysieren, um zu verstehen, warum einzelne Operationen in der Messung viel Laufzeit oder Speicher verbrauchen.

      Sie können auch Breakpoints oder Watchpoints setzen, wenn Sie das Problem im Debugger nachstellen möchten.

Probieren Sie es aus: Suchen Sie nach Hotspots im Object Navigator (Transaktion SE80)

Im Object Navigator (Transaktion SE80) der ABAP Workbench kann das Expandieren des Entwicklungspakets BASIS länger dauern als erwartet. Es kann bis zu zwei Sekunden dauern bis sich die zweite Stufe der BASIS-Hierarchie öffnet.

Diese kleine Performance-Problem bietet ein gutes Beispiel für eine Performance-Analyse in der Praxis.

Um die verbesserungsfähige Performance zu analysieren, wenden Sie das obige Verfahren auf die folgende Funktion an.

  1. Starten Sie die Transaktion SE80 mit der Methode Trace im Dialog ausführen der Transaktion SAT.

    Verwenden Sie eine Variante, in der Sie die Option Explizites Ein- und Ausschalten der Messung ausgewählt haben.

  2. Setzen Sie die Auswahlfelder auf der linken Seite auf Paket und BASIS.

  3. Schalten Sie den Trace ein, messen Sie die Operation Alle Knoten expandieren (Drucktaste in der Anwendungsfunktionsleiste), und schalten Sie den Trace wieder aus.

  4. Zeigen Sie den Trace an.

Tipps zur Durchführung der Analyse:

  • Suchen Sie nach Hotspots, die 20% oder mehr der Nettolaufzeit der gemessenen Operation verbrauchen.

  • Schauen Sie in den Quelltext der gefundenden Hotspots. Der hohe Ressourcenverbrauch ist höchstwahrscheinlich auf eine geschachtelte Schleifenkonstruktion im Quelltext zurückzuführen.