8

有没有办法从 Windows 上的脚本中获取特定服务的 CPU 利用率?我知道wmic cpu get LoadPercentage会为整个系统提供 CPU 利用率,但是否有可能为 winword.exe 等特定程序获取它?

4

2 回答 2

11

是的,有可能

这个 wmic 命令打印所有进程的 CPU 使用率。然后,您可以通过管道将findstr其过滤为特定进程(使用 flag /c:<process name>)。

wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime

执行help findstrhelp find从命令行查看更多过滤列表的方法。

例如:

C:\> wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime | findstr /i /c:chrome
chrome                  24
chrome#1                0
chrome#2                0
chrome#3                0
于 2013-01-08T18:30:56.030 回答
0

要做到这一点,最简单的是使用 MS 性能工具包,它可以聘请 ETW 来跟踪很多指标,包括 CPU 使用率。安装性能工具包后(现在在 Windows SDK 中)。

执行以下命令:

1. set _NT_SYMBOL_PATH= srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols 
2. open trace via:  xperf -on base
3. Excute any program for some times.
4. output the result:  xperf –d myprofile.etl
5. launch the graphics UI to analysis :  xperfview myprofile.etl

与 WMI 不同的是,Xperf 是一个更复杂的工具包,可以提供更详细的 CPU 使用情况,不仅包括进程,还包括函数调用消耗、CPU 状态变化等。(这就是我们在第一步导入 Windows 符号的原因)。

另一个好处是 Xperf 租用 ETW,而 ETW 对 CPU 的影响很小。

于 2013-01-08T13:44:23.107 回答