Freigeben über


Messen der Anwendungsleistung über die Befehlszeile

Mithilfe von Befehlszeilentools können Sie Leistungsinformationen zu einer Anwendung sammeln. Sie können Leistungsdaten für CPU-Auslastungs-, .NET-Speicherzuweisungs-, Instrumentierungs- und Datenbankabfragen sammeln.

Im in diesem Artikel beschriebenen Beispiel sammeln Sie Leistungsinformationen für Microsoft Notepad, aber dieselbe Methode kann zum Profilieren eines beliebigen Prozesses verwendet werden.

Anmerkung

Informationen zum Generieren einer instrumentierten C/C++-Komponente über die Befehlszeile finden Sie unter Instrument eine systemeigene eigenständige Komponente, bevor Sie die schritte in diesem Artikel ausführen. Für CPU-Nutzungsdaten können Sie die in diesem Artikel beschriebenen Verfahren verwenden.

Voraussetzungen

  • Visual Studio 2019 oder höher

  • Vertrautheit mit Befehlszeilentools

  • Um Leistungsinformationen auf einem Remotecomputer zu sammeln, ohne Visual Studio installiert zu haben, installieren Sie die Remotetools für Visual Studio auf dem Remotecomputer. Die Version der Tools muss ihrer Version von Visual Studio entsprechen.

Die meisten Sammlungs-Agents unterstützen .NET Core, .NET 5+, .NET Framework und C++. Der Support ist jedoch auf die Unterstützung durch das entsprechende Performance-Tool beschränkt. Beispielsweise ist der Database-Sammlungs-Agent auf .NET Core und .NET 5+ beschränkt.

Erfassen von Leistungsdaten

Bei der Profilerstellung mithilfe der CLI-Diagnosetools von Visual Studio wird das Profilerstellungstool zusammen mit einem der Sammlungs-Agents an einen Prozess angefügt. Wenn Sie das Profiling-Tool anfügen, fangen Sie eine Diagnosesitzung an, die Profiling-Daten aufzeichnet und speichert, bis das Tool beendet wird, wobei die Daten in eine .diagsession Datei exportiert werden. Anschließend können Sie diese Datei in Visual Studio öffnen, um Ergebnisse zu analysieren.

  1. Starten Sie den Editor, und öffnen Sie dann den Task-Manager, um die Prozess-ID (PID) abzurufen. Suchen Sie im Task-Manager die PID auf der Registerkarte Details.

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

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

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

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

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

    Anmerkung

    Wenn Sie die Befehlszeile in Remoteszenarien verwenden, müssen Sie die Befehlszeilenanweisungen auf dem Remotecomputer ausführen. Wenn Sie sich mit der entfernten Maschine von Visual Studio aus verbinden möchten, verwenden Sie stattdessen den Leistungsprofiler in Visual Studio.

  3. Starten Sie VSDiagnostics.exe, indem Sie den folgenden Befehl eingeben.

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

    Die Argumente, die eingeschlossen werden müssen, sind:

    • < ID> Identifiziert die Erfassungssitzung. Die ID muss eine Zahl zwischen 1 und 255 sein.
    • < pid>, PID des Prozesses, den Sie profilieren möchten, in diesem Fall die PID, die Sie in Schritt 1 gefunden haben.
    • < configFile>Konfigurationsdatei für den Sammelagent, den Sie starten möchten. Weitere Informationen finden Sie unter Konfigurationsdateien für Agents.

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

    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 an diese anfügen. Alle Tools unterstützen den Befehl launch, obwohl einige attachnicht unterstützen, z. B. das Tool "Instrumentation" und ".NET Allocation". 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 Notizblocks, und geben Sie etwas darin ein, um sicherzustellen, dass interessante Informationen zur Profilerstellung gesammelt werden.

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

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. Suchen Sie die Ausgabedatei .diagsession des vorherigen Befehls und öffnen Sie sie in Visual Studio (Datei>Öffnen), um die gesammelten Informationen zu untersuchen.

    Informationen zur Analyse der Ergebnisse finden Sie in der Dokumentation für das entsprechende Leistungstool. Dies kann z. B. das CPU-Auslastungstool, .NET Object Allocation Tool, Instrumentationoder das Datenbank- Tool sein.

Agent-Konfigurationsdateien

Sammlungs-Agents sind austauschbare Komponenten, die unterschiedliche Datentypen sammeln, je nachdem, was Sie messen möchten.

Aus Gründen der Einfachheit wird empfohlen, diese Informationen in einer Agentkonfigurationsdatei zu speichern. Die Konfigurationsdatei ist eine .json-Datei, die mindestens den Namen der .dll sowie deren COM-CLSID enthält. Standardmäßig finden Sie die Beispielkonfigurationsdateien im folgenden Ordner:

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

CpuUsage-Konfigurationen (Base/High/Low) entsprechen den Daten, die für das Profilerstellungstool für die CPU-Auslastung gesammelt wurden. DotNetObjectAlloc-Konfigurationen (Base/Low) entsprechen Daten, die für das .NET Object Allocation Toolgesammelt werden.

Base/Low/High-Konfigurationen beziehen sich auf die Samplingrate. Beispielsweise beträgt "Niedrig" 100 Proben/Sekunde und "High" 4000 Proben/Sekunde.

Damit das tool VSDiagnostics.exe mit einem Sammlungs-Agent arbeiten kann, erfordert es sowohl eine DLL als auch eine COM CLSID für den entsprechenden Agent. Der Agent verfügt möglicherweise auch über zusätzliche Konfigurationsoptionen, bei denen es sich um alle Optionen handelt, die in der Konfigurationsdatei angegeben sind, die als ordnungsgemäß escapefähiges JSON formatiert sind.

Erlaubnisse

Um eine Anwendung zu profilieren, die erhöhte Berechtigungen erfordert, müssen Sie dies über eine Eingabeaufforderung mit erhöhten Rechten tun.