Share via


Threadansicht (Parallele Leistung)

Threadansicht ist die detaillierte und funktionsreiche Ansicht in die Parallelität Schnellansicht.Mithilfe dieser Ansicht können Sie ermitteln, ob die Threads ausführen oder aufgrund der Synchronisierung, e/A- oder einem anderen Grund blockiert werden.

Während der Analyse Profil untersucht die Parallelität Schnellansicht alle Betriebssystem Kontext wechseln Ereignisse für jeden Anwendungsthread der.Kontextwechsel können aus vielen Gründen, wie diese auftreten:

  • Ein Thread wird für einen Synchronisierungsprimitiven blockiert.

  • Das Quantum eines Threads läuft ab.

  • Von einem Thread erfolgt eine blockierende E/A-Anforderung.

Threads anzeigen weist eine Kategorie zu jedem Kontextwechsel, wenn ein Thread die Ausführung angehalten hat.Die Kategorien sind in der Legende in der linken unteren Teil der Ansicht angezeigt.Die Parallelität Schnellansicht kategorisiert Kontext wechseln Ereignisse nach bekannten blockieren APIs die Aufrufliste des Threads gesucht.Wenn es keine Call Stack Übereinstimmung, der Grund warten, die vom Windows wird verwendet. Jedoch die Windows Kategorie kann auf ein Implementierungsdetail beruhen und darf nicht die Absicht des Benutzers wider. Z. B. Windows meldet den Grund warten auf eine systemeigene slim Reader-/ Writersperre wie i/O anstelle der Synchronisierung blockiert. In den meisten Fällen können Sie die Hauptursache für ein blockieren-Ereignis durch Untersuchen der Aufruflisten, die Kontextwechsel Ereignisse entsprechen identifizieren.

Die Ansicht Threads zeigt auch die Abhängigkeiten zwischen Threads.Wenn Sie einen Thread, der an einem Synchronisierungsobjekt blockiert wird identifizieren, können Sie für den Thread, der es entsperrt ein, und Sie können die Aktivität in der Aufrufliste für diesen Thread an der Stelle untersuchen, wenn es eine Blockierung.

Wenn Threads ausgeführt werden, sammelt die Parallelität Schnellansicht Proben.In der Ansicht Threads können Sie analysieren, welcher Code während einem Segment Ausführung von einem oder mehreren Threads ausgeführt wird.Sie können auch überprüfen, blockieren Berichte und Berichte, die Aufrufliste Baum Ausführung profile.

Verwendung

Hier sind einige Möglichkeiten, wie Sie die Ansicht Threads verwenden können:

  • Identifizieren Sie die Gründe, warum die Benutzeroberfläche (UI) einer Anwendung nicht mehr reagiert während bestimmter Ausführungsphasen.

  • Die Zeitspanne blockieren aufgewendet hat Synchronisierung, e/A, Seitenfehler und andere Ereignisse zu identifizieren.

  • Identifizieren Sie den Grad der Störung durch andere Prozesse, die auf dem System ausgeführt werden.

  • Identifizieren Sie die Load-balancing Probleme für die parallele Ausführung.

  • Identifizieren Sie die Gründe für die Skalierbarkeit, die deshalb suboptimalen oder nicht vorhanden (z. B. die Leistung einer parallelen Anwendung nicht verbessert wird, wenn mehr logische Kerne verfügbar sind).

  • Verstehen Sie den Grad der Parallelität in der Anwendung um Parallelisierung zu erleichtern.

  • Verstehen der Abhängigkeiten zwischen Arbeitsthreads und kritischen Pfaden der Ausführung

Bestimmte Zeitintervalle und Threads untersuchen

Die Ansicht Threads zeigt eine Zeitachse.Sie können Zoomen und Schwenken innerhalb eines Schnittfensters in bestimmten Abständen und Threads der Anwendung zu untersuchen.Auf der x-Achse ist Zeit und auf der y-Achse sind mehrere Kanäle:

  • Zwei i/o-Kanäle für jedes Laufwerk auf dem System, ein Kanal für Lesevorgänge und eine für Schreibvorgänge.

  • Ein Kanal für jeden Thread im Prozess.

  • Marker-Kanäle, wenn Marker-Ereignisse in der Ablaufverfolgung vorhanden sind.Marker-Kanäle werden zunächst unter Thread-Kanäle, die diese Ereignisse generiert.

  • GPU-Kanäle.

Hier ist eine Abbildung der Ansicht Threads:

Threadansicht

