It's complicated. What we see as CPU % is really more like 1-time spent idle rather that the work the CPU is actually doing.Scoob wrote: ↑Fri, 7. Dec 18, 15:22 Just so everyone is aware, most tools for measuring CPU load don't really paint an accurate picture when HT is enabled.
With my 2600k @ 4.6ghz it looked like my CPU was averaging about 30% load over all threads, with three threads a fair bit busier than the others, one particularly heavy. So, my CPU, though somewhat more busy on a couple of threads, had ample capacity to spare, so it couldn't be a bottleneck, right? However, this is more down to the tool thinking it's got two full Cores to play with, not one core with some clever scheduling tech. If you temporarily disable HT, you'll see a much more accurate representation of how hard X4 pushes a CPU. for me, it's nearer 70% than 30% which is a huge difference.
HT/SMT can be great, allowing a single core to run dissimilar loads concurrently, or taking advantage of available processing power when an already running process is waiting for something - be it the result from another process, memory access etc. This results in pushing the actual single core harder or at least keeping it productive. A good tech. However, it really does seem to confuse monitoring tools. I personally use Process Explorer, it's pretty solid but misrepresents things similarly to Task Manager it seems.
It's often more realistic to ADD the load of threads 0 & 1, 2 & 3 etc. together to get an idea of the actual load on the underlying single Core. This might seem strange as, when stress testing for example, we see ALL threads 100% loaded. However, these are very specific workloads that are getting every single ounce of performance out of the CPU, using HT/SMT to its fullest. Game workloads rarely work this way. I think the only game I've tried which loaded ALL thread really to their limit was Crysis 2, that game really could leverage every bit of CPU power available.
I just wanted to mention this briefly, and not going into much detail, as, initially, I too though my CPU really wasn't being pushed as hard as it was. The game, for me, appears to run just as well with HT off as it does with it on. However, with it off, my CPU looks like it's working so much harder, due to how Process Explorer sees the work load and available threads.
So, say a process is running, and you are actually limited by memory access speed, you might see a higher number on utilization than what is actually going on. The process might show say 70% utilization for that core but in reality it's like 30% work 40% stalled waiting. In comes hyper threading and other techniques that allow the computer to access that stalled percent to work on other unrelated tasks instead of leaving it to just wait.
If we consider the total available CPU % as a pie, then hyperthreading is basically stopping things from saving pieces of pie for later and letting it be first come first serve instead. With HT, you can do more(sometimes) with the same available resources so it makes your CPU utilization appear lower.
What's happening isnt that the CPU can't do the work, it's that memory and bus speeds can't feed the CPU fast enough. Unfortunately, since you and I are dealing with older mobos and ram due to compatibility with our CPUs, there isnt anything we can do about it. But, fortunately, we don't really need to either, since we are getting satisfactory performance
