Marqueurs du visualiseur concurrentiel

Dans le visualiseur concurrentiel, les marqueurs sont des icônes qui représentent les événements d’une application. En règle générale, l’application génère ces événements pour désigner les phases ou les occurrences d’une application. Les événements peuvent être générés par l’application ou par les bibliothèques et les runtimes qu’utilise l’application.

Types de marqueurs

Le visualiseur concurrentiel utilise trois types de marqueurs pour représenter les événements d’application : des indicateurs, des messages et des intervalles.

  1. Utilisez un indicateur pour indiquer un point dans le temps présentant un intérêt particulier dans votre application. Par exemple, vous pouvez utiliser un indicateur pour montrer qu’une valeur de variable a atteint un certain seuil, ou qu’une exception a été levée.

  2. Un message marque également un point dans le temps, mais il peut aussi être utilisé pour le suivi des journaux. Par exemple, les données autrefois vidées dans un fichier journal peuvent désormais être encapsulées dans un appel de message, pour que vous puissiez les suivre et les afficher dans le visualiseur concurrentiel. Vous pouvez également utiliser le visualiseur concurrentiel pour exporter ces données vers un fichier CSV.

  3. Un intervalle représente un intervalle de temps au sein de votre application, par exemple, l’une de ses phases.

Liaison d’un marqueur à un thread

Chaque thread qui génère des marqueurs dispose d’un canal chronologique distinct. L’ID du thread qui est chargé de générer les événements de marqueur est indiqué à côté de la description du canal de marqueur. L’ID qui est affiché à gauche du canal de marqueur correspond à l’ID d’un autre thread dans le processus en cours.

Importance des marqueurs

Les marqueurs peuvent avoir l’un des quatre niveaux d’importance suivants : bas, normal, élevé et critique. Vous pouvez filtrer les sources des marqueurs selon leur niveau d’importance. Par exemple, si vous voulez afficher uniquement les marqueurs provenant d’une source dont l’importance est normale ou critique, vous pouvez configurer un filtre dans la boîte de dialogue Paramètres avancés. L’importance d’un marqueur s’affiche dans son info-bulle et dans le rapport Marqueurs.

Catégorie de marqueur

Une catégorie de marqueur correspond à un groupe d’événements de marqueurs provenant d’une même source. Le visualiseur concurrentiel utilise un système de couleurs pour distinguer les différentes catégories d’indicateurs et d’intervalles. Vous pouvez configurer le visualiseur concurrentiel afin qu’il utilise des catégories pour filtrer les événements de marqueurs provenant d’un même fournisseur d’événements. Utilisez la boîte de dialogue Paramètres avancés pour configurer le filtre.

Sources connues de marqueurs

Tous les fournisseurs ETW peuvent générer des marqueurs, tant qu’ils respectent certaines contraintes. Vous pouvez configurer le visualiseur concurrentiel pour qu’il écoute d’autres sources d’événements de marqueurs. Par défaut, le visualiseur écoute les sources d’événements suivantes :

Marqueurs EventSource

Le visualiseur concurrentiel peut également afficher des événements EventSource. Pour plus d’informations, consultez Visualiser des événements EventSource en tant que marqueurs.

Marqueurs indicateurs

Un marqueur indicateur représente un événement qui s’est produit à un instant donné dans une application. Un indicateur peut représenter de nombreux types d’événements d’application. Par exemple, un indicateur peut apparaître lorsqu’un élément de travail a été planifié ou lorsqu’une exception a été levée. Les runtimes, tels que la bibliothèque parallèle de tâches, peuvent également générer des indicateurs.

Importance des indicateurs

La taille des indicateurs dépend de leur importance. Comme pour tout autre type de marqueur, leur niveau d’importance peut être bas, normal, élevé ou critique. Cette illustration montre l’apparence des marqueurs selon leur niveau d’importance :

Illustration of Low, Normal, High, and Critical importance markers.

Catégories des indicateurs

