Nehmen Sie an der Umfrage „State of DevOps 2021“ teil und gestalten Sie die Zukunft von Software mit.

Flame-Diagramm filtern

Mit Cloud Profiler können Sie Filter hinzufügen, um zu steuern, wie die Informationen in den ausgewählten Profilen angezeigt werden. Sie können beispielsweise einen Filter hinzufügen, um bestimmte Frames oder Aufrufstacks auszublenden. Durch das Hinzufügen und Entfernen von Filtern wird der Satz ausgewählter Profile nicht geändert.

Jeder Filter wird durch eine vordefinierte FILTER-OPTION zusammen mit einem benutzerdefinierten VALUE angegeben:

[FILTER-OPTION] : [VALUE]

Jeder Filter, den Sie hinzufügen, wird in der Filterleiste angezeigt. Bei diesem Beispiel gibt es einen Filter, der Metric : Bytes heißt:

Screenshot: Filter mit der Option "Messwert" und "Byte-Wert" wird angezeigt

Profiler erstellt automatisch einen Filter mit einer FILTER-OPTION von Metric und einem Wert (VALUE), der auf dem von Ihnen ausgewählten Profiltyp basiert. Für einige Profiltypen können Sie VALUE ändern. Dieser Filter lässt sich nicht entfernen.

Mit einer der folgenden Methoden können Sie einen Filter hinzufügen:

  • Klicken Sie auf Filter , wählen Sie eine Option aus der Liste aus und geben Sie dann den Wert ein.
  • Klicken Sie in der Filterleiste auf den grauen Text Profildatenfilter hinzufügen und geben Sie dann die Filteroption und den Wert ein.
  • Bei den Filteroptionen Fokus, Ab Frame anzeigen und Stacks anzeigen können Sie den Zeiger auch auf dem Frame positionieren und dann die Option aus der Kurzinfo des Frames auswählen.

Klicken Sie im Filter auf Schließen , um einen Filter zu entfernen.

Beim Vorbereiten der anzuzeigenden Daten sucht Profiler nach Übereinstimmungen zwischen einem Frame und einem Filter. Bei einer Übereinstimmung verwendet Profiler die FILTER-OPTION, um zu bestimmen, welche Aktion ausgeführt werden soll. Ein Frame stimmt mit dem Filter überein, wenn der Funktionsname des Frames oder der Dateiname der Quelldatei der Funktion VALUE enthält. Beim Vergleich wird die Groß-/Kleinschreibung berücksichtigt. Wenn der Filter beispielsweise Hide frames : oo lautet, werden Frames mit den Funktionen foo, foo1 und busyloop aus dem Flame-Diagramm ausgeblendet.

Messwert

Verwenden Sie den Filter Metric (Messwert), um den Aggregationsmodus des Profiltyps festzulegen. Wenn Sie beispielsweise den Profiltyp Heap auswählen, können Sie die Daten entweder in Form von Byte oder Objekten visualisieren.

Die für den Filter Metrik verfügbaren Optionen hängen von der Programmiersprache und dem ausgewählten Profiltyp ab:

  • Für Profile vom Typ CPU-Zeit kann nur die CPU-Zeit ausgewählt werden.
  • Für Profile vom Typ Heap stehen folgende Optionen zur Auswahl:

    • Byte
    • Objekte
  • Für Profile vom Typ Zugewiesener Heap stehen folgende Optionen zur Auswahl:

    • Zugewiesene Byte gesamt
    • Zugewiesene Objekte gesamt
  • Für Profile vom Typ Echtzeit stehen folgende Optionen zur Auswahl:

    • Anzahl
    • Echtzeit
  • Für Profile vom Typ Threads kann nur Goroutine ausgewählt werden.

  • Für Profile vom Typ Konflikt stehen folgende Optionen zur Auswahl:

    • Verzögerung
    • Konflikte

Weitere Informationen zu den verschiedenen Arten von Profilmesswerten finden Sie unter Konzepte der Profilerstellung.

In dem folgenden Screenshot wird beispielhaft der CPU-Verbrauch eines Programms aufgezeigt:

Screenshot: Profiler-Grafik für die CPU-Nutzung

Hier sehen Sie, dass die Routine busyloop sowohl foo1 als auch foo2 aufruft, die beide verschiedene andere Routinen aufrufen. Mit zusätzlichen Filtern können Sie das Diagramm weiter einschränken, sodass nur die gewünschten Daten dargestellt werden.

Fokus

Bei Verwendung des Filters Fokus wählen Sie eine einzelne Funktion aus, um im Flame-Diagramm alle Codepfade zu und von dieser Funktion darzustellen.

Ausführliche Informationen zum Fokussieren des Diagramms und zum Interpretieren der Ergebnisse finden Sie unter Diagramm fokussieren.

Stacks anzeigen

Bei Verwendung des Filters Stacks anzeigen sehen Sie alle Aufrufstacks, die einen Frame enthalten, der mit dem Filterwert übereinstimmt. Alle anderen Aufrufstacks werden ausgeblendet. Die Grafik zeigt die Aufrufer und Aufgerufenen der Funktion, also alle Elemente, welche die übereinstimmende Funktion aufrufen, und alle Elemente, die von dieser Funktion aufgerufen werden.

Mit diesem Filter wird ein Teilstringtest durchgeführt, bei dem die Groß- und Kleinschreibung berücksichtigt wird. Eine Übereinstimmung tritt auf, wenn die Frame-Funktion den Filterwert enthält.

Wenn Sie das Diagramm der CPU-Nutzung aus dem vorherigen Beispiel so einschränken möchten, dass nur Aufrufstacks mit der Funktion foo1 zu sehen sind, legen Sie den Filter Stacks anzeigen auf foo1 fest:

