Misurare le prestazioni dell'applicazione dalla riga di comando
È possibile raccogliere informazioni sulle prestazioni di un'applicazione usando gli strumenti da riga di comando. È possibile raccogliere dati sulle prestazioni per l'utilizzo della CPU, l'allocazione di memoria .NET, la strumentazione e le query di database.
Nell'esempio descritto in questo articolo si raccolgono informazioni sulle prestazioni per Il Blocco note Microsoft, ma lo stesso metodo può essere usato per profilare qualsiasi processo.
Nota
Per generare un componente C/C++ instrumentato dalla riga di comando, vedere Instrumentare un componente autonomo nativo prima di seguire i passaggi descritti in questo articolo. Per i dati di utilizzo della CPU, è possibile usare le procedure descritte in questo articolo.
Prerequisiti
Visual Studio 2019 o versioni successive
Familiarità con gli strumenti da riga di comando
Per raccogliere informazioni sulle prestazioni in un computer remoto senza Visual Studio installato, installare il Remote Tools per Visual Studio nel computer remoto. La versione degli strumenti deve corrispondere alla versione di Visual Studio.
La maggior parte degli agenti di raccolta supporta .NET Core, .NET 5+, .NET Framework e C++. Tuttavia, il supporto è limitato al supporto fornito dallo strumento di prestazioni corrispondente. Ad esempio, l'agente di raccolta database è limitato a .NET Core e .NET 5+.
Raccogliere dati sulle prestazioni
La profilazione con gli strumenti CLI di Diagnostica di Visual Studio funziona collegando lo strumento di profilazione, insieme a uno degli agenti di raccolta, a un processo. Quando si collega lo strumento di profilatura, si inizia una sessione di diagnostica che acquisisce e archivia i dati di profilatura fino a quando lo strumento non viene arrestato, a quel punto i dati vengono esportati in un file .diagsession. È quindi possibile aprire questo file in Visual Studio per analizzare i risultati.
Avvia il Blocco note e poi apri Gestione attività per ottenere l'ID processo (PID). In Task Manager, individuare il PID nella scheda Dettagli.
Aprire un prompt dei comandi e passare alla directory con l'eseguibile dell'agente di raccolta, in genere qui (per Visual Studio Enterprise).
<Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\
<Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\
Per gli strumenti remoti, l'eseguibile dell'agente di raccolta si trova in questo percorso:
Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\
Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\
Nota
Quando si usa la riga di comando in scenari remoti, è necessario eseguire le istruzioni della riga di comando nel computer remoto. Se si vuole connettersi al computer remoto da Visual Studio, invece usare il Profiler delle prestazioni in Visual Studio.
Avviare VSDiagnostics.exe digitando il comando seguente.
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
Gli argomenti che devono essere inclusi sono:
- < id> Identifica la sessione di raccolta. L'ID deve essere un numero compreso tra 1 e 255.
- < pid>, PID del processo da profilare, in questo caso il PID trovato nel passaggio 1.
- < configFile>, file di configurazione per l'agente di raccolta da avviare. Per altre informazioni, vedere File di configurazione per gli agenti.
Ad esempio, è possibile usare il comando seguente per l'agente CPUUsageBase sostituendo il pid come descritto in precedenza.
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
In alternativa, è possibile usare il comando
launch
per avviare un eseguibile. In questo scenario, non è necessario ottenere l'ID del processo né collegarsi ad esso. Tutti gli strumenti supportano il comandolaunch
, anche se alcuni, come lo strumento di strumentazione e lo strumento di allocazione .NET, non supportanoattach
. Ad esempio, usare quanto segue per avviare un eseguibile e raccogliere i dati di strumentazione:VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
Ridimensiona blocco note o digita qualcosa in esso per assicurarti che vengano raccolte alcune informazioni di profilatura interessanti.
Arrestare la sessione di raccolta e inviare l'output a un file digitando il comando seguente.
VSDiagnostics.exe stop <id> /output:<path to file>
Individuare l'output del file .diagsession del comando precedente e aprirlo in Visual Studio (File>Apri) per esaminare le informazioni raccolte.
Per analizzare i risultati, vedere la documentazione relativa allo strumento di prestazioni corrispondente. Ad esempio, potrebbe trattarsi dello strumento Utilizzo CPU, strumento allocazione oggetti .NET, Strumentazioneo dello strumento database.
File di configurazione dell'agente
Gli agenti di raccolta sono componenti intercambiabili che raccolgono diversi tipi di dati a seconda di ciò che si sta tentando di misurare.
Per praticità, è consigliabile archiviare tali informazioni in un file di configurazione dell'agente. Il file di configurazione è un file di .json che contiene almeno il nome del .dll e il relativo CLSID COM. Per impostazione predefinita, è possibile trovare i file di configurazione di esempio nella cartella seguente:
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
Le configurazioni CpuUsage (Base/High/Low) corrispondono ai dati raccolti per lo strumento di profilatura uso CPU . Le configurazioni DotNetObjectAlloc (Base/Low) corrispondono ai dati raccolti per lo strumento di allocazione oggetti .NET .
Le configurazioni base/bassa/alta fanno riferimento alla frequenza di campionamento. Ad esempio, Low è 100 campioni al secondo e High è 4000 campioni al secondo.
Affinché lo strumento VSDiagnostics.exe funzioni con un agente di raccolta, richiede sia una DLL che un CLSID COM per l'agente appropriato. L'agente potrebbe avere anche opzioni di configurazione aggiuntive, che sarebbero le opzioni specificate nel file di configurazione, formattate come JSON correttamente precedute da escape.
Autorizzazioni
Per profilare un'applicazione che richiede autorizzazioni elevate, è necessario eseguire questa operazione da un prompt dei comandi con privilegi elevati.