从命令行测量应用程序性能

可以使用命令行工具收集有关应用程序的性能信息。 可以收集 CPU 使用率、.NET 内存分配、检测和数据库查询的性能数据。

在本文所述的示例中,收集 Microsoft Notepad 的性能信息,但可以使用相同的方法来分析任何进程。

注意

要从命令行生成已检测的 C/C++ 组件,请参阅在执行本文中的步骤之前检测本机独立组件。 对于 CPU 使用情况数据,可以使用本文中所述的过程。

先决条件

  • Visual Studio 2019 或更高版本

  • 熟悉命令行工具

  • 若要在未安装 Visual Studio 的远程计算机上收集性能信息,请在此远程计算机上安装 Visual Studio 远程工具。 工具版本必须与 Visual Studio 版本匹配。

收集性能数据

使用 Visual Studio 诊断 CLI 工具进行性能分析的工作原理是将性能分析工具与其中某个收集器代理一起附加到进程。 附加性能分析工具时,将开始诊断捕获并存储分析数据的会话,直到该工具停止,此时数据将导出到 .diagsession 文件中。 然后,可以在 Visual Studio 中打开此文件以分析结果。

  1. 启动 Notepad,并打开任务管理器来获取其进程 ID (PID)。 在任务管理器中,找到“详细信息”选项卡中的 PID。

  2. 打开命令提示符,切换到包含集合代理可执行文件的目录,通常在此处(对于 Visual Studio Enterprise)。

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

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

    对于远程工具,收集代理可执行文件位于以下位置:

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

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

    注意

    在远程方案中使用命令行时,需要在远程计算机上运行命令行指令。 如果要从 Visual Studio 附加到远程计算机,请改用 Visual Studio 中的性能探查器。

  3. 通过键入以下命令,启动 VSDiagnostics.exe。

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

    必须包含的参数是:

    • <id> 标识集合会话。 ID 必须为介于 1 - 255 之间的数字。
    • <pid>:要分析的进程的 PID 在本例中是在步骤 1 中找到的 PID。
    • <configFile>要启动的集合代理的配置文件。 有关详细信息,请参阅代理的配置文件

    例如,可以将以下命令用于 CPUUsageBase 代理,方法是按之前所述替换 pid。

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

    或者可以使用 launch 命令启动可执行文件。 在此方案中,无需获取进程 ID 并附加到它。 所有工具支持 launch 命令,但有些工具不支持 attach,例如检测和 .NET 分配工具。 例如,使用以下命令启动可执行文件并收集检测数据:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. 重设 Notepad 大小,或在其中键入内容,以确保收集一些有趣的分析信息。

  5. 通过键入以下命令,停止收集会话并将输出发送到文件。

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. 找到上一个命令的 .diagsession 文件输出,并在 Visual Studio 中打开它(“文件”>“打开”)以检查收集的信息 。

    要分析结果,请参阅相应的性能工具文档。 例如,这可能是 CPU 使用情况.NET 对象分配工具检测数据库工具。

代理配置文件

集合代理是可互换的组件,可根据要测量的内容收集不同类型的数据。

为方便起见,建议将该信息存储在代理配置文件中。 配置文件是至少包含 .dll 的名称及其 COM CLSID 的 .json 文件 。 默认情况下,可以在以下文件夹中找到示例配置文件:

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

CpuUsage 配置(基本/高/低),对应于为 CPU 使用情况分析工具收集的数据。 DotNetObjectAlloc 配置(基本/低),对应于为 .NET 对象分配工具收集的数据。

基本/低/高配置是指采样率。 例如,低为 100 样本/秒,高为 4000 样本/秒。

要使 VSDiagnostics.exe 工具可用于集合代理,需要用于相应代理的 DLL 和 COM CLSID。 代理可能还具有其他配置选项,这可以是配置文件中指定的任何选项,格式为正确转义的 JSON。

权限

要分析需要提升权限的应用程序,必须从提升的命令提示符执行操作。