从命令行测量.NET程序性能
可以使用命令行工具收集有关应用程序的性能信息。
在本文所述的示例中,收集 Microsoft Notepad 的性能信息,但可以使用相同的方法来分析任何进程。
先决条件
Visual Studio 2019 或更高版本
熟悉命令行工具
若要在未安装 Visual Studio 的远程计算机上收集性能信息,请在此远程计算机上安装 Visual Studio 远程工具。 工具版本必须与 Visual Studio 版本匹配。
收集性能数据
使用 Visual Studio 诊断 CLI 工具进行性能分析的工作原理是将性能分析工具与其中某个收集器代理一起附加到进程。 附加性能分析工具时,将开始诊断捕获并存储分析数据的会话,直到该工具停止,此时数据将导出到 .diagsession 文件中。 然后,可以在 Visual Studio 中打开此文件以分析结果。
启动 Notepad,并打开任务管理器来获取其进程 ID (PID)。 在任务管理器中,找到“详细信息”选项卡中的 PID。
打开命令提示符,切换到包含集合代理可执行文件的目录,通常在此处(对于 Visual Studio Enterprise)。
<Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\
通过键入以下命令,启动 VSDiagnostics.exe。
cmdVSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
必须包含的参数是:
例如,可以将以下命令用于 CPUUsageBase 代理,方法是按之前所述替换 pid。
cmdVSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
<id> 标识收集会话。 ID 必须为介于 1 - 255 之间的数字。
<pid>,要分析的进程的 PID 在本例中是在步骤 1 中找到的 PID。
<configFile>,要启动的集合代理的配置文件。 有关详细信息,请参阅代理的配置文件。
重设 Notepad 大小,或在其中键入内容,以确保收集一些有趣的分析信息。
通过键入以下命令,停止收集会话并将输出发送到文件。
cmdVSDiagnostics.exe stop <id> /output:<path to file>
找到上一个命令的 .diagsession 文件输出,并在 Visual Studio 中打开它(“文件” > “打开”)以检查收集的信息 。
要分析结果,请参阅相应的性能工具文档。 例如,这可能是 CPU 使用情况、.NET 对象分配工具或数据库工具。
代理配置文件
集合代理是可互换的组件,可根据要测量的内容收集不同类型的数据。
为方便起见,建议将该信息存储在代理配置文件中。 配置文件是至少包含 .dll 的名称及其 COM CLSID 的 .json 文件 。 以下是可以在以下文件夹中找到的示例配置文件:
<Visual Studio installation folder>Team Tools\DiagnosticsHub\Collector\AgentConfigs\
请参阅以下链接以下载和查看代理配置文件:
CpuUsage 配置(基本/高/低),对应于为 CPU 使用情况分析工具收集的数据。 DotNetObjectAlloc 配置(基本/低),对应于为 .NET 对象分配工具收集的数据。
基本/低/高配置是指采样率。 例如,低为 100 样本/秒,高为 4000 样本/秒。
要使 VSDiagnostics.exe 工具可用于集合代理,需要用于相应代理的 DLL 和 COM CLSID。 代理可能还具有其他配置选项,这可以是配置文件中指定的任何选项,格式为正确转义的 JSON。
权限
要分析需要提升权限的应用程序,必须从提升的命令提示符执行操作。
工具下载
下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)