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 usługi Microsoft Notatnik, ale ta sama metoda może służyć do profilowania dowolnego procesu.

Uwaga

Aby uzyskać instrumentację języka C/C++ z wiersza polecenia, zobacz Instrumentacja natywnego składnika autonomicznego. 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.

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

  3. Uruchom plik 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ą attachnarzę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
    
  4. Zmień rozmiar Notatnik 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ź 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ę biblioteki DLL i 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 współpracował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ń.