VSPerfCmd
更新:2007 年 11 月
VSPerfCmd 工具用于启动和停止性能数据收集。它使用以下语法:
VSPerfCmd [/U] [/options]
下表介绍 VSPerfCmd 工具选项:
选项 |
说明 |
||
U |
重定向控制台的输出编写为 Unicode。必须是指定的第一个选项。 |
||
Start:mode |
启动 VSPerfMon 并等待直到它被初始化。需要 Output 开关。 mode 可以是以下各项之一: COVERAGE - 收集代码覆盖率数据 SAMPLE - 收集取样数据 TRACE - 收集检测数据 |
||
Output:filename |
指定输出文件名。 |
||
CrossSession|CS |
启用跨进程分析。选项名称 CROSSSESSION 和 CS 都受支持。 |
||
User:[domain\]username |
与 START 选项一起使用。允许客户端从指定帐户访问监视器。 |
||
WaitStart[:n] |
等待数据收集记录器初始化。如果指定了 n,则 VSPerfCmd 将最多等待 n 秒。如果没有指定 n,则 VSPerfCmd 将无限期等待。这将简化 VSPerfCmd 作为批处理过程的一部分的使用。 |
||
Counter:cfg |
使用采样分析方法时,指定 CPU 计数器和要用作采样间隔的事件数。可以只对一个计数器值进行采样。 使用检测分析方法时,指定要在每个检测点收集的 CPU 计数器。可以通过指定多个计数器选项来收集多个计数器数据(仅限检测)。 使用以下语法指定计数器 (cfg) 数据: CounterName[,Reload[,FriendlyName]]
|
||
QueryCounters |
显示平台的有效计数器列表。 |
||
WinCounter:路径 |
指定要包含标记数据的 Windows 性能计数器。path 是 PDH 计数器路径格式的 Windows 性能计数器字符串。例如: \Processor(0)\% Processor Time \System\Context Switches/sec |
||
AutoMark:n |
使用 /WINCOUNTER 时指定自动标记之间的时间间隔(单位为毫秒)。四舍五入到最接近的 500ms。 使用 0 可禁用自动标记。(如果没有指定,默认值为 500) |
||
Events:option |
EVENTS 选项控制事件跟踪窗口 (ETW) 的事件收集。收集的数据由 ETW 提供程序提供。option 格式为: <on | off>, <guid>[,flags[,level]] <on | off>, <provider name>[,flags[,level]] guid - 提供程序控制 GUID。或者,如果提供程序已向 WMI 注册,则可以指定提供程序名称来代替 GUID。 flags - 一个以“0x”作为前缀的十六进制标志值。它由事件提供程序定义。有关更多信息,请参见 ETW 提供程序文档。 level - 确定收集多少信息。它由事件提供程序定义。有关更多信息,请参见 ETW 提供程序文档。
另外,EVENTS 选项识别下列公共内核选项: on, option[,option] 其中 option 是下列各项之一: Process - 进程事件 Thread - 线程事件 Image - 映像加载和卸载事件 Disk - 磁盘 I/O 事件 File - 文件 I/O 事件 Hardfault - 硬页面错误 Pagefault - 软页面错误 Network - 网络事件 Registry - 注册表访问事件 请注意内核提供程序只能被启用。在监视器关闭之前,既不能禁用它,也不能修改它的标志。 |
||
Status |
应用于所分析的进程的状态。它列出进程和线程,以及它们当前的分析状态(开启/关闭)。例如,如果进程被停止,STATUS 将不会在报告中指示这一点。它将显示进程已被分析还是没有被分析。 |
||
ShutDown[:n] |
等待被监视的应用程序关闭或分离,然后关闭 VSPerfMon.exe 并等待关闭完成。如果指定了 n,则 VSPerfCmd 将最多等待 n 秒。如果没有指定 n,则 VSPerfCmd 将无限期等待。这将简化 VSPerfCmd 作为批处理过程的一部分的使用。 |
||
GlobalOn |
GLOBALON 选项在 GLOBALOFF 后启用分析。在内部,GLOBALON 选项将全局启动/停止计数设置为一。有关更多信息,请参见 GLOBALOFF。 |
||
GlobalOff |
GLOBALOFF 选项禁用所有分析,并且不收集任何数据。此选项不关闭性能会话。您可以使用此选项避免在应用程序启动或初始化阶段收集数据。 若要避免收集无关数据: |
||
ProcessOn:pid |
PROCESSON 在调用 PROCESSOFF 后使用进程 ID (pid) 为特定进程重新启动分析。在内部,PROCESSON 选项为指定的进程将启动/停止计数设置为一。 |
||
ProcessOff:pid |
PROCESSOFF 选项使用进程 ID (pid) 停止特定进程的分析和数据收集。其他进程或线程继续收集数据。如果您想在进程达到某个状态之前避免收集数据,这将很有用。当进程达到某个状态以后,您可以使用 PROCESSON 选项开始数据收集。在内部,PROCESSOFF 为指定的进程将启动/停止计数设置为零。 |
||
ThreadOn:tid |
THREADON 在调用 THREADOFF 后使用线程 ID (tid) 为特定线程重新启动分析。在内部,THREADON 选项为指定的线程将启动/停止计数设置为一。 此选项仅在 TRACE 模式中有效。 |
||
ThreadOff:tid |
THREADOFF 选项使用线程 ID (tid) 停止特定线程的分析和数据收集。 其他进程或线程继续收集数据。如果您想在线程达到某个状态之前避免收集数据,这将很有用。当线程达到某个状态以后,您可以使用 THREADON 选项开始数据收集。在内部,THREADOFF 为指定的线程将启动/停止计数设置为零。 此选项仅在 TRACE 模式中有效。 |
||
MARK:标记号[,标记文本] |
将标记插入到全局事件流中,并可选择附加标记文本。如果您想要检查两个标记之间的数据,这将很有用。 marknum - ULONG 数据类型的任意值 或者,您可以在代码中调用 MarkProfile API,标记应用程序的特定区域。此信息仅在调用跟踪报告中可用。 |
采样方法选项
下面的选项仅在 SAMPLE 模式中可用:
选项 |
说明 |
---|---|
Launch:可执行文件 |
启动指定的命令并附加基于样本的探查器。 |
Args:参数 |
启动的应用程序的参数。 |
Console |
在新控制台中启动指定的命令。 |
Attach:PID[,PID] |
将基于样本的探查器附加到指定的进程 ID(PID 或进程名称)。 |
Detach:PID[,PID] |
使基于样本的探查器与指定的进程 ID(PID 或进程名称)分离。 |
Detach |
从所有进程分离基于样本的探查器。 |
GC[:Allocation|:Lifetime] |
此选项仅在取样模式中可用。启用托管内存分析。可以只启用对象的分配跟踪 (GC:allocation),也可以启用对象的分配和生存期的跟踪 (GC:lifetime)。默认值是仅启用分配。它只与 /LAUNCH 选项一起使用时才有效。 |
PF[:n] |
对每 n 个页面错误取样(默认值 = 10)。 |
Sys[:n] |
对每 n 个系统调用取样(默认值 = 10)。 |
Timer[:n] |
对每 n 个周期取样(默认值 = 10000000)。 |
服务组件和内核模式设备选项
以下选项支持分析服务组件或内核模式设备驱动程序。这些选项用于设置分析权限。这些选项必须从以管理员身份运行的命令行控制台执行。有关更多信息,请参见 Using the Run As Command(使用“运行身份”命令)。
选项 |
说明 |
---|---|
Admin:Security <ALLOW|DENY> 权限[ 权限] <用户|组> |
允许或拒绝指定用户或组访问分析服务。 Right 可以是: CrossSession – 授予用户访问服务以进行跨会话分析的权限; SampleProfiling - 授予用户访问驱动程序以启动取样分析的权限。也用于在跟踪分析期间访问内核转换信息; FullAccess - 授予用户 CrossSession 和 SampleProfiling 访问权。 |
Admin:Security, List |
列出分析服务和列表用户权限的当前状态。 |
Admin: <服务|驱动程序><START|STOP|INSTALL|UNINSTALL> |
启动、停止、安装或卸载分析服务组件(服务)或内核模式设备驱动程序(驱动程序)。 |
Admin: <服务|驱动程序>AutoStart <ON|OFF> |
启用或禁用重新启动后自动启动分析组件(服务)或内核模式设备驱动程序(驱动程序)。 |
VsPerfDrv.sys
以前版本的探查器支持使用 VSPerfDrv.Sys 从 CPU 内核模式应用程序收集数据。VsPerfDrv.sys 已过时。请使用 VsPerfCmd ADMIN 选项来实现此功能。