Threadansicht

Zunächst werden die Threads in der Reihenfolge, in der sie erstellt wurden, sortiert, sodass der Hauptanwendungsthread wird.Die Sortieroption können in der oberen linken Ecke der Ansicht Sie Threads (z. B. durch die meisten Ausführung Arbeit) nach einem anderen Kriterium sortieren.

Sie können Threads, die nicht arbeiten ausgeführt werden, indem Sie ihre Namen in der Spalte auf der linken Seite und dann Ausblenden der Ausgewählte Threads ausblenden auf der Symbolleiste.Wir empfehlen Sie Threads ausblenden, die vollständig blockiert werden, weil ihre Statistiken irrelevant sind und die Berichte verstopfen können.

Um zusätzliche Threads in der aktiven Legende ausblenden zu identifizieren, wählen Sie die Pro Thread-Zusammenfassung Bericht über die Profilbericht Registerkarte.Dadurch wird das Ausführung Aufschlüsselung-Diagramm den Zustand des Threads für das aktuell ausgewählte Zeitintervall zeigt angezeigt.Einige Threads möglicherweise nicht angezeigt, bei bestimmten Vergrößerungen.In diesem Fall werden die Ellipsen auf der rechten Seite angezeigt.

Wenn Sie ein Intervall von Zeit und einige Threads darin ausgewählt haben, können Sie die Leistungsanalyse starten.

Analyse-Tools

Dieser Abschnitt beschreibt die Berichte und andere Analysetools.

Dd627193.collapse_all(de-de,VS.110).gifDetails zur Threadblockierung

Um Informationen über ein blockieren-Ereignis in einer bestimmten Region in einem Thread zu erhalten, positionieren Sie den Zeiger auf diese Region, um eine QuickInfo anzuzeigen.Es enthält Informationen wie z. B. Kategorie, Region, Startzeit, blockierende Dauer und eine blockierende API, sofern vorhanden.Wenn Sie den blockierenden Bereich auswählen, wird der Stapel zu diesem Zeitpunkt im unteren Bereich, zusammen mit den gleichen Informationen angezeigt, die in der QuickInfo angezeigt wird.Durch eine Untersuchung der Aufrufliste können Sie den Grund für das den Thread blockierende Ereignis bestimmen.Zusätzlicher Prozess und Threadinformationen finden Sie das Segment auswählen und durch Überprüfung der aktuellen Registerkarte.

Ein Pfad der Ausführung möglicherweise mehrere Ereignisse mit Verhaltensblockierung.Sie können durch blockierende Kategorie untersuchen, so dass Sie Problembereiche schneller finden können.Wählen Sie eine der blockierenden Kategorien nur in der Legende auf der linken Seite.

Dd627193.collapse_all(de-de,VS.110).gifAbhängigkeiten zwischen Threads

Die Parallelität Schnellansicht können Abhängigkeiten zwischen Threads im Prozess anzeigen, damit Sie feststellen können, was ein blockierter Thread versuchte, zu tun und lernen was andere Thread die Ausführung aktiviert.Um zu bestimmen, welcher Thread einen anderen Thread entsperrt, wählen Sie das relevante blockierende Segment.Wenn die Parallelität Schnellansicht entsperren Thread bestimmen können, zieht es eine Linie zwischen dem Aufheben der Blockierung Thread und das ausgeführte Segment, das das blockierende Segment folgt.Darüber hinaus die Blockierung Stapel Registerkarte zeigt die relevanten Aufrufliste.

Dd627193.collapse_all(de-de,VS.110).gifDetails zur Threadausführung

Im Diagramm Zeitachse eines Threads zeigen die grünen Segmente Wenn es Code ausgeführt wurde.Sie können detaillierte Informationen zu einem Segment Ausführung erhalten.

Wenn Sie einen Punkt in einem Segment Ausführung wählen, die Parallelität Schnellansicht sucht nach diesem Zeitpunkt in der entsprechenden Aufrufliste zeigt eine schwarze Einfügemarke oberhalb der ausgewählten Stelle im Segment Ausführung und zeigt die Aufrufliste selbst auf die den aktuellen Stapel Registerkarte.Sie können mehrere Punkte auf das Segment Ausführung auswählen.

HinweisHinweis

Die Schnellansicht Parallelität möglicherweise keine Auswahl in einem Segment Ausführung auflösen können.Dies geschieht meist, wenn die Dauer des Segments weniger als eine Millisekunde beträgt.

