Messen der Anwendungsleistung über die Befehlszeile

Über die Befehlszeilentools können Sie Leistungsinformationen zu einer Anwendung sammeln. Sie können Leistungsdaten für CPU-Auslastung, .NET-Speicherzuordnung, Instrumentierung und Datenbankabfragen sammeln.

In dem Beispiel, das in diesem Artikel beschrieben wird, sammeln Sie Leistungsinformationen zum Microsoft Notepad. Dieselbe Methode kann aber auch verwendet werden, um jeden anderen Prozess zu profilen.

Hinweis

Informationen zur C/C++-Instrumentierung über die Befehlszeile finden Sie unter Instrumentieren einer nativen eigenständigen Komponente. Für CPU-Auslastungsdaten können Sie die in diesem Artikel beschriebenen Verfahren verwenden.

Voraussetzungen

  • Visual Studio 2019 oder höher

  • Kenntnisse im Umgang mit Befehlszeilentools

  • Installieren Sie die Remotetools für Visual Studio auf dem Remotecomputer, um Leistungsinformationen auf einem Remotecomputer zu erfassen, auf dem Visual Studio nicht installiert ist. Die Version der Tools muss mit Ihrer Version von Visual Studio übereinstimmen.

Sammeln von Leistungsdaten

Bei der Profilerstellung mithilfe der CLI-Diagnosetools von Visual Studio wird das Profilerstellungstool zusammen mit einem der Collector-Agenten an einen Prozess angefügt. Wenn Sie das Profilerstellungstool anfügen, beginnen Sie eine Diagnosesitzung, die solange Profilerstellungsdaten aufnimmt und speichert, bis das Tool beendet wird. Dann werden die Daten in eine .diagsession-Datei exportiert. Diese Datei können Sie dann in Visual Studio öffnen, um die Ergebnisse zu analysieren.

  1. Starten Sie das Notepad, und öffnen Sie dann den Taskmanager, um seine Prozess-ID (PID) zu erhalten. Im Taskmanager finden Sie die PID in der Registerkarte Details.

  2. Öffnen Sie eine Eingabeaufforderung, und wechseln Sie zum Verzeichnis mit dem ausführbaren Sammlungs-Agent, das sich normalerweise hier (für Visual Studio Enterprise) befindet:

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\

    Für die Remote-Tools befindet sich die ausführbare Datei des Sammlungs-Agents an diesem Speicherort:

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\

    Hinweis

    Wenn Sie die Befehlszeile in Remote-Szenarien verwenden, müssen Sie die Befehlszeilenanweisungen auf dem Remotecomputer ausführen. Wenn Sie den Remotecomputer von Visual Studio aus anfügen möchten, verwenden Sie stattdessen den Performance Profiler in Visual Studio.

  3. Starten Sie VSDiagnostics.exe, indem Sie den folgenden Befehl ausführen.

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    Folgende Argumente müssen eingeschlossen werden:

    • <id> Identifiziert die Sammlungssitzung. Die ID muss eine Zahl im Bereich von 1 bis 255 sein.
    • <pid>, die PID des Prozesses, den Sie profilen möchten. Hier also die PID, die Sie in Schritt 1 abgerufen haben.
    • <configFile>, Konfigurationsdatei des Sammlungs-Agents, den Sie starten möchten. Weitere Informationen finden Sie unter Runtime Configuration Files (Konfigurationsdateien der Runtime).

    Beispielsweise können Sie den folgenden Befehl für den CPUUsageBase-Agent verwenden, indem Sie die pid wie zuvor beschrieben ersetzen.

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    Alternativ können Sie den Befehl launch verwenden, um eine ausführbare Datei zu starten. In diesem Szenario müssen Sie die Prozess-ID nicht abrufen und anfügen. Alle Tools unterstützen den Befehl launch, obwohl einige attach nicht unterstützen, z. B. das Instrumentierungs- und .NET-Zuordnungstool. Verwenden Sie beispielsweise Folgendes, um eine ausführbare Datei zu starten und Instrumentierungsdaten zu sammeln:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. Ändern Sie die Größe des Notepads, oder geben Sie etwas ein, damit einige aussagekräftige Profilerstellungsinformationen gesammelt werden können.

  5. Halten Sie die Sammlungssitzung an, und senden Sie die Ausgabe an eine Datei, indem Sie den folgenden Befehl eingeben.

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. Wechseln Sie zur Ausgabe der DIAGSESSION-Datei aus dem vorherigen Befehl, und öffnen Sie sie in Visual Studio (Datei>Öffnen), um die erfassten Informationen zu untersuchen.

    Informationen zum Analysieren der Ergebnisse finden Sie in der Dokumentation zum entsprechenden Leistungstool. Dies kann z. B. das Tool CPU-Auslastung, .NET-Objektzuordnung, Instrumentierung oder Datenbank sein.

Agent-Konfigurationsdateien

Sammlungs-Agents sind austauschbare Komponenten, die verschiedene Datentypen sammeln, je nachdem, was gemessen werden soll.

Der Einfachheit halber wird empfohlen, diese Informationen in einer Agent-Konfigurationsdatei zu speichern. Die Konfigurationsdatei ist eine .json-Datei, die mindestens den Namen der .dll-Datei und deren COM-CLSID enthält. Im folgenden Ordner finden Sie standardmäßig die Beispielkonfigurationsdateien:

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

Konfigurationen für die CPU-Nutzung (CpuUsage) (Standard/Hoch/Niedrig). entsprechen den Daten, die für das Profilerstellungstool für die CPU-Auslastung gesammelt wurden. DotNetObjectAlloc-Konfigurationen (Standard/Niedrig) entsprechen den Daten, die für das .NET-Objektzuteilungstool gesammelt wurden.

Die Konfigurationen „Standard“, „Niedrig“ und „Hoch“ beziehen sich auf die Stichprobenentnahmerate. So bedeutet „Niedrig“ z.B. 100 Stichproben pro Sekunde, und „Hoch“ 4000 Stichproben pro Sekunde.

Damit das Tool VSDiagnostics.exe mit einem Sammlungs-Agent zusammenarbeitet, werden für den entsprechenden Agent sowohl eine DLL als auch eine COM-CLSID benötigt. Der Agent kann auch über zusätzliche Konfigurationsoptionen verfügen, d. h. über Optionen, die in der Konfigurationsdatei angegeben werden, formatiert als ordnungsgemäß mit Escapezeichen versehener JSON-Code.

Berechtigungen

Um eine Anwendung zu profilen, die erweiterte Berechtigungen benötigt, müssen Sie eine Eingabeaufforderung mit erhöhten Rechten verwenden.