确定进程的每个CPU使用情况

我们只是设置了一些Windows(2003)服务器的Nagios监视器,当查看我在CPU图上注意到的一个服务器时

CPUgraphicshttp://rmg.io/cms/wp-content/uploads/2011/10/showgraphCAB42ATB.png

显然有一个(或多个)进程正在使用一个CPU容量的100%,是否有任何方法来识别这个进程? 任务pipe理器/ perfmon只显示总CPU使用率,但是我们的总使用率低于30%,而单个内核却不断增加到100%。

我经常使用perfmon这样的事情。 您可以轻松地添加每个stream程计数器并将其设置为随时间logging活动。

此外,性能计数器api可以通过win32_perfformatteddata * classes中的wmi命名空间访问,您可以编写一个脚本来执行并将perfdata报告给您的rrdtool实例(如您发布的图所示)。 另外,请查看nagios Exchange和munin的网页,了解可能适合您需求的附加组件。 (火车…对不起,缺乏联动)

http://msdn.microsoft.com/en-us/library/aa394277(v=vs.85).aspx

如果您不需要持续监控的解决scheme,而只需要进行故障排除,请参阅Process Explorer – 它将为您提供每个进程的历史logging图表。

顺便说一句:你不一定会看到进程线程执行时间吃你的CPU周期。 这可能是内核时间(即由驱动程序,中断,DPC等使用) – 你应该在任务pipe理器中显示内核时间来排除这个问题。