1
When I open Task Manager and Process Explorer I can see they present different CPU utilization values. Moreover, 'Processes' and 'Details' tabs in the same Task Manager indicate different CPU utilization values. I want to understand why, so I tried doing some research.
I have a guess that the difference is because some performance monitors include the CPU speed in their calculations while others don't. To test that theory I created a simple infinite loop in python which does not use IO: while True: pass
. This should exhaust the core it is running in, as it does not use IO at all so there is no spare time for the core to idle.
I ran the loop to see the results:
- Process Explorer: python.exe 8.34%
- Task Manager's Details tab: python.exe 8%
- Resource Monitor: Maximum frequency 180%
- Task Manager's Process tab: python.exe 16.8%
- Process Explorer CPU usage: 10.28%
- Resource Monitor: CPU usage 19%
- Task Manager's Performance tab: CPU utilization 19%
Now let's do some math and explain these values. I am using 12 logical processors with base speed of 2.21GHz, so the results are:
- Process Explorer: python.exe 8.34%
- My python program should exhaust a single core. My system has 12 logical cores so 100/12 is approximately 8.34.
- Task Manager's Details tab: python.exe 8%
- Same as previous calculation, but task manager rounds the result to 8%.
- Resource Monitor: Maximum frequency 180%
- 180% of the base speed is approximately 3.98GHz, which was my CPU speed during the test.
- Task Manager's Process tab: python.exe 16.6%
- 180% of 8.34 is 15, which is not exactly 16.6 but pretty close...
- Process Explorer CPU usage: 10.28%
- It seems like the 'real' CPU usage without any scale.
- Resource Monitor: CPU usage 19%
- 180% of 10.28 is 18.5 which is pretty close
- Task Manager's Performance tab: CPU utilization 19%
- Same as in Task Manager Performance tab
It all adds up to be pretty simple: Process Explorer shows the usage of the cpu without any scale, Task Manager and Resource Monitor show it with a scale of the current CPU speed (except for the Details tab for some reason). It also seems like Task Manager cannot show values over 100%, but Resource Monitor can.
I tried it one more time, now with several loops on several cores, so the difference would be more significant:
- Resource Monitor: Maximum frequency 156%
- 156% of the base speed is approximately 3.44GHz, which was my CPU speed during the test.
- Process Explorer CPU usage: 69.57%
- It seems like the 'real' CPU usage without any scale.
- Resource Monitor: CPU usage 109%
- 156% of 69.57 is 108.52 which can be rounded to 109.
- Task Manager's Performance tab: CPU utilization 100%
- Same as Resource Monitor, but is capped to 100%
So my question is:
Am I correct? I tried to find any evidence around the web but it seems like no one has done the same math. In fact some people gave contradicting explanations to this difference... Am I missing something?
I've found similar questions in this site, but their answers seem incorrect or irrelevant to my question:
- Some of them explained that there might be processes from other users. It is not relevant here as I see processes from all users.
- Some other answers explained that Process Explorer and Task Manager have different polling algorithms. this is fine but it does not explain the different values of Processes and Details tabs of the same Task Manager.
- Other answers mentioned that there is no connection between CPU usage and CPU speed. As I understand this is wrong because clearly there is a connection (as I showed above), and this connection actually explains the difference. Am I missing something?
The questions I have read:
Did you see this page>>>>https://medium.com/@ppatali/sysinternals-tools-process-explorer-and-process-monitor-6252b919e5fb
– Moab – 2019-12-03T21:45:44.360@Moab I have read it now, bit it only describes how to use Process Explorer (which I already used in my question) and Process Monitor (which is not relevant to my question) – YAYAdest – 2019-12-03T22:40:02.153