Partager via


Comment : instrumenter un service .NET Framework et collecter des données de mémoire en utilisant la ligne de commande du profileur

Cette rubrique décrit comment utiliser les outils en ligne de commande des outils de profilage Visual Studio pour instrumenter un service .NET Framework et collecter des données d'utilisation de la mémoire.Vous pouvez collecter des données d'allocation de mémoire, ou vous pouvez collecter à la fois des données d'allocation de mémoire et de durée de vie des objets.

[!REMARQUE]

Les fonctionnalités de sécurité renforcée dans Windows 8 et Windows Server 2012 nécessitaient d'importantes modifications de la manière dont le profileur Visual Studio collecte des données sur ces plateformes.Les applications Windows Store requièrent également de nouvelles techniques de collecte.Consultez Profilage d'applications Windows 8 et Windows Server 2012.

[!REMARQUE]

Vous ne pouvez pas profiler un service avec la méthode d'instrumentation si le service ne peut pas être redémarré après le démarrage de l'ordinateur, type de service qui démarre au démarrage du système d'exploitation.

Les outils en ligne de commande des outils de profilage se trouvent dans le sous-répertoire \Team Tools\Performance Tools du répertoire d'installation de Visual Studio sSur les ordinateurs 64 bits, les versions 64 bits et 32 bits de ces outils sont disponibles.Pour utiliser les outils en ligne de commande du profileur, vous devez ajouter le chemin d'accès des outils à la variable d'environnement PATH de la fenêtre d'invite de commandes ou l'ajouter à la commande elle-même.Pour plus d'informations, consultez Spécification du chemin d'accès aux outils en ligne de commande des outils de profilage.

Démarrage de la session de profilage

Pour collecter les données de performance d'un service .NET Framework, vous utilisez l'outil VSPerfCLREnv.cmd pour initialiser les variables d'environnement appropriées et l'outil VSInstr.exe pour créer une copie instrumentée du fichier binaire de service.

L'ordinateur qui héberge le service doit être redémarré pour être configuré pour le profilage.Vous devez également démarrer manuellement le service à partir du Gestionnaire de contrôle des services.Vous démarrez le profileur, puis démarrez le service .NET Framework.

Lorsque le composant instrumenté est exécuté, les données de mémoire sont automatiquement collectées dans un fichier de données.Vous pouvez suspendre et reprendre la collecte de données pendant la session de profilage.

Pour terminer une session de profilage, vous fermez le service et arrêtez explicitement le profileur.Dans la plupart des cas, nous vous recommandons de désactiver les variables d'environnement de profilage à la fin d'une session.