Wählen Sie ein Ausführungsprofil erhalten für alle (eingeblendet) Threads in den aktuell ausgewählten Zeitraum aktiviert, die Ausführung Schaltfläche in der aktiven Legende.

Dd627193.collapse_all(de-de,VS.110).gifZeitachsendiagramm

Im Zeitachsendiagramm wird die Aktivität aller Threads im Prozess sowie aller physischen Laufwerke auf dem Hostcomputer angezeigt.Es zeigt auch die GPU-Aktivität und Marker-Ereignisse.Sie können vergrößern, um mehr Details oder eine längere Zeitspanne anzeigen heraus.Sie können auch die Punkte im Diagramm, um detaillierte Informationen zu Kategorien, Startzeit, Dauer und Call-Stack-Staaten auswählen.

Im Diagramm Zeitachse gibt eine Farbe den Status eines Threads zu einem bestimmten Zeitpunkt.Beispielsweise Grün Segmente ausgeführt wurden, rote Segmente für die Synchronisation blockiert wurden, gelbe Segmente präemptiv und lila Segmente im Gerät e/A tätig waren.In dieser Ansicht können Sie das Gleichgewicht zwischen Threads untersuchen, die in einer parallelen Schleife oder gleichzeitige Vorgänge beteiligt sind.Wenn ein Thread länger als die anderen, möglicherweise die Arbeit nicht ausgeglichen.Diese Informationen können zur Verbesserung der Leistung des Programms, von der Arbeit unter den Threads gleichmäßig verteilen.

Wenn nur ein Thread Grün (ausführen) an einem Punkt in der Zeit ist, kann die app nicht vollständige Parallelität auf dem System nutzen.Können Sie das Zeitplan-Diagramm Abhängigkeiten zwischen Threads und die zeitlichen Beziehungen zwischen blockieren untersuchen und Threads blockiert.Um Threads zu ändern, wählen Sie einen Thread, und wählen Sie auf der Symbolleiste, die nach-oben oder nach-unten Sie-Taste.Wenn Threads ausblenden möchten, wählen Sie diese, und wählen Sie dann die Threads ausblenden Schaltfläche.

Dd627193.collapse_all(de-de,VS.110).gifProfilberichte

Unterhalb der Zeitachse ist Graph ein Timeline-Profil und ein Bereich, der Registerkarten für verschiedene Berichte.Die Berichte werden automatisch aktualisiert, wenn Sie die Ansicht Threads ändern.Für große Spuren möglicherweise Bereich Berichte deaktiviert, während die Updates berechnet werden.Jeder Bericht verfügt über zwei Filter Anpassungen: noise Reduction und nur mein Code.Verwenden Sie die Rauschunterdrückung Aufruf Struktur Einträge herausfiltern, wo ist wenig Zeitaufwand.Der Filter-Standardwert beträgt 2 %, aber zu 99 Prozent von 0 Prozent anzupassen.Um nur die Aufrufstruktur für Ihren Code anzuzeigen, wählen Sie die Nur mein Code Kontrollkästchen.Um alle Aufrufstrukturen anzuzeigen, deaktivieren Sie es.

Dd627193.collapse_all(de-de,VS.110).gifProfilbericht

Diese Registerkarte zeigt die Berichte, die die Einträge in der aktiven Legende entsprechen.Um einen Bericht anzuzeigen, wählen Sie einen der Einträge.

Dd627193.collapse_all(de-de,VS.110).gifAktueller Stapel

Diese Registerkarte zeigt die Aufrufliste für einen ausgewählten Punkt auf einem Thread Segment im Diagramm Zeitachse.Die Aufruf-Stacks werden abgeschnitten, nur Aktivität angezeigt, die mit Ihrem Programm zusammenhängt.

Dd627193.collapse_all(de-de,VS.110).gifStapelblockierung wird aufgehoben

Zu sehen, welcher Thread den ausgewählten Thread entsperrt und welche Codezeile wählen die Blockierung Stapel Registerkarte.

Dd627193.collapse_all(de-de,VS.110).gifAusführung

Ausführung-Bericht zeigt die Aufteilung der Zeit für die Anwendung bei der Ausführung.

