Mäta programprestanda från kommandoraden
Du kan samla in prestandainformation om ett program med hjälp av kommandoradsverktyg. Du kan samla in prestandadata för CPU-användning, .NET-minnesallokering, instrumentation och databasfrågor.
I exemplet som beskrivs i den här artikeln samlar du in prestandainformation för Microsoft Notepad, men samma metod kan användas för att profilera alla processer.
Not
För att generera en instrumenterad C/C++-komponent från kommandoraden, se Instrument a native stand-alone component innan du följer stegen i denna artikel. För cpu-användningsdata kan du använda de procedurer som beskrivs i den här artikeln.
Förutsättningar
Visual Studio 2019 eller senare versioner
Kunskaper om kommandoradsverktyg
Om du vill samla in prestandainformation på en fjärrdator utan Visual Studio installerat installerar du Fjärrverktyg för Visual Studio på fjärrdatorn. Versionen av verktygen måste matcha din version av Visual Studio.
De flesta samlingsagenter stöder .NET Core, .NET 5+, .NET Framework och C++. Stödet är dock begränsat till det stöd som tillhandahålls av motsvarande prestandaverktyg. Till exempel är Database-samlingsagenten begränsad till .NET Core och .NET 5+.
Insamla prestandadata
Profilering med VISUAL Studio Diagnostics CLI-verktyg fungerar genom att profileringsverktyget, tillsammans med en av insamlarens agenter, kopplas till en process. När du bifogar profileringsverktyget påbörjar du en diagnostiksession som samlar in och lagrar profileringsdata tills verktyget stoppas, då dessa data exporteras till en .diagsession fil. Sedan kan du öppna den här filen i Visual Studio för att analysera resultat.
Starta Anteckningar och öppna sedan Aktivitetshanteraren för att hämta dess process-ID (PID). I Aktivitetshanteraren hittar du PID:t på fliken Information.
Öppna en kommandotolk och ändra till katalogen med den körbara samlingsagenten, vanligtvis här (för Visual Studio Enterprise).
<Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\
<Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\
För fjärrverktygen finns den körbara samlingsagenten på den här platsen:
Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\
Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\
Not
När du använder kommandoraden i fjärrscenarier måste du köra kommandoradsinstruktionerna på fjärrdatorn. Om du vill ansluta till fjärrdatorn från Visual Studio använder du Prestandaprofiler i Visual Studio i stället.
Starta VSDiagnostics.exe genom att skriva följande kommando.
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
Argumenten som måste ingå är:
- < ID> Identifierar samlingssessionen. ID:t måste vara ett tal mellan 1 och 255.
- < pid>, PID för den process som du vill profilera, i det här fallet pid som du hittade i steg 1.
- < configFile>, konfigurationsfil för den samlingsagent som du vill starta. Mer information finns i Konfigurationsfiler för agenter.
Du kan till exempel använda följande kommando för CPUUsageBase-agenten genom att ersätta pid- enligt beskrivningen tidigare.
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
Du kan också använda kommandot
launch
för att starta en körbar fil. I det här scenariot behöver du inte hämta process-ID:t och koppla till det. Alla verktyg stöder kommandotlaunch
, även om vissa inte stöderattach
, till exempel verktyget Instrumentation och .NET Allocation. Använd till exempel följande för att starta en körbar fil och samla in instrumentationsdata:VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
Ändra storlek på Anteckningar eller skriv in något i det för att se till att viss intressant profileringsinformation samlas in.
Stoppa samlingssessionen och skicka utdata till en fil genom att skriva följande kommando.
VSDiagnostics.exe stop <id> /output:<path to file>
Hitta filen .diagsession från föregående kommando och öppna den i Visual Studio (File>Open) för att granska den insamlade informationen.
Information om hur du analyserar resultaten finns i dokumentationen för motsvarande prestandaverktyg. Det kan till exempel vara CPU-användning, .NET-objektallokeringsverktyg, Instrumentationeller verktyget Database.
Agentkonfigurationsfiler
Samlingsagenter är utbytbara komponenter som samlar in olika typer av data beroende på vad du försöker mäta.
För enkelhetens skull rekommenderar vi att du lagrar den informationen i en agentkonfigurationsfil. Konfigurationsfilen är en .json fil som minst innehåller namnet på .dll och dess COM CLSID. Som standard hittar du exempelkonfigurationsfilerna i följande mapp:
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
CpuUsage-konfigurationer (bas/hög/låg) motsvarar data som samlats in för processoranvändning profileringsverktyget. DotNetObjectAlloc-konfigurationer (base/low) motsvarar data som samlats in för verktyget .NET-objektallokering.
Bas-/låg-/hög-konfigurationer refererar till samplingsfrekvensen. Låg är till exempel 100 exempel/sekund och Hög är 4 000 exempel/sekund.
För att VSDiagnostics.exe verktyget ska fungera med en samlingsagent krävs både en DLL och ett COM CLSID för lämplig agent. Agenten kan också ha ytterligare konfigurationsalternativ, det vill säga alla alternativ som anges i konfigurationsfilen, formaterad som korrekt maskerad JSON.
Behörigheter
Om du vill profilera ett program som kräver utökade behörigheter måste du göra det från en upphöjd kommandotolk.