I have an issue with one of my applications. I run the application, everything is okay. When I close this application, I notice that one of the "svchost" processes in the system takes up about 95-100% of the CPU and I have to figure out what is taking up so much of the CPU cycles.
I set myself pretty simple and straightforward goals on how to go about this:
- Get the process info or this particular "svchost" that is taking up so much CPU
- I know what an svchost process is used for, so I save you guys the effort to explain me about it. So now I must know which modules are loaded by this rogue svchost.
- I ran my application, closed it and made sure that my process is completely closed, not anymore in memory. I then got the PID of the svchost taking up 100% CPU
- I ran ProcessExplorer (from sysinternals), got the info about how many and which services this svchost has hosted. They are about 12 services. I would not bother about this list as I am more concerned about How to IDENTIFY which one of these 12 services is taking up the CPU cycles.
- Now I have the list with me and here starts the tricky part... I want to do 1 of the 2 options below
Option 1: How do I identify which one of these 12 services is taking up so much CPU? Can I get extended info for this svchost process that gives me detailed info on a "per service" basis hosted in this process, rahter on the process basis that I have now?
Option 2: Is it possible to configure windows to 开发者_JAVA技巧make svchost to run only one service per instance of svchost?
If there is a better option on how to investigate, narrow down the root cause of this issue, please do let me know.
I had answered my question but I put it under comments. I am now adding the same as an answer so it is known.
I figured out how to do both the options in my question above:
Solution for option 1:
Open Resource Monitor (resmon.exe), go to CPU tab, check the svchost.exe (with the PID to watch for) under Image tab, go to "services" box and check for the CPU usage by different services.
Solution for option 2:
sc config <service name> type= own
Or change in registry HKLM\System\CurrentControlSet\Services\<ServiceName>\Type
to 0x10.
Refer to http://blogs.technet.com/b/askperf/archive/2008/01/11/getting-started-with-svchost-exe-troubleshooting.aspx for more info.
Launch Resource Monitor
- Type Resource Monitor into start menu or
- Click Resource Monitor button under Performance tab in Task Manager
Click CPU tab at the top of Resource Monitor
Place a check mark by the process you want to investigate (I sort by Average CPU)
Services will filter by the process you mark and show CPU stats for each service running in that process.
精彩评论