Mierzenie wydajności aplikacji z poziomu wiersza polecenia
Informacje o wydajności aplikacji można zbierać przy użyciu narzędzi wiersza polecenia. Dane wydajności użycia procesora CPU, alokacji pamięci platformy .NET, instrumentacji i zapytań bazy danych można zbierać.
W przykładzie opisanym w tym artykule zbierane są informacje o wydajności programu Microsoft Notepad, ale ta sama metoda może służyć do profilowania dowolnego procesu.
Uwaga
Aby wygenerować instrumentowany składnik C/C++ z wiersza polecenia, zobacz Instrumentacja natywnego składnika autonomicznego przed wykonaniem kroków opisanych w tym artykule. W przypadku danych użycia procesora CPU można użyć procedur opisanych w tym artykule.
Wymagania wstępne
Visual Studio 2019 lub nowsze wersje
Znajomość narzędzi wiersza polecenia
Aby zebrać informacje o wydajności na maszynie zdalnej bez zainstalowanego programu Visual Studio, zainstaluj narzędzia Remote Tools for Visual Studio na maszynie zdalnej. Wersja narzędzi musi być zgodna z wersją programu Visual Studio.
Zbieranie danych wydajności
Profilowanie przy użyciu narzędzi interfejsu wiersza polecenia diagnostyki programu Visual Studio działa przez dołączenie narzędzia profilowania wraz z jednym z agentów modułu zbierającego do procesu. Po dołączeniu narzędzia profilowania rozpoczniesz sesję diagnostyczną, która przechwytuje i przechowuje dane profilowania do momentu zatrzymania narzędzia, w którym to momencie dane są eksportowane do pliku diagsession . Następnie możesz otworzyć ten plik w programie Visual Studio, aby przeanalizować wyniki.
Uruchom Notatnik, a następnie otwórz Menedżera zadań, aby uzyskać identyfikator procesu (PID). W Menedżerze zadań znajdź identyfikator PID na karcie Szczegóły .
Otwórz wiersz polecenia i przejdź do katalogu przy użyciu pliku wykonywalnego agenta kolekcji, zazwyczaj w tym miejscu (dla programu Visual Studio Enterprise).
<Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\
<Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\
W przypadku narzędzi zdalnych plik wykonywalny agenta kolekcji znajduje się w tej lokalizacji:
Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\
Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\
Uwaga
W przypadku korzystania z wiersza polecenia w scenariuszach zdalnych należy uruchomić instrukcje wiersza polecenia na maszynie zdalnej. Jeśli chcesz dołączyć do maszyny zdalnej z programu Visual Studio, zamiast tego użyj profilera wydajności w programie Visual Studio.
Uruchom VSDiagnostics.exe, wpisując następujące polecenie.
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
Argumenty, które należy uwzględnić, to:
- <id> Identyfikuje sesję kolekcji. Identyfikator musi być liczbą z zakresu od 1 do 255.
- <pid>, PID procesu, który chcesz profilować, w tym przypadku identyfikator PID znaleziony w kroku 1.
- <configFile>, plik konfiguracji agenta kolekcji, który chcesz uruchomić. Aby uzyskać więcej informacji, zobacz Pliki konfiguracji agentów.
Na przykład można użyć następującego polecenia dla agenta CPUUsageBase, zastępując pid zgodnie z wcześniejszym opisem.
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
Alternatywnie możesz użyć
launch
polecenia , aby uruchomić plik wykonywalny. W tym scenariuszu nie musisz pobierać identyfikatora procesu i dołączać go do niego. Wszystkie narzędzia obsługująlaunch
polecenie , chociaż niektóre nie obsługująattach
narzędzia instrumentacji i alokacji platformy .NET. Na przykład użyj następującego polecenia, aby uruchomić plik wykonywalny i zebrać dane instrumentacji:VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
Zmień rozmiar Notatnika lub wpisz coś w nim, aby upewnić się, że zbierane są interesujące informacje o profilowaniu.
Zatrzymaj sesję zbierania i wyślij dane wyjściowe do pliku, wpisując następujące polecenie.
VSDiagnostics.exe stop <id> /output:<path to file>
Znajdź dane wyjściowe pliku diagsession z poprzedniego polecenia i otwórz je w programie Visual Studio (otwórz plik>), aby sprawdzić zebrane informacje.
Aby przeanalizować wyniki, zapoznaj się z dokumentacją odpowiedniego narzędzia wydajności. Na przykład może to być użycie procesora CPU, narzędzie alokacji obiektów platformy .NET, instrumentacja lub narzędzie bazy danych .
Pliki konfiguracji agenta
Agenci kolekcji są składnikami zamiennymi, które zbierają różne typy danych w zależności od tego, co próbujesz zmierzyć.
Dla wygody zalecamy przechowywanie tych informacji w pliku konfiguracji agenta. Plik konfiguracji jest plikiem .json zawierającym co najmniej nazwę .dll i jego identyfikator CLSID COM. Domyślnie przykładowe pliki konfiguracji można znaleźć w następującym folderze:
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
Konfiguracje procesora CPUUsage (podstawowe/wysokie/niskie) odpowiadają danym zebranym dla narzędzia profilowania użycia procesora CPU. Konfiguracje DotNetObjectAlloc (Base/Low) odpowiadają danym zebranym dla narzędzia alokacji obiektów platformy .NET.
Konfiguracje podstawowe/niskie/wysokie odnoszą się do częstotliwości próbkowania. Na przykład niski to 100 próbek/sekund, a Wartość Wysoka to 4000 próbek na sekundę.
Aby narzędzie VSDiagnostics.exe działało z agentem kolekcji, wymaga zarówno biblioteki DLL, jak i identyfikatora CLSID com dla odpowiedniego agenta. Agent może również mieć dodatkowe opcje konfiguracji, które byłyby wszelkie opcje określone w pliku konfiguracji, sformatowane jako prawidłowo uniknięte JSON.
Uprawnienia
Aby profilować aplikację, która wymaga podwyższonych uprawnień, należy to zrobić w wierszu polecenia z podwyższonym poziomem uprawnień.