我的某个应用程序存在问题。我运行应用程序,一切都很好。当我关闭这个应用程序时,我注意到系统中的一个“svchost”进程占用了大约95-100%的CPU,我必须弄清楚占用了多少CPU周期。
我为自己设定了非常简单明了的目标:
选项1: 如何识别这12个服务中哪一个占用了这么多CPU?我是否可以获得有关此svchost流程的扩展信息,该流程为我提供了有关此流程中托管的“每个服务”的详细信息,我现在在流程基础上进行了哪些工作?
选项2: 是否可以配置窗口使svchost每个svchost实例只运行一个服务?
如果有更好的选择如何调查,请缩小此问题的根本原因,请告知我们。
答案 0 :(得分:24)
我已回答了我的问题,但我将其置于评论之下。我现在正在添加相同的答案,因此它是众所周知的。
我想出了如何在上面的问题中做两个选项:
选项1的解决方案:
打开资源监视器(resmon.exe),转到CPU选项卡,检查图像选项卡下的svchost.exe(带有要监视的PID),转到“服务”框,检查不同服务的CPU使用情况。
选项2的解决方案:
sc config <service name> type= own
或者将注册表HKLM\System\CurrentControlSet\Services\<ServiceName>\Type
更改为0x10。
答案 1 :(得分:5)
启动资源监视器
单击资源监视器
勾选要调查的流程(按平均CPU排序)
服务将按您标记的流程进行过滤,并显示该流程中运行的每项服务的CPU统计信息。