À propos du suivi des événements

Le suivi d’événements pour Windows (ETW) est une fonctionnalité efficace de suivi au niveau du noyau qui vous permet de consigner les événements définis par le noyau ou l’application dans un fichier journal. Vous pouvez utiliser les événements en temps réel ou à partir d’un fichier journal et les utiliser pour déboguer une application ou déterminer où se produisent les problèmes de performances dans l’application.

ETW vous permet d’activer ou de désactiver dynamiquement le suivi des événements, ce qui vous permet d’effectuer un suivi détaillé dans un environnement de production sans nécessiter de redémarrages d’ordinateur ou d’application.

L’API de suivi des événements est divisée en trois composants distincts :

  • Contrôleurs, qui démarrent et arrêtent une session de suivi d’événements et activent les fournisseurs
  • Fournisseurs, qui fournissent les événements
  • Consommateurs, qui consomment les événements

Le diagramme suivant montre le modèle de suivi d’événements.

modèle de suivi d’événements

Controllers

Les contrôleurs sont des applications qui définissent la taille et l’emplacement du fichier journal, démarrent et arrêtent les sessions de suivi des événements, activent les fournisseurs afin qu’ils puissent journaliser les événements dans la session, gérer la taille du pool de mémoires tampons et obtenir des statistiques d’exécution pour les sessions. Les statistiques de session incluent le nombre de mémoires tampons utilisées, le nombre de mémoires tampons livrées et le nombre d’événements et de mémoires tampons perdus.

Pour plus d’informations, consultez Contrôle des sessions de suivi d’événements.

Fournisseurs

Les fournisseurs sont des applications qui contiennent une instrumentation de suivi d’événements. Une fois qu’un fournisseur s’est inscrit lui-même, un contrôleur peut activer ou désactiver le suivi d’événements dans le fournisseur. Le fournisseur définit son interprétation de l’activation ou de la désactivation. En règle générale, un fournisseur activé génère des événements, contrairement à un fournisseur désactivé. Cela vous permet d’ajouter le suivi d’événements à votre application sans avoir à générer des événements tout le temps.

Bien que le modèle ETW sépare le contrôleur et le fournisseur en applications distinctes, une application peut inclure les deux composants.

Pour plus d’informations, consultez Fournir des événements.

Types de fournisseurs

Il existe quatre types main de fournisseurs : les fournisseurs MOF (classique), les fournisseurs WPP, les fournisseurs basés sur un manifeste et les fournisseurs TraceLogging. Vous devez utiliser un fournisseur basé sur un manifeste ou un fournisseur TraceLogging si vous écrivez des applications pour Windows Vista ou version ultérieure qui n’ont pas besoin de prendre en charge les systèmes hérités.

Fournisseurs MOF (classiques) :

  • Utilisez les fonctions RegisterTraceGuids et TraceEvent pour inscrire et écrire des événements.
  • Utilisez des classes MOF pour définir des événements afin que les consommateurs sachent comment les consommer.
  • Peut être activé par une seule session de suivi à la fois.

Fournisseurs WPP :

  • Utilisez les fonctions RegisterTraceGuids et TraceEvent pour inscrire et écrire des événements.
  • Des fichiers TMF associés (compilés dans le fichier .pdb d’un fichier binaire) contiennent des informations de décodage déduites de l’analyse de l’instrumentation WPP par le préprocesseur dans le code source.
  • Peut être activé par une seule session de suivi à la fois.

Fournisseurs basés sur un manifeste :

  • Utilisez EventRegister et EventWrite pour inscrire et écrire des événements.
  • Utilisez un manifeste pour définir des événements afin que les consommateurs sachent comment les consommer.
  • Peut être activé par jusqu’à huit sessions de suivi simultanément.

Fournisseurs TraceLogging :

  • Utilisez TraceLoggingRegister et TraceLoggingWrite pour inscrire et écrire des événements.
  • Utilisez des événements auto-descriptifs afin que les événements contiennent eux-mêmes toutes les informations nécessaires pour les consommer.
  • Peut être activé par jusqu’à huit sessions de suivi simultanément.

Tous les fournisseurs d’événements utilisent fondamentalement la famille d’API Event Tracing (TraceEvent pour les technologies héritées et EventWrite/EventWriteEx pour les plus récentes). Les fournisseurs d’événements diffèrent simplement par les types de champs qu’ils stockent dans les charges utiles des événements et l’emplacement où ils stockent les informations de décodage d’événements associées.

Consommateurs

Les consommateurs sont des applications qui sélectionnent une ou plusieurs sessions de suivi d’événements comme source d’événements. Un consommateur peut demander des événements à plusieurs sessions de suivi d’événements simultanément ; le système fournit les événements dans l’ordre chronologique. Les consommateurs peuvent recevoir des événements stockés dans des fichiers journaux ou à partir de sessions qui fournissent des événements en temps réel. Lors du traitement des événements, un consommateur peut spécifier les heures de début et de fin, et seuls les événements qui se produisent dans le délai spécifié sont remis.

Pour plus d’informations, consultez Consommation d’événements.

Événements manquants

Perfmon, les diagnostics système et d’autres outils système peuvent signaler des événements manquants dans le journal des événements et indiquer que les paramètres de suivi des événements pour Windows (ETW) peuvent ne pas être optimaux. Les événements peuvent être perdus pour plusieurs raisons :

  • La taille totale de l’événement est supérieure à 64 000. Cela inclut l’en-tête ETW plus les données ou la charge utile. Un utilisateur n’a aucun contrôle sur ces événements manquants puisque la taille de l’événement est configurée par l’application.

  • La taille de la mémoire tampon ETW est inférieure à la taille totale de l’événement. Un utilisateur n’a aucun contrôle sur ces événements manquants, car la taille de l’événement est configurée par l’application journalisant les événements.

  • Pour la journalisation en temps réel, le consommateur en temps réel ne consomme pas les événements assez rapidement ou n’est pas présent, puis le fichier de sauvegarde se remplit. Cela peut se produire si le service journal des événements est arrêté et démarré lorsque les événements sont enregistrés. Un utilisateur n’a aucun contrôle sur ces événements manquants.

  • Lors de la journalisation dans un fichier, le disque est trop lent pour suivre le rythme de journalisation.

Pour l’une de ces raisons, signalez ces problèmes au fournisseur de l’application ou du service qui génère les événements. Ces problèmes ne peuvent être résolus que par le développeur d’application ou le service journalisant les événements. Si les événements manquants sont signalés dans le service journal des événements, cela peut indiquer un problème avec la configuration du service journal des événements. L’utilisateur peut avoir une capacité limitée à augmenter l’espace disque maximal à utiliser par le service de journal des événements, ce qui peut réduire le nombre d’événements manquants.