Accéder aux données de trace
.NET TraceProcessing est disponible auprès de NuGet avec l’ID de package suivant :
Microsoft.Windows.EventTracing.Processing.All
Ce package vous permet d’accéder aux données d’un fichier de trace. Si vous n’avez pas encore de fichier de trace, vous pouvez utiliser l’Enregistreur de performances Windows pour en créer un.
L’exemple d’application console suivant montre comment accéder aux lignes de commande de tous les processus contenus dans la trace :
using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;
class Program
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.Error.WriteLine("Usage: <trace.etl>");
return;
}
using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
{
IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();
trace.Process();
IProcessDataSource processData = pendingProcessData.Result;
foreach (IProcess process in processData.Processes)
{
Console.WriteLine(process.CommandLine);
}
}
}
}
Utilisation de TraceProcessor
Pour traiter une trace, appelez TraceProcessor.Create. L’interface principale est ITraceProcessor et l’utilisation de cette interface implique le modèle suivant :
- Tout d’abord, indiquez au processeur les données que vous voulez utiliser dans une trace.
- Ensuite, traitez la trace.
- Enfin, accédez aux résultats.
En indiquant préalablement au processeur les types de données que vous voulez, vous n’avez pas besoin de passer du temps à traiter de gros volumes de tous les types de données de trace possibles. Au lieu de cela, TraceProcessor fait seulement le travail nécessaire pour fournir les types de données spécifiques que vous demandez.
Paramètres de projet recommandés
Il existe deux paramètres de projet que nous recommandons d’utiliser avec TraceProcessor :
Nous recommandons d’exécuter les fichiers .exe en 64 bits.
L’option par défaut de Visual Studio pour une nouvelle application console C# .NET Framework est N’importe quelle UC avec « Préférer 32 bits » coché. La valeur par défaut pour .NET peut déjà avoir le paramètre recommandé.
Le traitement des traces peut nécessiter beaucoup de mémoire, surtout avec des traces plus volumineuses : nous recommandons de changer la plateforme cible en x64 (ou de décocher « Préférer 32 bits ») dans les fichiers .exe qui utilisent TraceProcessor. Pour modifier ces paramètres, reportez-vous à l’onglet Créer sous Propriétés pour le projet. Pour changer ces paramètres pour toutes les configurations, vérifiez que la liste déroulante Configuration est définie sur Toutes les configurations, et non pas seulement sur la configuration par défaut.
Nous suggérons d’utiliser NuGet avec le mode PackageReference le plus récent au lieu de l’ancien mode packages.config.
Pour changer la valeur par défaut pour les nouveaux projets, accédez à Outils, Gestionnaire de package NuGet, Paramètres du Gestionnaire de package, Gestion des packages, Format de gestion des packages par défaut.
Sources de données intégrées
Un fichier .etl peut capturer de nombreux types de données dans une trace. Notez que les données qui se trouvent dans un fichier .etl dépendent des fournisseurs qui ont été activés lors de la capture de la trace. La liste suivante montre les types de données de trace disponibles auprès de TraceProcessor :
Code | Description | Éléments associés à WPA |
---|---|---|
trace.UseClassicEvents() | Fournit des événements ETW classiques d’une trace, qui n’incluent pas d’informations de schéma. | Table Événements génériques (quand le type d’événement est Classique ou WPP) |
trace.UseConnectedStandbyData() | Fournit les données d’une trace sur le système entrant et sortant d’une veille connectée. | Table Récapitulatif CS |
trace.UseCpuIdleStates() | Fournit les données d’une trace sur les C-states (états-C) du processeur. | Table États d’inactivité du processeur (quand le type est « Actual ») |
trace.UseCpuSamplingData() | Fournit les données d’une trace sur l’utilisation du processeur en fonction d’un échantillonnage périodique du pointeur d’instruction. | Table Utilisation du processeur (échantillonnée) |
trace.UseCpuSchedulingData() | Fournit les données d’une trace sur la planification des threads du processeur, incluant les changements de contexte et les événements de thread prêt. | Table Utilisation du processeur (précise) |
trace.UseDevicePowerData() | Fournit les données d’une trace sur les D-states (états-D) des périphériques. | Table DState des périphériques |
trace.UseDirectXData() | Fournit les données d’une trace sur l’activité DirectX. | Table Utilisation du GPU |
traceUseDiskIOData() | Fournit les données d’une trace sur l’activité des E/S disque. | Table Utilisation du disque |
trace.UseEnergyEstimationData() | Fournit les données d’une trace sur l’utilisation d’énergie estimée par processus du moteur d’estimation d’énergie. | Table Récapitulatif du moteur d’estimation de l’énergie (par processus) |
trace.UseEnergyMeterData() | Fournit les données d’une trace sur l’utilisation d’énergie mesurée à partir de l’interface de mesure d’énergie EMI (Energy Meter Interface). | Table Moteur d’estimation d’énergie (par EMI) |
trace.UseFileIOData() | Fournit les données d’une trace sur l’activité des E/S fichier. | Table E/S fichier |
trace.UseGenericEvents() | Fournit des événements Manifested et TraceLogging à partir d’une trace. | Table Événements génériques (quand le type d’événement est Manifested ou TraceLogging) |
trace.UseHandles() | Fournit les données partielles d’une trace sur les handles de noyau actifs. | Table Handles |
trace.UseHardFaults() | Fournit les données d’une trace sur les erreurs de page matérielles. | Table Erreurs matérielles |
trace.UseHeapSnapshots() | Fournit les données d’une trace sur l’utilisation du tas des processus. | Table Instantanés du tas |
trace.UseHypercalls() | Fournit des données sur les hypercalls Hyper-V qui se sont produits pendant une trace. | |
trace.UseImageSections() | Fournit les données d’une trace sur les sections d’une image. | Colonne Nom de la section de la table Utilisation du processeur (échantillonnée) |
trace.UseInterruptHandlingData() | Fournit les données d’une trace sur l’activité Routine du service d’interruption (ISR) et Appel de procédure différé (DPC). | Table DPC/ISR |
trace.UseMarks() | Fournit les marques (horodatages étiquetés) d’une trace. | Table Marques |
trace.UseMemoryUtilizationData() | Fournit les données d’une trace sur l’utilisation totale de la mémoire système. | Table Utilisation de la mémoire |
trace.UseMetadata() | Fournit des métadonnées de trace disponibles sans traitement supplémentaire. | Configuration système, Traces et Général |
trace.UsePlatformIdleStates() | Fournit les données d’une trace sur les états d’inactivité de la plateforme cible et réelle d’un système. | Table État d’inactivité de la plateforme |
trace.UsePoolAllocations() | Fournit les données d’une trace sur l’utilisation de la mémoire des pools du noyau. | Table Récapitulatif des pools |
trace.UsePowerConfigurationData() | Fournit les données d’une trace sur la configuration de l’alimentation du système. | Configuration système, Paramètres d’alimentation |
trace.UsePowerDependencyCoordinatorData() | Fournit les données d’une trace sur les phases actives du coordinateur de dépendances de l’alimentation. | Table Récapitulatif des phases de notification |
trace.UseProcesses() | Fournit les données sur les processus actifs pendant une trace ainsi que leurs images et les PDB. | Table Processus ; Table Images ; Hub de symboles |
trace.UseProcessorCounters() | Fournit les données d’une trace sur les valeurs des compteurs de performance du processeur provenant du Moniteur de compteurs de processeur (PCM, Processor Counter Monitor). | |
trace.UseProcessorFrequencyData() | Fournit les données d’une trace sur la fréquence à laquelle les processeurs ont fonctionné. | Table Fréquence des processeurs (quand le type est « Actual ») |
trace.UseProcessorProfileData() | Fournit les données d’une trace sur le profil d’alimentation des processeurs actifs. | Table Profils des processeurs |
trace.UseProcessorParkingData() | Fournit les données d’une trace sur les processeurs qui ont été démobilisés ou remobilisés. | Table État de mobilisation des processeurs |
trace.UseProcessorParkingLimits() | Fournit les données d’une trace sur le nombre maximal autorisé de processeurs remobilisés. | Table État de la limite de mobilisation des cœurs |
trace.UseProcessorQualityOfServiceData() | Fournit les données d’une trace sur la qualité du niveau de service pour chaque processeur. | Table Classe de qualité de service des processeurs |
trace.UseProcessorThrottlingData() | Fournit les données d’une trace sur la limitation de la fréquence maximale des processeurs. | Table Contraintes des processeurs |
trace.UseReadyBootData() | Fournit les données d’une trace sur l’activité de prérécupération du démarrage de Ready Boot. | Table Événements Ready Boot |
trace.UseReferenceSetData() | Fournit les données d’une trace sur les pages de mémoire virtuelle utilisées par chaque processus. | Table Ensemble de références |
trace.UseRegionsOfInterest() | Fournit les régions nommées d’intervalles intéressants d’une trace, comme spécifié dans un fichier de configuration XML. | Table Régions intéressantes |
trace.UseRegistryData() | Fournit des données sur l’activité du Registre pendant une trace. | Table Registre |
trace.UseResidentSetData() | Fournit les données d’une trace sur les pages de mémoire virtuelle pour chaque processus qui se trouvaient dans la mémoire physique. | Table Ensemble résident |
trace.UseRundownData() | Fournit les données d’une trace sur des intervalles pendant lesquels la collecte des données de diminution d’activité de la trace s’est produite. | Régions en grisé dans la chronologie du graphique |
trace.UseScheduledTasks() | Fournit des données sur les tâches planifiées qui ont été exécutées pendant une trace. | Table Tâches planifiées |
trace.UseServices() | Fournit des données sur les services qui étaient actifs ou dont l’état a été capturé pendant une trace. | Table Services ; Configuration système, Services |
trace.UseStacks() | Fournit des données sur les piles enregistrées pendant une trace. | |
trace.UseStackEvents() | Fournit des données sur les événements associés aux piles enregistrées pendant une trace. | Table Piles |
trace.UseStackTags() | Fournit un mappeur qui regroupe les piles d’une trace selon les étiquettes des piles, comme spécifié dans un fichier de configuration XML. | Colonnes comme Étiquette de pile et Pile (étiquettes de trame) |
trace.UseSymbols() | Donne la possibilité de charger des symboles pour une trace. | Configurer des chemins de symboles ; Charger des symboles |
trace.UseSyscalls() | Fournit des données sur les syscalls qui se sont produits pendant une trace. | Table Syscalls |
trace.UseSystemMetadata() | Fournit des métadonnées générales à l’échelle du système à partir d’une trace. | Configuration du système |
trace.UseSystemPowerSourceData() | Fournit les données d’une trace sur la source d’alimentation du système actif (AC ou DC). | Table Source d’alimentation du système |
trace.UseSystemSleepData() | Fournit les données d’une trace sur l’état d’alimentation global du système. | Table Transition d’alimentation |
trace.UseTargetCpuIdleStates() | Fournit les données d’une trace sur les C-states (états-C) du processeur cible. | Table États d’inactivité du processeur (quand le type est « Target ») |
trace.UseTargetProcessorFrequencyData() | Fournit les données d’une trace sur les fréquences du processeur cible. | Table Fréquence des processeurs (quand le type est « Target ») |
trace.UseThreads() | Fournit des données sur les threads actifs pendant une trace. | Table Durées de vie des threads |
trace.UseTraceStatistics() | Fournit des statistiques sur les événements dans une trace. | Configuration système, Statistiques de trace |
trace.UseUtcData() | Fournit les données d’une trace sur l’activité de télémétrie Microsoft en utilisant le client de télémétrie universel (UTC, Universal Telemetry Client). | Table UTC |
trace.UseWindowInFocus() | Fournit les données d’une trace sur les modifications apportées à la fenêtre ayant le focus dans l’interface utilisateur active. | Table Fenêtre ayant le focus |
trace.UseWindowsTracePreprocessorEvents() | Fournit les événements du préprocesseur de trace de logiciel Windows d’une trace. | Table Trace WPP ; Table Événements génériques (quand le type d’événement est WPP) |
trace.UseWinINetData() | Fournit les données d’une trace sur l’activité internet via Windows Internet (WinINet). | Table Détails des téléchargements |
trace.UseWorkingSetData() | Fournit les données d’une trace sur les pages de mémoire virtuelle qui se trouvaient dans la plage de travail pour chaque processus ou catégorie de noyau. | Table Instantanés de la mémoire virtuelle |
Consultez également les méthodes d’extension sur ITraceSource pour toutes les données de trace disponibles, ou examinez la méthode disponible à partir de « trace ».
Étapes suivantes
Dans cette vue d’ensemble, vous avez découvert comment accéder aux données de trace en utilisant TraceProcessor et les sources de données intégrées auxquelles il peut accéder.
L’étape suivante est de découvrir comment étendre TraceProcessor pour accéder à des données de trace personnalisées.
Windows developer