确定进程的每个 CPU 使用率

确定进程的每个 CPU 使用率

我们刚刚为一些 Windows(2003)服务器设置了 Nagios 监控,在查看其中一台服务器时,我在 CPU 图表上注意到了这一点

CPU 图表 http://rmg.io/cms/wp-content/uploads/2011/10/showgraphCAB42ATB.png

显然有一个(或多个)进程占用了 100% 的 CPU 容量,有什么方法可以识别此进程吗?任务管理器/perfmon 仅显示总 CPU 使用率,但我们的总使用率低于 30%,但各个核心却不断飙升至 100%。

答案1

我经常使用 perfmon 来做这些事情。您可以轻松添加每个进程计数器并将其设置为记录一段时间内的活动。

此外,性能计数器 API 可通过 win32_perfformatteddata* 类中的 wmi 命名空间访问,您可以为其编写一个脚本来执行并将 perfdata 报告回您的 rrdtool 实例(如您发布的图表所示)。还可以查看 nagios Exchange 和 munin 的网页,查找可能适合您需求的附加组件。(在火车上……抱歉没有链接)

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

答案2

如果您不需要持续监控的解决方案而仅需要进行故障排除,请查看进程探索器- 它将为您提供每个过程的历史图表。

顺便说一句:您不一定会看到进程线程执行时间消耗了您的 CPU 周期。这可能是内核时间(即由驱动程序、中断、DPC 等使用)——您应该在任务管理器中启用内核时间的显示排除这个可能。

相关内容