Sysinternals Homepage
Forum Home Forum Home > Sysinternals Utilities > Process Explorer
  New Posts New Posts RSS Feed - Task Manager and Process Explorer don't agree
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Task Manager and Process Explorer don't agree

 Post Reply Post Reply
Author
Message
f-win View Drop Down
Newbie
Newbie


Joined: 19 February 2010
Status: Offline
Points: 2
Post Options Post Options   Thanks (0) Thanks(0)   Quote f-win Quote  Post ReplyReply Direct Link To This Post Topic: Task Manager and Process Explorer don't agree
    Posted: 20 February 2010 at 12:25am
Hello,

I hope this is interesting enough... I found that the per process CPU utilization reported by the Windows Task Manager is sometimes consistently higher than the utilization reported by Process Explorer:

- In case the "kernel load" of the system is low, Task Manger and Process Explorer roughly report the same per process CPU utilization - so far so good

- If the kernel load of the system is a little higher e.g. 10% Task Manager continues to return the same value for the monitored process but Process Explorer starts to consistently return less. I observed the same problem in a little test application I wrote: I am querying GetProcessTimes() and GetSystemTimes() periodically and computing the per process CPU utilization based on the values returned by the Windows API. I am pretty much getting the same values reported by Process Explorer.

So what is the Windows Task manager doing differently and why is Process Explorer getting inaccurate once the kernel load goes up?

- I tested on Win XP SP2 and Windows 7, on a single core with/without hyper threading and on a quad core machine. All pretty much the same results.
- For the test I am using CPUStres.exe utility to create a consistent load of about 50%.
- I open the Windows Task manager set the update interval to slow
- Open process explorer and set the update time to 5 seconds
- Open the Properties->Performance Graph for CPUStress.exe.
- Both Task Manager and Process Explorer agree that the load is ~50%.
- Now I am starting another application which is causing some kernel load. e.g. I started a video call using skype. it does not really matter which application I am using as long as it is causing some kernel load
- Skype brings up the kernel load of the system to about 10%
- At this point I have reproduced the problem: Task Manager still shows CpuStres.exe with about 50% utilization but Process Explorer Shows it consistently lower. The value shown by Process Explorer jumps between 46-49% and is always < 50%. This is a difference of up to 10%
- I have done simular tests under higher system load and have seen differences of up to 20%

Would be great to solve this Windows mystery!



Back to Top
f-win View Drop Down
Newbie
Newbie


Joined: 19 February 2010
Status: Offline
Points: 2
Post Options Post Options   Thanks (0) Thanks(0)   Quote f-win Quote  Post ReplyReply Direct Link To This Post Posted: 20 February 2010 at 1:36am
I did some more research and "found" the difference between the values shown by the task manager and Process Explorer under "System Idle Process -> DPCs"

In other words if I add "System Idle Process -> DPCs" + "CPU of process reported by Process Explorer" I get "CPU of process reported by task manager"

So the Windows Task Manager somehow knows which percentage of the DPCs belongs to a particular process. But how does it does it do it? Maybe Mark Russinovich knows?
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down