Les indicateurs sont de cinq couleurs différentes, selon leur catégorie. Les couleurs sont réutilisées lorsqu’il y a plus de cinq catégories. Vous ne pouvez pas choisir la couleur. Comme pour tout autre marqueur, la catégorie peut correspondre à n’importe quel entier. L’illustration suivante montre les couleurs des cinq premières catégories.

Illustration of five colors of category markers.

Alertes

Une alerte est un indicateur rouge qui représente un événement d’application critique, tel qu’une exception. Voici un exemple d’alerte :

Illustration of the Concurrency Visualizer alert marker.

Indicateurs d’agrégation

Parfois, les indicateurs sont générés de manière si rapprochée dans le visualiseur concurrentiel qu’ils ne peuvent pas être affichés individuellement. Lorsque cela se produit, un indicateur d’agrégation de couleur grise s’affiche pour représenter les indicateurs sous-jacents. Lorsque vous placez le pointeur sur l’une de ces icônes, une info-bulle affiche le nombre d’indicateurs sous-jacents qui sont représentés. Pour afficher les indicateurs, faites un zoom avant. Si vous zoomez au maximum et obtenez toujours un indicateur d’agrégation, vous pouvez afficher les indicateurs sous-jacents dans le rapport Marqueurs.

Les indicateurs d’agrégation peuvent avoir différentes tailles. La taille varie selon le niveau d’importance de l’indicateur le plus important de l’agrégation. L’illustration suivante montre les indicateurs d’agrégation, par ordre croissant d’importance.

Illustration of aggregate flags showing four levels of importance.

Marqueurs de messages

Un jeton de message représente une sortie de journal. Un message est une chaîne émise par un thread spécifique à un moment donné. Vous pouvez exporter des messages vers un fichier texte en vue de les utiliser avec d’autres outils. Vous pouvez placer le pointeur sur un message dans le visualiseur concurrentiel pour afficher la chaîne du message. Vous pouvez aussi afficher tous les marqueurs de message dans le rapport Marqueurs. L’illustration suivante présente un marqueur de message.

Marqueurs d’agrégation de messages

Parfois, les messages sont générés de manière si rapprochée dans le visualiseur concurrentiel qu’ils ne peuvent pas être affichés individuellement. Quand cela se produit, un marqueur d’agrégation de messages représentant les messages sous-jacents s’affiche. Quand vous placez le pointeur sur l’une de ces icônes, une info-bulle affiche le nombre de messages sous-jacents représentés. Pour afficher les messages, faites un zoom avant. Si vous zoomez au maximum et obtenez toujours un marqueur d’agrégation, vous pouvez afficher les messages sous-jacents dans le rapport Marqueurs.

Marqueurs d’étendue

Un marqueur d’étendue représente une phase significative d’une application. Par exemple, vous pouvez utiliser une étendue pour représenter un intervalle de temps pendant lequel un élément de travail particulier est traité. Sa longueur représente la durée de la phase correspondante de l’application. Cette illustration montre une étendue dans le visualiseur concurrentiel :

Illustration of a span marker in Concurrency Visualizer.

Catégories d’étendues

Un marqueur d’étendue peut être affiché dans cinq couleurs différentes en fonction de sa catégorie. Les couleurs sont répétées quand il y a plus de cinq catégories. La catégorie peut correspondre à n’importe quel entier. Cette illustration présente les cinq couleurs possibles :

Illustration of five spans in different categories.

Marqueurs d’agrégation d’étendues

Parfois, les marqueurs d’étendue sont si proches les uns des autres dans le visualiseur concurrentiel qu’ils ne peuvent pas être dessinés individuellement. Quand c’est le cas, un marqueur d’agrégation d’étendues représentant les étendues sous-jacentes est affiché. Quand vous placez le pointeur sur une de ces icônes, une info-bulle montre le nombre d’étendues sous-jacentes qui sont représentées. Pour voir les étendues, faites un zoom avant. Si vous zoomez au maximum et que vous voyez toujours un marqueur d’agrégation d’étendues, vous pouvez voir les marqueurs des étendues sous-jacentes dans le rapport Marqueurs. Cette illustration montre un marqueur d’agrégation d’étendues :

Illustration of an aggregate span marker in Concurrency Visualizer.