CPU usage question

Simon771

New Member
I have question about CPU usage.
My task manager is reporting 40% CPU usage, but in HWinfo there are 2 values:

Max CPU/thread usage
Total CPU usage

Can someone explain to me what those 2 values are and what's the difference betwwen them (why is one lower than enother).

Picture in attachment.
 

Attachments

  • hwinfo.jpg
    hwinfo.jpg
    326.8 KB · Views: 46
"Max CPU/Thread Usage" is the maximum instantaneous usage among all threads/cores in the system, so on the screenshot it matches Core #1 which has actually the highest usage.
"Total CPU Usage" is the arithmetical average usage of all threads/cores in the system (sum of all particular usages divided by their count).
 
Martin said:
"Max CPU/Thread Usage" is the maximum instantaneous usage among all threads/cores in the system, so on the screenshot it matches Core #1 which has actually the highest usage.
"Total CPU Usage" is the arithmetical average usage of all threads/cores in the system (sum of all particular usages divided by their count).

That's interesting ... task manager showing me 45% CPU usage overall, while HWinfo is apparently showing me only 17% total CPU usage.
Now I get it that max cpu/thread usage means max load/usage on the most used core/thread, but it's still confusing to me why is task manager showing 45% total CPU usage while hwinfo only 17%.
 
Yes, I have already noticed some discrepancy reporting the total CPU usage on Windows 10.
But it seems that Task Manager is wrong here.
I have used a dedicated Intel tool to put various constant load levels on different cores in the system.
And HWiNFO reports well in sync with the expected levels, while Task Manager seems to report cca 20% higher usage per each core.
 
And here the proof.
I have started 50%, 60%, 70%, 80% workload on the first 4 cores using the Intel tool.
As you can see HWiNFO reports correct values, but Windows Task Manager higher numbers. Core4 which is loaded at 80% reports 100% most of the time.

CPU_Usage_Win10.png
 
Martin said:
Yes, I have already noticed some discrepancy reporting the total CPU usage on Windows 10.
But it seems that Task Manager is wrong here.
I have used a dedicated Intel tool to put various constant load levels on different cores in the system.
And HWiNFO reports well in sync with the expected levels, while Task Manager seems to report cca 20% higher usage per each core.

Martin said:
And here the proof.
I have started 50%, 60%, 70%, 80% workload on the first 4 cores using the Intel tool.
As you can see HWiNFO reports correct values, but Windows Task Manager higher numbers. Core4 which is loaded at 80% reports 100% most of the time.

CPU_Usage_Win10.png

Seems like Microsoft needs to fix that Task Manager CPU usage ...
Anyway, now at least I know which one is more reliable. Thanks for all your work :)
 
You need to watch the "Core Utility" value in HWiNFO, not "Usage".
This was added long ago and discussed several times here.
 
Hi, thanks, understood. Is this possible to get represented max value out of all cores? I want to check during game if I'm CPU bottlenecked. I'm not sure if this will help me, but at least I wanted to check if any core goes to 100%. Thing is to make graph of max core utlility, so can somehow see how max of all cores changes over time.

core utility.png
 
Understood. Can you suggest is there a way to reach my goal ? How can I get graph showing CPU bottlenecking in situations game sits only on 2-4 cores out of 16 ? Total/avagerage CPU usage does not help. And nowadays, is Win11 task manager showing properly load on cores ?
 
I am looking for something similar ... figuring out whether my CPU is capping at its single thread performance.
I think that that most cpu meters or whatever you may want call them don't give you good values, as a thread will be switched between cores and therefore core utilization will not give the right numbers.
I think for the intel tool mentioned above, the load will be artificially bound (affiliated) to a specific core ... which will not happen for a normal SW.
I have written a simple python program which will start 2 threads in parallel and as python cannot use more then 1 logical core per process, these threads will only be able to use 1 logical core.
Python:
from threading import Thread
from tqdm import tqdm
import os

NUM_THREADS = 2

def worker():
    x = 1.564243525424542
    for i in tqdm(range(10000000000), mininterval=1):
        x =x +10
        x = x / 10

if __name__ == "__main__":
    threads = []
    for i in range(NUM_THREADS):
        threads.append(Thread(target=worker))

    print(os.getpid())
    for t in threads:
        t.start()

as my Processor (i7-2600) has 4C/8T (the os sees 8 logical processors) so one processor at full load corresponds to 12.5% Cpu load, which is is exactly the average I see.

So for each of my 2 threads I expect ~ 6.125% load each.

It seems like Process Hacker (aka System Informer) is the only tool which can give me consistent readings here ... I can clearly see, that my processor is capping in single thread performance.

Unfortunately Process Hacker is not capable of logging this information to a file ... would be great if HWinfo could get inspired on how Process hacker can determine max thread usage.

1718049000789.png
 
Process Hacker gives you the usage of your process only, while HWiNFO shows the total usage of all processes in the system (which matches the total usage shown by PH).
 
Process Hacker gives you the usage of your process only, while HWiNFO shows the total usage of all processes in the system (which matches the total usage shown by PH).
That's understood, however I was hoping/expecting that HWinfo is giving my the load of the busiest thread in the "max cpu/thread usage" reading.

As this is exactly the number one would need to determine whether a game is cpu or gpu limited on a specific system.
 
It's giving that but for a CPU thread, not software thread (that as you noted might be switching). If a CPU thread would be used to max, it would show 100%.
To prevent OS from switching your threads you can adjust the respective process CPU affinity in Task Manager.
 
It's giving that but for a CPU thread, not software thread (that as you noted might be switching). If a CPU thread would be used to max, it would show 100%.
To prevent OS from switching your threads you can adjust the respective process CPU affinity in Task Manager.
Ok, understood. But this means the metrics provided by HWinfo cannot be really used to identify a CPU bottleneck in games.
Basically I always get an average CPU utilization.
Changing the cpu affiliation is not really an option, as games will spawn 100 or more threads which will then all end up on a single HW thread.
This will also not give a realistic picture of the cpu capping seen in a game.
 
I think that when you run any application that's quite CPU demanding, the usage of rest of the tasks is negligible, so you could use the total CPU usage as an indicator.
 
I think that when you run any application that's quite CPU demanding, the usage of rest of the tasks is negligible, so you could use the total CPU usage as an indicator.
I do not think so, 3D heavy games usually have a single render thread which is feeding the GPU with info about what is to be displayed at any point in time.
This thread is what is limiting the fps in a CPU limited scenario. Overall and single core cpu utilization will still show moderate values, while the single thread is at 100%.

See my example above:

The 2 test threads are generating only 12% load, distributed over all cores. But still they are at 100% of the cpus capability. Which is basically representing the cpu's single thread performance.

When running a game and you have lets say 50% cpu load on a processor with 8 logical cores generated by 20 threads. You never know whether:

- you have 20 Threads with 2.5% load each ... In this case the all threads generate moderate load and there is no bottleneck.
- you have 1 Thread at 12.5 % (max possible value) and the remaining 19 are at (50-12.5)/19=2% which is under critical. In this case one thread is bottle neck for the overall system.
 
Back
Top