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:

  1. At the current time, with the current settings, what fraction of time is it executing instructions vs lying idle?
  2. 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

Popular posts from this blog

Dark Fonts and Colors for light theme in VS 11

Setting coordinates in Phaser where the body and the sprite are offset from each other

Laptop Surprises: Lenovo Yoga Slim 7i