Is Intel Hyper-threading really useful in Gaming or not?

Fidgetmaster

Reputable
May 28, 2014
548
0
5,010
As subjective this may be....I notice for example Battlefield 4 can top out at abut 60-70% between all cores/threads on my i7 920 Oced to 3.6-4.0ghz....but with HT on I still occasionally get a lag/stutter crap going on... I thought BF4 was able to make good use of Hyper-threading?
 
Solution
The best tool I know for spying on how much CPU time applications are using is Process Explorer: when you open the properties for a running program, it can tell you how much CPU time applications are using on a thread-by-thread basis. Much better than Task Manager's lumped per-program overall CPU usage and system-wide load on each CPU core/thread.

bigj1985

Distinguished
Mar 12, 2010
331
0
18,810
HT is not completely useless for gaming (despite what some naysayers will proclaim), but at the moment its not very useful either if you have an i7. If you look at benchmarks with the i3 w/HT compared to CPU's with a higher core count you will see HT helps the i3 by quite a bit depending on the game. So usually games that use 4+ threads get a nice bump on the i3 w/ HT. But again it all comes down to the game.

There are specific rare moments where HT actually hurts perofrmance but this is an acception not the rule. So for now i7+ HT has negligible impact. With an i3 it's more useful.
 

Fidgetmaster

Reputable
May 28, 2014
548
0
5,010
when I turn off HT I get like 98% utilization on all 4 cores... as far as fps stays about the same its hard to tell at times....HT on maybe causing slightly higher Latency/lag I don't know...that leads to stutter etc... could be just different servers too though as well as issue on BF4 end....I cant even use Mantle on my gigabyte 270 it is like 2-3x worse...just ridiculous....
 
Task manager may give you misleading information.
If you have a single thread app that is entirely cpu bound, windows will spread it out across all available cores.
With 4 active threads, but only two that are heavily utilized, you may average 50% cpu when you are actually cpu bound.
It is unclear how well windows can detect what needs to be dispatched on the main cores vs' the hyperthreads.

Playing civ 5 on a 4790K with hyperthreads, I see about 25% utilization on alternating cores. not much on the others.
Civ 5 is largely a single thread game.

You might try two experiments:
1. disable hyperthreading. Theory is that windows is dispatching BF4 to the slower hyperthreads.
2. Reduce your oc. If this results in worse fps, then you are likely sensitive to individual core speeds.

BF4 should not be very cpu sensitive in single player. In multiplayer it can be and 4 fast cores will help a lot.
 

InvalidError

Titan
Moderator

There are no "main cores" and "weaker hyperthreads"; simply cores that can issue instructions to execution resources from two different execution contexts. If a core has only one active context on it, it gets 100% of the core's resources. If a core has two active threads, resources are split roughly 65-65 for a net 30-40% higher combined IPC.

The performance issues crop up when a latency-critical process ends up sharing its core with something else that is not performance-critical, eating a ~30% performance penalty during that time.
 


Task Manager is not a good metric for measuring performance.

Task Manager defines CPU usage as the fraction of a unit of time over all logical processors spent executing processes other than the System Idle Process.

Since HyperThreading is a dynamic technology which schedules instructions from two frontends (logical processors) to the same backend it is possible to create an illusion of under utilization. In a system with one Hyperthreaded core, if one of the two frontends is heavily loaded and the other frontend is idled the usage will appear to be 50% as far as task manager is concerned. However, the instruction scheduler on the CPU may be keeping the backend execution units optimally busy which would yield the same total instruction throughput regardless of whether Hyperthreading is enabled or not.
 

InvalidError

Titan
Moderator

Even in heavily optimized code, it is nearly impossible to fill all of Sandy/Ivy/Haswell's execution units on an on-going basis with a single thread. That's why HT yieds a 30-40% performance gain in most heavily threaded scenarios - the extra thread enables each core to work smarter instead of harder by giving them two different instruction, data and dependencies streams to optimize execution resource utilization with.
 


I am well aware of that. My scenario was a hypothetical to demonstrate that CPU usage as it appears in Task Manager is not a good indicator of efficiency or resource utilization. Heck, running no-op loops in numerous low-priority threads could probably bring it up to 100% usage with little to no performance impact
 

InvalidError

Titan
Moderator
The best tool I know for spying on how much CPU time applications are using is Process Explorer: when you open the properties for a running program, it can tell you how much CPU time applications are using on a thread-by-thread basis. Much better than Task Manager's lumped per-program overall CPU usage and system-wide load on each CPU core/thread.
 
Solution