Windows Task Manager is lying to you, and I don't know how to make it stop
If you use Windows, you might be intimately familiar with Windows Task Manager, which has a performance tab that shows the utilization percentage of various hardware in your system. Today, we're looking at CPU utilization. It looks a bit like this:
The problem is that the meaning of the word utilization is very tricky. There can be multiple meanings:
- At the current time, with the current settings, what fraction of time is it executing instructions vs lying idle?
- At any time, with the most optimum settings, this CPU could practically complete a number a instructions at a certain rate. What percentage of that rate is it currently working at?
I think the Windows Task Manager is currently using definition #1 above. This is useful for a person to look at the graph and understand "is there a runaway process on my system that is pegging my CPU"? However, consider the alternate use-cases:
- I am trying to run a long-running program, am I getting my money's worth out of this CPU?
- I am trying to run a difficult to run program, are there some settings I should change to make this go faster?
- Is my program optimized properly for the architecture of the CPU I am running it on?
These questions cannot be answered by Task Manager the way it is currently displaying information. I would argue, using definition #2 above would provide a much better answer for these use-cases.
In order to create a UI that effectively displays the utilization according to definition #2 above, it will have to consider the following things:
- What is the current idle time for each core? (This is common for all definitions).
- What is the current clock frequency for each core?
- What is the maximum base clock frequency that each core can sustain long-term?
- What is the maximum clock frequency that each core can achieve when the CPU decides to Turbo?
- What is the maximum clock frequency that you can realistically achieve with a stable system if you chose to overclock?
- Which cores are of what type, distinguishing between performance and efficiency cores?
- If the CPU supports hyperthreading, which logical cores are actually part of the same physical core?
This is quite difficult, but with a UI that carefully displays this information, I think we can help people make the most of their CPUs.
Comments
Post a Comment