Screenshot: Profiler-Grafik für die CPU-Nutzung, gefiltert mit "Stacks anzeigen"

Stacks ausblenden

Sie können alle Aufrufstacks ausblenden, die einen Frame enthalten, der dem Filterwert entspricht. Dieser Filter ist oft nützlich, wenn Sie Stacks ausblenden möchten, die für Sie nicht von Interesse sind. Bei Java-Anwendungen ist es beispielsweise üblich, einen Hide stacks: unsafe.park-Filter hinzuzufügen.

Mit diesem Filter wird ein Teilstringtest durchgeführt, bei dem die Groß- und Kleinschreibung berücksichtigt wird. Eine Übereinstimmung tritt auf, wenn die Frame-Funktion den Filterwert enthält.

Ab Frame anzeigen

Verwenden Sie den Filter ab Frame anzeigen, um alle Aufrufstacks ab dem Frame anzeigen zu lassen, der dem Filterwert entspricht. Alle anderen Aufrufstacks werden ausgeblendet. Die so erstellte Grafik zeigt die Aufrufstacks von der angegebenen Funktion aus in absteigender Reihenfolge. Dieser Filter ist nützlich, wenn Ihre Funktion von vielen Stellen aus aufgerufen wird und Sie den Gesamtverbrauch sehen möchten, der dieser Funktion zuzuschreiben ist.

Wenn Sie beispielsweise nur Aufrufe darstellen möchten, die von der Funktion baz ausgehen, legen Sie den Filter Ab Frame anzeigen auf baz fest:

Screenshot: Profiler-Grafik für die CPU-Nutzung, gefiltert mit "Ab Frame anzeigen"

Mit diesem Filter wird ein Teilstringtest durchgeführt, bei dem die Groß- und Kleinschreibung berücksichtigt wird. Eine Übereinstimmung tritt auf, wenn die Frame-Funktion den Filterwert enthält.

Frames ausblenden

Verwenden Sie den Filter Frames ausblenden, um alle Frames auszublenden, die dem Filterwert entsprechen. Im Diagramm werden die Aufrufer der Funktion dargestellt und alle von der Funktion Aufgerufenen zusammengefasst. Dies ist nützlich, um Frames aus dem Diagramm zu entfernen, die für Sie nicht von Interesse sind.

Wenn Sie beispielsweise die Frames für foo1 und foo2 ausblenden möchten, legen Sie den Filter Frames ausblenden auf foo fest. Dann stimmen sowohl foo1 als auch foo2 mit dem Filter überein, sodass beide Funktionen aus dem Diagramm entfernt werden. Da beide Funktionen die Routinen bar und baz aufrufen, werden die Daten für jede dieser Routinen aggregiert.

Screenshot: Profiler-Grafik für die CPU-Nutzung, gefiltert mit "Frames ausblenden"

Mit diesem Filter wird ein Teilstringtest durchgeführt, bei dem die Groß- und Kleinschreibung berücksichtigt wird. Eine Übereinstimmung tritt auf, wenn die Frame-Funktion den Filterwert enthält.

Markieren

Verwenden Sie den Filter Markieren, um alle Frames zu markieren, deren Funktionsnamen dem Filterwert entsprechen. Für die Funktion gilt weiterhin der normale Farbmodus, allerdings werden die Aufrufstacks in dezenteren Farbtönen dargestellt.

Hier sehen Sie beispielsweise eine Grafik ohne Markierung:

Screenshot: Profilgrafik ohne Markierung

Hier ist dieselbe Grafik mit einer Markierung für die Funktion baz abgebildet:

Screenshot: Profilgrafik mit Markierung

Mit diesem Filter wird ein Teilstringtest durchgeführt, bei dem die Groß- und Kleinschreibung berücksichtigt wird. Eine Übereinstimmung tritt auf, wenn die Frame-Funktion den Filterwert enthält.

Farbmodus

Die Farbe eines Frames entspricht standardmäßig dem Paket der Funktion, sofern möglich. Wenn keine Paketinformationen verfügbar sind, wie beispielsweise bei Node.js, werden die Namen der Quelldateien zum Kolorieren der Funktionsblöcke verwendet. In der Standardeinstellung bedeutet eine Änderung der Framefarbe eines Aufrufstacks einen Übergang von einem Paket zu einem anderen. Die Standardoption ist der Filter Farbmodus mit dem Wert Name.

Fügen Sie den Filter Farbmodus mit dem Wert Gesamt hinzu, um die Frames im Flame-Diagramm nach dem Verbrauch einer Funktion und ihrer untergeordneten Elemente einzufärben. Beim Aufrufen einer Funktion über mehrere Aufrufstacks wird die Farbe anhand des Messwertanteils für alle Aufrufstacks bestimmt. Zum Beispiel sind main und busyloop rot dargestellt. Diese beiden Frames verbrauchen die meiste CPU-Zeit. Die Frames foo2 und baz sind tieforange dargestellt, während der Frame foo1 in einem helleren Orange dargestellt ist. Die Frames bar und load sind im hellsten Orangeton dargestellt. Dieses Flame-Diagramm zeigt, dass foo2 mehr CPU-Zeit verbraucht als foo1, aber weniger als busyloop:

Farbmodus "Gesamt"

Fügen Sie den Filter Farbmodus mit dem Wert Self hinzu, um die Frames im Flame-Diagramm nach dem Messwertanteil der Funktion einzufärben, den Messwertanteil der untergeordneten Elemente jedoch auszuschließen. Dieser Filter zeigt beispielsweise, dass die Funktion baz mehr CPU-Zeit beansprucht als jede andere Funktion:

Screenshot: Farbmodus "Self"

Nächste Schritte