svchost.exe (i.e "service host"), is a technique for grouping several services into one process.
The goal is to avoid spawning one process per service, saving some memory.
I believe today the gains are outweighted by the costs of this technique: memory isn't really the limitation factor anymore.
On the other hand, grouping several mostly unrelated services in the same process is a security and stability issue.
You can configure things not to group. It's still annoying and opaque that the name of the misbehaving .exe doesn't instantly tell you which goddamned thing is in it, even if it's just one.
I did this for Windows update on Vista last year. It was really misbehaving, chewing up a lot of memory and CPU time. Eventually I found and applied a patch but during the investigation, I isolated Windows update to its own service executable container.
TL; DR:
sc config <servicename> type= { own | share }
I got that from this SuperUser stackexchange question:
Excellent, thanks! I wonder if someone could create a VBS script to make all services "own". And, another problem, I wonder if Windows allows to rename processes, like e.g. Linux can because I don't want to see 50 svchost.exe in the task manager - I want them named after respective DLLs.
I believe today the gains are outweighted by the costs of this technique: memory isn't really the limitation factor anymore. On the other hand, grouping several mostly unrelated services in the same process is a security and stability issue.