Answers:
只需要输入perfmon
到Start > Run
,然后按回车。当“性能”窗口打开时,单击“ +”号将新的计数器添加到图形中。计数器是PC工作方式的不同方面,并按相似性分为称为“性能对象”的组。
对于您的问题,可以选择“过程”,“内存”和“处理器”性能对象。然后,您可以实时查看这些计数器
您也可以指定实用程序来保存性能数据,以备以后检查。为此,请在左侧面板中选择“性能日志和警报”。(位于系统监视器控制台的右侧,该控制台为我们提供了上述计数器。如果不存在,请单击“文件”>“添加/删除管理单元”,单击添加,然后在列表中选择“性能日志和警报” “。)从“性能日志和警报”的“计数器日志”下创建一个新的监视配置。然后,您可以添加计数器,指定采样率,日志格式(二进制或纯文本)和日志位置。
Process Explorer可以显示一个进程占用的CPU总时间,以及每个进程的历史记录图。
也许您可以使用此功能。它应该为您工作,并将报告指定进程的处理器时间。
@echo off
: Rich Kreider <rjk@techish.net>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends: typeperf
: Usage: foo.cmd <processname>
set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)
:end
echo Process seems to have terminated.
我同意,perfmon.exe允许您为要监视的任何进程添加计数器(在右侧面板上单击鼠标右键)。
性能对象:处理选中“从列表中选择实例”,然后选择Firefox。
WMI是Windows Management Instrumentation,它内置于Windows的所有最新版本中。它允许您以编程方式跟踪诸如CPU使用率,磁盘I / O和内存使用率之类的信息。
Perfmon.exe是此接口的GUI前端,可以监视进程,将信息写入日志,并允许您在事后分析日志。它不是世界上最优雅的程序,但确实可以完成工作。
Process Lasso的设计更多地用于过程自动化和优先级优化,而不是图形。这就是说,它确实提供每个进程的CPU占用率的历史(画成白线图),但它确实不提供每个进程的内存使用率的历史。
免责声明:我是Process Lasso的作者,但实际上并没有在这里认可它-因为有更好的解决方案(perfmon是最好的)。
最好的东西是Windows Vista +资源和性能监视器。它可以跟踪进程随时间推移对CPU,内存,网络和磁盘访问的使用情况。它是一个很不错的总体系统信息实用程序,应该早就创建了。除非我没有记错,否则它可以随时间跟踪每个进程的CPU和内存使用率(以及列出的其他内容)。
您也可以尝试使用C#/ Perl / Java脚本通过WMI命令获取使用率数据,以下是其步骤。
我们需要执行2个WMI Select查询并应用CPU%利用率公式
1.检索逻辑进程总数
select NumberOfLogicalProcessors from Win32_ComputerSystem
2.要检索PercentProcessorTime的值,请使用至少2次TimeStamp_Sys100NS(已应用CPU利用率公式来获取实际利用率)和WorkingSetPrivate(RAM)至少2次,睡眠间隔为1秒
select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234
3.应用CPU%利用率公式
CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors
p2指示第二次检索到的PercentProcessorTime,p1指示第一次检索到的PercentProcessorTime,t2和t1用于TimeStamp_Sys100NS。
可以在链接中找到示例Perl代码 http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-perl-via-wmi/中。
此逻辑适用于所有支持WMI查询的编程语言
尽管我还没有尝试过,但是ProcDump似乎是一个更好的解决方案。
网站说明:
ProcDump是一个命令行实用程序,其主要目的是监视应用程序中的CPU尖峰并在尖峰期间生成崩溃转储,管理员或开发人员可以使用它来确定尖峰原因。ProcDump还包括挂起的窗口监视(使用Windows和Task Manager使用的相同的窗口挂起定义),未处理的异常监视,并且可以基于系统性能计数器的值生成转储。它也可以用作常规流程转储实用程序,您可以将其嵌入其他脚本中。
嗯,尽管它的图形不太方便,但我看到Process Explorer可以做到。仍在寻找替代/更好的方法来做到这一点。
您可能想看看Process Lasso。
要求获取某些特定Windows服务器的状态和cpu /内存使用情况。我用下面的脚本:
这是Windows Search Service的示例。
$cpu = Get-WmiObject win32_processor
$search = get-service "WSearch"
if ($search.Status -eq 'Running')
{
$searchmem = Get-WmiObject Win32_Service -Filter "Name = 'WSearch'"
$searchid = $searchmem.ProcessID
$searchcpu1 = Get-WmiObject Win32_PerfRawData_PerfProc_Process | Where {$_.IDProcess -eq $searchid}
Start-Sleep -Seconds 1
$searchcpu2 = Get-WmiObject Win32_PerfRawData_PerfProc_Process | Where {$_.IDProcess -eq $searchid}
$searchp2p1 = $searchcpu2.PercentProcessorTime - $searchcpu1.PercentProcessorTime
$searcht2t1 = $searchcpu2.Timestamp_Sys100NS - $searchcpu1.Timestamp_Sys100NS
$searchcpu = [Math]::Round(($searchp2p1 / $searcht2t1 * 100) /$cpu.NumberOfLogicalProcessors, 1)
$searchmem = [Math]::Round($searchcpu1.WorkingSetPrivate / 1mb,1)
Write-Host 'Service is' $search.Status', Memory consumed: '$searchmem' MB, CPU Usage: '$searchcpu' %'
}
else
{
Write-Host Service is $search.Status -BackgroundColor Red
}
我将taskinfo用于CPU / RAM / IO速度的历史记录图。 http://www.iarsn.com/taskinfo.html
但由于HD / SS驱动器故障,听起来一阵无反应,听起来更像是中断时间。