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 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?
- 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?