Udostępnij za pośrednictwem


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.

  1. 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.

  2. 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.

  3. 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ą polecenie launch, 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
    
  4. Zmień rozmiar Notatnika lub wpisz coś w nim, aby upewnić się, że zbierane są interesujące informacje o profilowaniu.

  5. 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>
    
  6. 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ń.