Um die Codezeile in der Ausführung Zeit zu finden, die Aufrufstruktur erweitern, und wählen Sie dann im Kontextmenü für den Aufruf Struktur Eintrag View Source oder View Call Sites.Quelle anzeigen ausgeführte Codezeile sucht.Rufen Sie Websites anzeigen, die sucht die Codezeile, die die ausgeführte Codezeile aufgerufen.Wenn nur eine Aufrufsite vorhanden ist, ist die Codezeile hervorgehoben.Wenn mehrere Aufrufsites vorhanden sind, können Sie eine in das Dialogfeld, das angezeigt wird, und wählen Sie dann die Gehe zu Quelle -Taste, um den Aufruf Code markieren.Es ist oft die nützlich für die Aufrufsite zu suchen, die die meisten Instanzen, die meiste Zeit oder beides verfügt.Weitere Informationen finden Sie unter Ausführungsprofilbericht.

Dd627193.collapse_all(de-de,VS.110).gifSynchronisierung

Der Synchronisierungsbericht zeigt die Aufrufe, die Blockierungen der Synchronisierung verursachen, sowie die aggregierten Blockierungszeiten der einzelnen Aufruflisten.Weitere Informationen finden Sie unter Synchronisierungszeit.

Dd627193.collapse_all(de-de,VS.110).gifE/A

Der E/A-Bericht zeigt die Aufrufe, die E/A-Blockierungen verursachen, sowie die aggregierten Blockierungszeiten der einzelnen Aufruflisten.Weitere Informationen finden Sie unter E/A-Zeit (Threadansicht).

Dd627193.collapse_all(de-de,VS.110).gifSleep

Der Bericht zum Standbymodus zeigt die Aufrufe, die Blockierung des Standbymodus verursachen, sowie die aggregierten Blockierungszeiten der einzelnen Aufruflisten.Weitere Informationen finden Sie unter Standbyzeit.

Dd627193.collapse_all(de-de,VS.110).gifSpeicherverwaltung

Speicher-Management-Bericht zeigt die Aufrufe aufgetreten Management Speicherblöcke, zusammen mit der blockieren Zeiten von jeder Aufrufliste Aggregat.Diese Informationen können Sie Bereiche identifizieren, die übermäßige Auslagerung oder Garbage Collection Probleme haben.Weitere Informationen finden Sie unter Speicherverwaltungszeit.

Dd627193.collapse_all(de-de,VS.110).gifVorzeitige Entfernung

Der Unterbrechung-Bericht zeigt den Instanzen, in denen Prozesse auf dem System unterbrochen wird, den aktuellen Prozess und die einzelnen Threads, die Threads im aktuellen Prozess ersetzt.Diese Informationen können um zu identifizieren, die Prozesse und Threads, die die für die Trennung verantwortlich sind.Weitere Informationen finden Sie unter Zeit für die vorzeitige Entfernung.

Dd627193.collapse_all(de-de,VS.110).gifBenutzeroberflächenverarbeitung

Der Bericht zur Benutzeroberflächenverarbeitung enthält die Aufrufe, durch die eine Blockierung der Benutzeroberflächenverarbeitung verursacht wird, sowie die aggregierten Blockierungszeiten der einzelnen Aufruflisten.Weitere Informationen finden Sie unter Benutzeroberflächenverarbeitungszeit.

Dd627193.collapse_all(de-de,VS.110).gifZusammenfassung pro Thread

Diese Registerkarte zeigt einer farbcodierte Spaltenansicht der gesamten Zeit, dass jeder Thread in der Ausführung ausgegeben, blockiert, e/a- und anderen Staaten.Die Spalten sind unten beschriftet.Wenn Sie den Zoom-Wert im Diagramm Zeitachse anpassen, wird diese Registerkarte wird automatisch aktualisiert.Einige Threads möglicherweise nicht angezeigt, bei bestimmten Vergrößerungen.In diesem Fall werden die Ellipsen auf der rechten Seite angezeigt.Wenn der gewünschte Thread nicht angezeigt wird, können Sie andere Threads ausblenden.Weitere Informationen finden Sie unter Zusammenfassungsbericht pro Thread.

Dd627193.collapse_all(de-de,VS.110).gifDisk-Vorgänge

Diese Registerkarte zeigt die Prozesse und Threads Disk i/O für den aktuellen Prozess an, welche Dateien sie (beispielsweise DLLs, die geladen wurden) berührt, wie viele Bytes gelesen wurden, und andere Informationen beteiligt waren.Diesem Bericht können Zeit bewerten, die ausgegeben wird, in den Zugriff auf Dateien während der Ausführung, vor allem, wenn der Prozess e/A-gebunden zu sein scheint.Weitere Informationen finden Sie unter Bericht über Datenträgervorgänge (Threadansicht).

Siehe auch

Konzepte

Parallelitätsschnellansicht