Mierzenie wydajności aplikacji z poziomu wiersza polecenia
Informacje o wydajności aplikacji można zbierać przy użyciu narzędzi wiersza polecenia. Dane dotyczące wydajności użycia CPU, alokacji pamięci .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.
Notatka
Aby wygenerować instrumentowany składnik C/C++ z wiersza polecenia, zobacz Instrumentowanie natywnego samodzielnego składnika przed przystąpieniem do wykonywania kroków opisanych w tym artykule. W przypadku danych użycia procesora CPU można użyć procedur opisanych w tym artykule.
Warunki wstępne
Visual Studio 2019 lub nowsze wersje
Znajomość narzędzi wiersza polecenia
Aby zebrać informacje o wydajności na komputerze zdalnym bez zainstalowanego programu Visual Studio, zainstaluj Remote Tools for Visual Studio na komputerze zdalnym. Wersja narzędzi musi być zgodna z wersją programu Visual Studio.
Większość agentów zbierających dane obsługuje platformy .NET Core, .NET 5+, .NET Framework i C++. Obsługa jest jednak ograniczona do wsparcia przez odpowiednie narzędzie wydajności. Na przykład agent zbierający dane Database jest ograniczony do platformy .NET Core i .NET 5+.
Zbieranie danych wydajności
Profilowanie przy użyciu narzędzi diagnostycznych CLI Visual Studio działa poprzez dołączenie narzędzia profilującego razem z jednym z agentów zbierających 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 z plikiem wykonywalnym agenta kolekcji, zazwyczaj znajdującym się tutaj (dla 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 zbierania 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\
Notatka
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ę zbierania. 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 zbierającego, który chcesz uruchomić. Aby uzyskać więcej informacji, zobacz pliki konfiguracji dla 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ć polecenia
launch
, aby uruchomić plik wykonywalny. W tym scenariuszu nie musisz pobierać identyfikatora procesu i podłączać się do niego. Wszystkie narzędzia obsługują polecenielaunch
, chociaż nie wszystkie obsługująattach
, takie jak narzędzie do instrumentacji i alokacji w platformie .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ź plik wyjściowy .diagsession z poprzedniego polecenia i otwórz go w programie Visual Studio (File>Open), by 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, narzędzie alokacji obiektów platformy .NET, instrumentacja , lub narzędzie Database .
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życie 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 wartość niska to 100 próbek na sekundę, a wartość wysoka to 4000 próbek na sekundę.
Aby narzędzie VSDiagnostics.exe współpracowało z agentem zbierającym, wymaga zarówno biblioteki DLL, jak i identyfikatora CLSID COM dla odpowiedniego agenta. Agent może również mieć dodatkowe opcje konfiguracji, które obejmują wszelkie opcje określone w pliku konfiguracji, sformatowane jako prawidłowo sformatowany JSON.
Uprawnienia
Aby profilować aplikację, która wymaga podwyższonych uprawnień, należy to zrobić w wierszu polecenia z podwyższonym poziomem uprawnień.