TurtlePerson2 wrote:So how does Windows figure out the CPU utilization and what does that even mean? I'm a computer architecture and VLSI design student so I know how a CPU works and I can't figure out how you would ever get to 100% CPU utilization on a consistent basis. It seems that branch mispredicts (as rare as they may be), cache misses, and certain data hazards will prevent you from having all functional units full.
Is the CPU utilization a software monitor and not a hardware monitor? If so, then is it truly accurate?
Task manager (along with any other software process monitor like top, ps, psexplorer etc) is quite simple. It isn't much more than (available time slices used by process / available time slices). It's not designed to be accurate; it's designed to be close without slowing process execution down to a crawl.
Task Manager doesn't know or care about cache misses, pipeline stalls or branch mispredicts. To see what is going on (and not even to the level of detail you are talking about in some cases) you would need to use something like valgrind or maybe DTrace. If you're really interested in watching what is happening in a windows process I'd recommend
http://technet.microsoft.com/en-us/sysinternals/bb896653. It's task manager on steroids and while it still doesn't do stuff like you mentioned it's a lot closer. I'd also recommend reading anything by
Mark Russinovich since he is the author of process explorer and perhaps the single best authority on windows internals.