Toepassingsprestaties meten vanaf de opdrachtregel
U kunt prestatiegegevens over een toepassing verzamelen met behulp van opdrachtregelprogramma's. U kunt prestatiegegevens verzamelen voor CPU-gebruik, .NET-geheugentoewijzing, instrumentatie en databasequery's.
In het voorbeeld dat in dit artikel wordt beschreven, verzamelt u prestatiegegevens voor Microsoft Kladblok, maar dezelfde methode kan worden gebruikt om elk proces te profilen.
Notitie
Als u een C/C++-component wilt instrumenteren via de opdrachtregel, ziet u Instrumenteren van een systeemeigen zelfstandig component voordat u de stappen in dit artikel volgt. Voor cpu-gebruiksgegevens kunt u de procedures gebruiken die in dit artikel worden beschreven.
Voorwaarden
Visual Studio 2019 of nieuwere versies
Bekendheid met opdrachtregelprogramma's
Als u prestatiegegevens wilt verzamelen op een externe computer waarop Visual Studio niet is geĆÆnstalleerd, installeert u de Remote Tools for Visual Studio op de externe computer. De versie van de hulpprogramma's moet overeenkomen met uw versie van Visual Studio.
De meeste verzamelingsagenten ondersteunen .NET Core, .NET 5+, .NET Framework en C++. Ondersteuning is echter beperkt tot de ondersteuning die wordt geboden door het bijbehorende prestatiehulpprogramma. De Database-verzamelingsagent is bijvoorbeeld beperkt tot .NET Core en .NET 5+.
Prestatiegegevens verzamelen
Profilering met behulp van de CLI-hulpprogramma's van Visual Studio Diagnostics werkt door het profileringsprogramma, samen met een van de collectoragents, aan een proces te koppelen. Wanneer u het profileringsprogramma koppelt, begint u een diagnostische sessie die profileringsgegevens vastlegt en opslaat totdat het hulpprogramma is gestopt, waarna die gegevens worden geƫxporteerd naar een .diagsession bestand. Vervolgens kunt u dit bestand openen in Visual Studio om resultaten te analyseren.
Start Kladblok en open vervolgens Taakbeheer om de bijbehorende proces-id (PID) op te halen. Zoek in Taakbeheer de PID op het tabblad Details.
Open een opdrachtprompt en ga naar de map met het uitvoerbare bestand van de verzamelingsagent, meestal hier (voor Visual Studio Enterprise).
<Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\
<Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\
Voor de externe hulpprogramma's bevindt het uitvoerbare bestand van de verzamelingsagent zich op deze locatie:
Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\
Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\
Notitie
Wanneer u de opdrachtregel in externe scenario's gebruikt, moet u de opdrachtregelinstructies uitvoeren op de externe computer. Als u wilt koppelen aan de externe computer vanuit Visual Studio, gebruikt u in plaats daarvan Performance Profiler in Visual Studio.
Start VSDiagnostics.exe door de volgende opdracht te typen.
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
De argumenten die moeten worden opgenomen, zijn:
- < id> Identificeert de verzamelingssessie. De id moet een getal tussen 1-255 zijn.
- < pid>, PID van het proces dat u wilt profilen, in dit geval de PID die u in stap 1 hebt gevonden.
- < configFile>, configuratiebestand voor de verzamelingsagent die u wilt starten. Zie Configuratiebestanden voor agentsvoor meer informatie.
U kunt bijvoorbeeld de volgende opdracht gebruiken voor de CPUUsageBase-agent door de pid- te vervangen zoals eerder is beschreven.
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
U kunt ook de opdracht
launch
gebruiken om een uitvoerbaar bestand te starten. In dit scenario hoeft u de proces-id niet op te halen en eraan te koppelen. Alle hulpprogramma's ondersteunen de opdrachtlaunch
, hoewel sommige geen ondersteuning bieden voorattach
, zoals het hulpprogramma Instrumentatie en .NET-toewijzing. Gebruik bijvoorbeeld het volgende om een uitvoerbaar bestand te starten en instrumentatiegegevens te verzamelen:VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
Wijzig het formaat van Kladblok of typ er iets in om ervoor te zorgen dat er interessante profileringsgegevens worden verzameld.
Stop de verzamelingssessie en verzend uitvoer naar een bestand door de volgende opdracht te typen.
VSDiagnostics.exe stop <id> /output:<path to file>
Zoek de .diagsession bestanduitvoer van de vorige opdracht en open het in Visual Studio (File>Open) om de verzamelde gegevens te bekijken.
Als u de resultaten wilt analyseren, raadpleegt u de documentatie voor het bijbehorende prestatiehulpprogramma. Dit kan bijvoorbeeld het CPU-gebruikzijn, hulpprogramma voor .NET-objecttoewijzing, Instrumentatieof het hulpprogramma Database.
Agentconfiguratiebestanden
Verzamelingsagents zijn uitwisselbare onderdelen die verschillende soorten gegevens verzamelen, afhankelijk van wat u probeert te meten.
Voor het gemak raden we u aan die informatie op te slaan in een agentconfiguratiebestand. Het configuratiebestand is een .json bestand dat minimaal de naam van de .dll en de bijbehorende COM CLSID bevat. Standaard vindt u de voorbeeldconfiguratiebestanden in de volgende map:
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
CpuUsage-configuraties (basis/hoog/laag) komen overeen met gegevens die worden verzameld voor het CPU-gebruik profileringsprogramma. DotNetObjectAlloc-configuraties (base/laag) komen overeen met gegevens die zijn verzameld voor het hulpprogramma voor .NET-objecttoewijzing.
Basis-/lage/hoge configuraties verwijzen naar de steekproeffrequentie. Laag is bijvoorbeeld 100 steekproeven/seconde en Hoog is 4000 steekproeven/seconde.
Het VSDiagnostics.exe hulpprogramma kan alleen met een verzamelingsagent werken als zowel een DLL als een COM CLSID voor de juiste agent zijn vereist. De agent kan ook aanvullende configuratieopties hebben. Dit zijn eventuele opties die zijn opgegeven in het configuratiebestand, opgemaakt als correct escape-JSON.
Machtigingen
Als u een toepassing wilt profilen waarvoor verhoogde machtigingen zijn vereist, moet u dit doen vanaf een opdrachtprompt met verhoogde bevoegdheid.