Rapports de la vue Threads dans le visualiseur concurrentiel

Cet article fournit des informations sur les rapports dans la vue Threads du visualiseur concurrentiel.

Rapport du profil de temps de blocage

Les rapports de profil rassemblent des données relatives au temps de blocage pour les piles d’appels qui sont spécifiques à chaque catégorie de blocage (par exemple « E/S » ou « Synchronisation »). Le rapport Anticipation répertorie les processus qui ont anticipé le processus en cours, ainsi que le nombre d’instances d’anticipations. Pour générer le rapport de profil de blocage, l’outil collecte des appels d’API bloquants et les rassemble au sein d’une arborescence de piles d’appels. Les données figurant dans ces rapports varient selon la plage horaire, les threads masqués et les deux filtres suivants qui peuvent être appliqués :

  • Si l’option Uniquement mon code est activée, seuls les frames de pile contenant du code utilisateur sont présentés, ainsi que le premier niveau situé sous le code utilisateur.

  • Si la valeur Réduction du bruit est définie, les piles assemblées dont la fréquence est inférieure à celle spécifiée sont ignorées.

    Développez une entrée de l’arborescence des appels pour rechercher la ligne de code où du temps de blocage a été passé. Pour localiser la ligne de code source d’une entrée, dans le menu contextuel, sélectionnez Afficher la source. Pour localiser la ligne de code ayant appelé l’entrée, dans le menu contextuel, sélectionnez Afficher les sites d’appel. Si un seul site d’appel est disponible, la commande se connecte à la ligne de code du site d’appel qui est mise en surbrillance. Si plusieurs sites d’appel sont disponibles, la commande ouvre une boîte de dialogue dans laquelle vous pouvez sélectionnez une entrée, puis cliquer sur le bouton Atteindre la source pour rechercher le site d’appel mis en surbrillance. Il est souvent très utile d’afficher le code source du site d’appel ayant le plus grand nombre d’instances et/ou la plus longue durée.

Colonnes du rapport de temps de blocage

Le tableau suivant montre les colonnes de chaque rapport de temps de blocage.

Nom de la colonne Description
Nom Nom de la fonction pour chaque niveau de la pile des appels.
Instances Nombre d’instances de l’appel bloquant pendant la période visible.
Durée de blocage inclusif Durée totale de blocage pour toutes les piles qui atteignent ce niveau de l’arborescence de la pile des appels. Le nombre inclusif correspond à la somme du temps de blocage exclusif de cette fonction et de celui de tous ses nœuds enfants.
Durée de blocage exclusif Durée totale de blocage au cours de laquelle cette fonction se trouve au niveau le plus bas de la pile des appels. Une entrée de pile d’appels unique dont le temps de blocage exclusif est élevé peut être une fonction intéressante.
API /Catégorie d’attente S’affiche uniquement pour les fonctions situées au niveau le plus bas de la pile des appels. Lorsque la signature de l’appel bloquant est reconnue, le nom de l’API bloquante est fourni. Si la signature n’est pas reconnue, les informations indiquées par le noyau sont fournies.
Détails Nom complet de la fonction. Peut contenir le nombre de lignes lorsque celui-ci est disponible.

Synchronization

Le rapport Synchronisation affiche les appels responsables des segments qui se bloquent lors de la synchronisation, ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Durée de synchronisation.

Veille

Le rapport Veille affiche les appels responsables du temps de blocage attribué à du temps passé en veille, ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Durée de veille.

E/S

Le rapport E/S affiche les appels responsables des segments qui se bloquent lors d’une opération d’E/S, ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Temps d’E/S (vue Threads).

Gestion de la mémoire

Le rapport Gestion de la mémoire affiche les appels responsables des segments qui se bloquent lors d’une opération de gestion de la mémoire, ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Période de gestion de la mémoire.

Anticipation

Le rapport Anticipation répertorie les processus qui ont anticipé le processus en cours, ainsi que le nombre d’instances. Vous pouvez développer chaque processus pour afficher les threads qui ont remplacé ceux du processus en cours, et pour afficher le détail des instances d’anticipation de chaque thread. Ce rapport de blocage est moins exploitable, car l’anticipation est généralement imposée à votre processus par le système d’exploitation, et non par un problème dans votre code. Pour plus d’informations, consultez Durée de préemption.

Traitement de l'interface utilisateur

