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 zum Generieren einer instrumentierten C/C++-Komponente über die Befehlszeile finden Sie unter Instrument einer systemeigenen eigenständigen Komponente , bevor Sie die schritte in diesem Artikel ausführen. 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.
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.
Ö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.
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 Befehllaunch
, obwohl einigeattach
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
Ändern Sie die Größe des Notepads, oder geben Sie etwas ein, damit einige aussagekräftige Profilerstellungsinformationen gesammelt werden können.
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>
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.