Mesurer les performances d’une application à partir de la ligne de commande

Vous pouvez collecter des informations sur le niveau de performance d’une application à l’aide d’outils en ligne de commande. Vous pouvez collecter des données de performances pour l’utilisation du processeur, l’allocation de mémoire .NET, l’instrumentation et les requêtes vers la base de données.

Dans l’exemple décrit dans cet article, vous collectez des informations sur le niveau de performance du Bloc-notes Microsoft, mais la même méthode peut servir à profiler n’importe quel processus.

Note

Pour l’instrumentation C/C++ à partir de la ligne de commande, consultez Instrumentation d’un composant autonome natif. Pour les données d’utilisation du processeur, vous pouvez utiliser les procédures décrites dans cet article.

Prerequisites

  • Visual Studio 2019 ou versions ultérieures

  • Connaissance des outils en ligne de commande

  • Pour collecter des informations sur les performances sur un ordinateur distant sans que Visual Studio ne soit installé, installez les Outils de contrôle à distance de Visual Studio sur l’ordinateur distant. La version des outils doit correspondre à votre version de Visual Studio.

Collecter des données de performances

Pour profiler une application à l’aide des outils CLI de diagnostics Visual Studio, l’outil de profilage et l’un des agents collecteurs sont attachés à un processus. Quand vous attachez l’outil de profilage, vous débutez une session de diagnostic qui capture et stocke des données de profilage jusqu’à l’arrêt de l’outil, après quoi ces données sont exportées dans un fichier .diagsession. Vous pouvez ensuite ouvrir ce fichier dans Visual Studio pour analyser les résultats.

  1. Démarrez le Bloc-notes, puis ouvrez le Gestionnaire des tâches pour obtenir son ID de processus (PID). Dans le Gestionnaire des tâches, recherchez le PID sous l’onglet Détails.

  2. Ouvrez une invite de commandes et passez au répertoire de l’exécutable de l’agent de collecte, qui se trouve généralement ici (pour Visual Studio Enterprise).

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\

    Pour les outils distants, l’exécutable de l’agent de collecte se trouve à cet emplacement :

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\

    Remarque

    Quand vous utilisez la ligne de commande dans des scénarios à distance, vous devez exécuter les instructions de ligne de commande sur la machine distante. Si vous voulez attacher la machine distante depuis Visual Studio, utilisez à la place le profileur de performances dans Visual Studio.

  3. Démarrez VSDiagnostics.exe en tapant la commande suivante :

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    Les arguments qui doivent être inclus sont les suivants :

    • <id> identifie la session de collecte. L’ID doit être un nombre compris entre 1 et 255.
    • <pid> correspond au PID du processus à profiler, dans ce cas le PID identifié à l’étape 1.
    • <configFile> correspond au fichier de configuration de l’agent de collecte que vous souhaitez lancer. Pour plus d’informations, consultez Fichiers de configuration des agents.

    Par exemple, vous pouvez utiliser la commande suivante pour l’agent CPUUsageBase en remplaçant le pid comme décrit précédemment.

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    Vous pouvez également utiliser la commande launch pour démarrer un exécutable. Dans ce scénario, vous n’avez pas besoin de l’ID de processus et de l’attacher à celui-ci. Tous les outils prennent en charge la commande launch, même si certains ne prennent pas en charge attach, tels que l’instrumentation et l’outil d’allocation .NET. Utilisez par exemple ce qui suit pour démarrer un exécutable et collecter des données d’instrumentation :

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. Redimensionnez le Bloc-notes ou tapez quelque chose pour que des informations de profilage intéressantes soient collectées.

  5. Arrêtez la session de collecte et envoyez la sortie à un fichier en tapant la commande suivante :

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. Recherchez la sortie du fichier .diagsession de la commande précédente et ouvrez-la dans Visual Studio (Fichier>Ouvrir) pour examiner les informations collectées.

    Pour analyser les résultats, consultez la documentation sur l’outil des performances correspondant. Par exemple, il peut s’agir de l’outil Utilisation du processeur, de l’outil Allocation d’objets .NET, de l’outil Instrumentation ou de l’outil Base de données.

Fichiers de configuration des agents

Les agents de collecte sont des composants interchangeables qui collectent différents types de données en fonction de ce que vous essayez de mesurer.

Pour des raisons pratiques, nous vous recommandons de stocker ces informations dans un fichier de configuration d’agent. Le fichier de configuration est un fichier .json qui contient au minimum le nom du fichier .dll et son CLSID COM. Vous pouvez trouver les exemples de fichiers config par défaut dans le dossier suivant :

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

CpuUsage configurations (Base/High/Low) correspond aux données collectées pour l’outil de profilage Utilisation du processeur. DotNetObjectAlloc configurations (Base/Low) correspond aux données collectées pour l’outil Allocation d’objets .NET.

Les configurations Base/Low/High font référence au taux d’échantillonnage. Par exemple, Low correspond à 100 échantillons/seconde et High à 4 000 échantillons/seconde.

Pour que l’outil VSDiagnostics.exe fonctionne avec un agent de collecte, il nécessite une DLL et un CLSID COM pour l’agent approprié. L’agent peut également avoir des options de configuration supplémentaires, à savoir toutes les options spécifiées dans le fichier de configuration, au format JSON correctement placé dans une séquence d’échappement.

Autorisations

Pour profiler une application qui nécessite des autorisations élevées, vous devez le faire à partir d’une invite de commandes avec élévation de privilèges.