Mesurer les performances de l’application à partir de la ligne de commande
Vous pouvez collecter des informations sur les performances 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 de base de données.
Dans l’exemple décrit dans cet article, vous collectez des informations de performances pour le Bloc-notes Microsoft, mais la même méthode peut être utilisée pour profiler n’importe quel processus.
Remarque
Pour générer un composant C/C++ instrumenté à partir de la ligne de commande, consultez Instrumenter un composant autonome natif avant de suivre les étapes décrites dans cet article. Pour les données d’utilisation du processeur, vous pouvez utiliser les procédures décrites dans cet article.
Conditions préalables
Visual Studio 2019 ou versions ultérieures
Connaissance des outils en ligne de commande
Pour collecter des informations de performances sur un ordinateur distant sans Visual Studio installé, installez les Remote Tools pour Visual Studio sur l’ordinateur distant. La version des outils doit correspondre à votre version de Visual Studio.
La plupart des agents de collecte prennent en charge .NET Core, .NET 5+, .NET Framework et C++. Toutefois, le support est limité à celui fourni par l’outil de performances correspondant. Par exemple, l’agent de collecte Database est limité à .NET Core et .NET 5+.
Collecter des données de performances
Le profilage à l’aide des outils CLI diagnostics Visual Studio fonctionne en attachant l’outil de profilage, ainsi qu’un des agents collecteurs, à un processus. Lorsque vous attachez l’outil de profilage, vous démarrez une session de diagnostic qui capture et stocke les données de profilage jusqu’à ce que l’outil soit arrêté, à quel moment les données sont exportées dans un fichier .diagsession. Vous pouvez ensuite ouvrir ce fichier dans Visual Studio pour analyser les résultats.
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 dans l'onglet Détails.
Ouvrez une invite de commandes et accédez au répertoire contenant l’exécutable de l’agent de collecte, généralement situé 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
Lorsque vous utilisez la ligne de commande dans des scénarios distants, vous devez exécuter les instructions de ligne de commande sur l’ordinateur distant. Si vous souhaitez attacher la machine distante à partir de Visual Studio, utilisez plutôt le profileur de performances dans Visual Studio.
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>, PID du processus que vous souhaitez profiler, dans ce cas le PID que vous avez trouvé à l’étape 1.
- <configFile>, fichier de configuration de l’agent de collecte que vous souhaitez lancer. Pour plus d’informations, consultez Fichiers de configuration pour les 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 commandelaunch
, bien que certains ne prennent pas en chargeattach
, tels que l’outil Instrumentation et .NET Allocation. Par exemple, utilisez les éléments suivants pour démarrer un exécutable et collecter des données d’instrumentation :VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
Redimensionnez le Bloc-notes ou tapez un élément dans celui-ci pour vous assurer que certaines informations de profilage intéressantes sont collectées.
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>
Recherchez la sortie du fichier .diagsession de la commande précédente, puis ouvrez-la dans Visual Studio (Fichier>Ouvrir) pour examiner les informations collectées.
Pour analyser les résultats, consultez la documentation de l’outil de performances correspondant. Par exemple, il peut s’agir de l'utilisation du processeur, outil d’allocation d’objets .NET, Instrumentationou de l’outil Database.
Fichiers de configuration de l’agent
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 plus de commodité, nous vous recommandons de stocker ces informations dans un fichier de configuration de l’agent. Le fichier de configuration est un fichier .json qui contient au minimum le nom du .dll et son CLSID COM. Par défaut, vous trouverez les exemples de fichiers de configuration dans le dossier suivant :
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
Les configurations CpuUsage (Base/High/Low) correspondent aux données collectées pour l’outil de profilage Utilisation du processeur. Les configurations DotNetObjectAlloc (base/faible) correspondent aux données collectées pour l’outil d’allocation d’objets .NET .
Les configurations de base/faible/élevée font référence au taux d’échantillonnage. Par exemple, Low est de 100 échantillons/seconde et High est de 4 000 échantillons/seconde.
Pour que l’outil VSDiagnostics.exe fonctionne avec un agent de collection, il nécessite à la fois une DLL et un CLSID COM pour l’agent approprié. L’agent peut également avoir des options de configuration supplémentaires, qui incluent toutes les options spécifiées dans le fichier de configuration, formatées en JSON correctement échappé.
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.