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:
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 filter_list, 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 close, 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:
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:
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:
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.
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:
Hier ist dieselbe Grafik mit einer Markierung für die Funktion baz
abgebildet:
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
:
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:
Nächste Schritte
- Fokussieren Sie das Flame-Diagramm auf eine Funktion.
- Historische Trends ansehen
- Profile vergleichen
- Profildaten herunterladen