How do I troubleshoot high 'svchost.exe' usage in Windows 7?

I'm having a problem with Windows 7 64-bit. I thought it was slow and all, but then I saw that the CPU usage was always around 80% and started searching for a solution.

There are two svchost.exe's consuming around 30% each and in the resources monitor there's a system interrupts consuming 45% all the time. I tried closing the applications, but it makes no difference.

I tried some other things that I've found on Google, like disable system updates, but it didn't work.

I don't know if it will help but here's my specifications:

Core 2 Duo 4400
ATI Radeon 4850
4 GB DDR2 RAM

EDIT

I ran the suggested program and got this information; did I get it right?

Enter image description here


EDIT

As you asked here it is, did I get it right now? The other TCP/IP there's nothing.

Enter image description here

EDIT

I ran msconfig and took the services that one of the svchost.exe processes was using out of the startup and now my CPU is around 50%, but I still would like to improve it further. I can't lose that much CPU power just because of Windows...


EDIT

Yeah, there's nothing I can do here. I am going to reinstall Windows XP soon, it's really weird...


I think you'll find Svchost Viewer to be useful.

enter image description here

You can use it to determine which program is doing most by viewing the amount of data written and such. It should help in some way to determine which process is doing what.


Use a program like Process Explorer to determine which svchost.exe is consuming the resources. Is the svchost being run from services.exe? What are the commandline arguments for that particular svchost? There are several svchost run via Windows, you will need to isolate which one is consuming those resources. Process Explorer will display which services are associated with that process, as well as display which TCP/IP ports it is using.

Click on the Process tag so the processes show in a tree format to confirm it is being run via services.exe.

enter image description here

Although from looking at your Services tabs, they look legitimate.

First svchost looks like `svchost.exe -k LocalServiceNoNetwork`
Second svchost looks like `svchost.exe -k LocalServiceNetworkRestricted`

Do you have anything aggressively hitting your Windows Firewall? What do the TCP/IP and Threads tabs show? The threads tab will display CPU information for the threads within each process. Have you tried to restart the services specified or checked your eventlog to see a lot of errors?

Are you running any indexing of media files or have anything on your LAN attempting to access those media files?

That's a lot of EtwTraceMessageVa calls. Have you checked your eventlog? At the rate it's using CPU there has to be something in WMI writing to ETW. Better question, did this start recently and do you have a restore point before it happened?


I’m surprised about the advice that others have given on this issue (some even simply made guesses).

For Leonardo and others who find their way here, there are some teps that everybody else missed.

  • Yes, start by getting a copy of Process Explorer.

  • Yes, next look at the instances of SVCHOST.EXE that are running and double-click the one with the high CPU usage.

  • Yes, look at the Services tab to find out what services are being hosted by that instance of svchost.

This is where everybody else stopped; that’s not enough. Now, you need to run Services.msc and stop each of the services that are hosted by the runaway instance of svchost in turn, making sure to wait and watch for a while after each to see if the CPU load drops. If it does, then the last one that you stopped was the culprit.

At this point, you know exactly what service was hogging the CPU and can then pursue finding out why that specific service would suck cycles.