If you’re looking for a very simple profiler that will give you a general idea how CPU utilization is distributed in your system, look no further than the latest version of Process Monitor.
Under Tools | Profiling Events, you can enable stack trace collection every second or every 100ms for all running processes.
The profiling events have an execution stack, exactly like any other event in Process Monitor, and you can gain a quick impression where CPU time is spent and which call stacks are responsible for it.
Here’s an example call stack from a devenv.exe thread captured in the profiling mode:
And here is an aggregating view for all the activity in the log (under Tools | Stack Summary):