Pour commencer à profiler un service .NET Framework

  1. Ouvrez une fenêtre d'invite de commandes.

  2. Utilisez l'outil VSInstr pour générer une version instrumentée du binaire de service.

  3. Utilisez le Gestionnaire de contrôle des services pour remplacer la version binaire d'origine par la version instrumentée.Assurez-vous que le type de démarrage du service a la valeur Manuel.

  4. Initialisez les variables d'environnement de profilage.Type :

    VSPerfClrEnv {/globaltracegc | /globaltracegclife}

    • /globaltracegc et /globaltracegclife activent la collecte des données d'allocation de mémoire et de durée de vie des objets.

      Option

      Description

      /globaltracegc

      Collecte uniquement les données d'allocation de mémoire.

      /globaltracegclife

      Collecte les données d'allocation de mémoire et de durée de vie des objets.

  5. Redémarrez l'ordinateur.

  6. Ouvrez une fenêtre d'invite de commandes.

  7. Démarrez le profileur.Type :

    VSPerfCmd /start:trace /output**:**OutputFile [Options]

    • L'option /start: contention initialise le profileur.

    • L'option **/output:**OutputFile est requise avec /start.OutputFile spécifie le nom et l'emplacement du fichier de données de profilage (.vsp).

    Vous pouvez utiliser n'importe laquelle des options suivantes avec l'option /start:sample.

    [!REMARQUE]

    Les options /user et /crosssession sont généralement requises pour les services.

    Option

    Description

    /user:[Domain\]UserName

    Spécifie le domaine et le nom d'utilisateur du compte qui possède le processus de travail ASP.NET.Cette option est requise si le processus s'exécute en tant qu'un utilisateur autre que l'utilisateur connecté.Le propriétaire du processus est répertorié dans la colonne Nom d'utilisateur sous l'onglet Processus du Gestionnaire des tâches de Windows.

    /crosssession

    Active le profilage de processus dans d'autres ouvertures de session.Cette option est requise si l'application ASP.NET s'exécute dans une session différente.L'identificateur de session est répertorié dans la colonne Identificateur de session sous l'onglet Processus du Gestionnaire des tâches de Windows./CS peut être spécifié en tant qu'abréviation de /crosssession.

    /waitstart[:Interval]

    Spécifie le nombre de secondes d'attente lors de l'initialisation du profileur avant qu'une erreur ne soit retournée.Si Interval n'est pas spécifié, le profileur attend indéfiniment.Par défaut, /start est immédiatement retourné.

    /globaloff

    Pour démarrer le profileur avec la collecte de données en pause, ajoutez l'option /globaloff à la ligne de commande /start.Utilisez /globalon pour reprendre le profilage.

    /counter:Config

    Collecte des informations du compteur de performance de processeur spécifié dans Config.Des informations de compteur sont ajoutées aux données collectées à chaque événement de profilage.

    /wincounter:WinCounterPath

    Spécifie un compteur de performance Windows à collecter au cours du profilage.

    /automark:Interval

    À n'utiliser qu'avec /wincounter.Spécifie le nombre de millisecondes entre les événements de collecte du compteur de performance Windows.La valeur par défaut est de 500 ms.

    /events:Config

    Spécifie un événement ETW (Event Tracing for Windows) à collecter au cours du profilage.Les événements ETW sont collectés dans un fichier séparé (.etl).

  8. Si nécessaire, démarrez le service.

  9. Attachez le profileur au service.Type :

    **VSPerfCmd /attach:**PID|ProcessName

    • Spécifiez l'ID de processus ou le nom de processus du service.Vous pouvez afficher les ID et les noms de processus de tous les processus en cours d'exécution dans le Gestionnaire des tâches de Windows.

Contrôle de la collecte de données

Lorsque le service s'exécute, vous pouvez contrôler la collecte de données en démarrant et en arrêtant l'écriture de données dans le fichier à l'aide des options VSPerfCmd.exe.Le contrôle de la collecte de données vous permet de collecter des données pour une partie spécifique de l'exécution du programme, notamment le démarrage ou l'arrêt de l'application.

Pour démarrer et arrêter la collecte de données

  • Les paires suivantes d'options VSPerfCmd démarrent et arrêtent la collecte de données.Spécifiez chaque option sur une ligne de commande séparée.Vous pouvez activer et désactiver la collecte de données à plusieurs reprises.

    Option

    Description

    /globalon /globaloff

    Démarre (/globalon) ou arrête (/globaloff) la collecte de données pour tous les processus.

    /processon:PID/processoff:PID

    Démarre (/processon) ou arrête (/processoff) la collecte de données pour le processus spécifié par l'ID de processus (PID).

    /threadon:TID/threadoff:TID

    Démarre (/threadon) ou arrête (/threadoff) la collecte de données pour le thread spécifié par l'ID de thread (TID).

Fin de la session de profilage

Pour terminer une session de profilage, fermez l'application qui exécute le composant instrumenté, puis démarrez l'option VSPerfCmd /shutdown pour désactiver le profileur et fermer le fichier de données de profilage.La commande VSPerfClrEnv /globaloff désactive les variables d'environnement de profilage.

Pour terminer une session de profilage

  1. Arrêtez le service à partir du Gestionnaire de contrôle des services.

  2. Arrêtez le profileur.Type :

    VSPerfCmd /shutdown

  3. Une fois que vous avez terminé le profilage, effacez les variables d'environnement de profilage.Type :

    VSPerfClrEnv /globaloff

    Remplacez le module instrumenté par le module d'origine.Si nécessaire, reconfigurez le type de démarrage du service.

  4. Redémarrez l'ordinateur.

Voir aussi

Concepts

Profilage de services à partir de la ligne de commande

Autres ressources

Vues de données de mémoire .NET des outils de profilage