Le rapport Traitement de l’interface utilisateur affiche les appels responsables des segments qui se bloquent lors d’un blocage d’interface utilisateur, ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Temps de traitement UI.

Rapport sur les opérations sur le disque (Vue Threads)

Le rapport Opérations sur le disque affiche les opérations d’E/S de disque effectuées dans les canaux de disques.

Les informations suivantes sont signalées pour chaque accès au disque effectué pour le compte du processus en cours de profilage dans la fenêtre de temps actuellement visible :

  • Le nom et le PID du processus qui a accédé au disque

  • L’ID du thread qui a accédé au disque

  • Le nom du fichier ayant fait l’objet d’un accès

  • Le nombre de lectures par fichier

  • Le nombre d’octets lus

  • La latence de lecture, en millisecondes

  • Le nombre d’écritures

  • Le nombre d’octets écrits

  • La latence d’écriture, en millisecondes

Profil d’exécution, rapport

Le rapport Profil d’exécution est un profil d’échantillonnage classique. Des échantillons sont créés chaque milliseconde environ pendant des périodes où un thread s’exécute sur un cœur logique, et le visualiseur concurrentiel génère une arborescence des appels typique en assemblant les échantillons de piles accumulés. Les données de ce tableau peuvent être affectées par la plage horaire actuelle et les threads cachés, ainsi que par les filtres qui peuvent être appliqués :

  • Si l’option Uniquement mon code est activée, seuls les frames de pile contenant du code utilisateur sont présentés, ainsi que le premier niveau situé sous le code utilisateur.

  • Si la valeur Réduction du bruit est définie, les piles assemblées dont la fréquence est inférieure à celle spécifiée sont retirées du rapport.

    Le tableau suivant montre les colonnes du rapport.

Colonne Description
Nom Nom de la fonction pour chaque niveau de la pile des appels.
Échantillons inclusifs Nombre total d’échantillons collectés pour toutes les piles qui atteignent ce niveau de l’arborescence de la pile des appels. Le nombre inclusif correspond à la somme des échantillons exclusifs de cette fonction et des compteurs inclusifs de tous ses nœuds enfants.
Exemples exclusifs Nombre total d’échantillons collectés pour lesquels cette fonction correspond au niveau le plus bas de la pile des appels.
% inclusif Pourcentage du total des échantillons qui apparaissent dans la colonne des échantillons inclusifs. Les pourcentages sont arrondis à deux décimales.
% exclusifs Pourcentage du total des échantillons qui apparaissent dans la colonne des échantillons exclusifs. Les pourcentages sont arrondis à deux décimales.
Détails Nom complet de la fonction. Peut contenir le nombre de lignes lorsque celui-ci est disponible.

Vous pouvez consulter le tableau de ce rapport dans la vue Durée d’exécution (vue Threads).

Rapport des marqueurs

Le rapport Marqueurs répertorie les marqueurs dans le délai affiché. Des marqueurs peuvent apparaître ou disparaître en fonction des mouvements panoramiques, des zooms ou des masquages de couloirs effectués. Le rapport contient les informations suivantes sur chaque marqueur :

  • L’heure à laquelle il a commencé, par rapport au début de la trace.

  • Sa durée. La durée est égale à zéro pour les indicateurs et les messages, car ils représentent un instant.

  • L’ID du thread qui l’a généré.

  • Le fournisseur de suivi des événements pour Windows (ETW) qui l’a généré.

  • La série de marqueurs à partir de laquelle il a été écrit.

  • La catégorie d’événements à laquelle il appartient.

  • Son niveau d’importance.

  • Son type (étendue, indicateur ou message).

  • Une description générale de ce qu’il représente.

    Choisissez le bouton Exporter pour enregistrer le rapport Marqueurs dans un fichier CSV. Vous pouvez utiliser les données contenues dans le fichier CSV avec d’autres applications ou outils.

Notes

Le rapport Marqueurs peut afficher 1 000 marqueurs. Pour voir tous les marqueurs, exportez le rapport complet vers un fichier CSV.

Rapport Récapitulatif par thread

Cet histogramme présente la proportion de temps que chaque thread non masqué passe dans chaque catégorie d’activité pendant la plage horaire actuellement visible. « Exécution » signifie que le thread est en cours d’exécution ; toutes les autres catégories impliquent que le thread est en attente d’une opération.