Disabling SMT or Hyper-Threading for Better Latency

When it comes to game performance it is important to understand that although of great significance FPS is not the only measure you should be looking at. Another measurement that is as important as FPS (in my subjective opinion) is latency or how fast your PC executes inputs from your peripherals.

Better latency in simple terms translates to better inputs and a closer 1-to-1reaction of your in-game character to your real-time movement. We have already discussed ways in which you can decrease latency (custom Windows ISO, CMD commands, power plans, etc) and today I have tested another method through which you can shave off some milliseconds.

What Is SMT or Hyper-Threading

SMT (AMD) and Hyper-Threading (Intel) are technologies that allow more than one thread to run on each core allowing CPUs to be more efficient during their workloads. This is why most modern CPUs are described with a number of cores and threads (ex: my 5600X has 6 cores and 12 threads).

cpu cores

An unfortunate byproduct of these technologies is that in some cases a task is split between cores on different threads adding latency to whatever you are doing on your PC. This is a big drawback in competitive gaming where you want your inputs to translate as quickly as possible to in-game actions.

This is an overly simplified version of what these technologies do, but for the purpose of this article it is enough to understand a simple equation: SMT/Hyper-Threading ON = possibly better FPS and performance – while – SMT/Hyper-Threading OFF = better latency in games. In essence, I was curious how big would the difference in FPS be for gaming and how measurable would the difference in latency be if I would turn off SMT (since I have an AMD system) on my PC.

Methodology

The way I tested latency with SMT on and off was LatencyMon since this is a very popular tool exactly for this task. I ran the benchmark 3 times for both SMT on and off and restarted each time to make sure the system is fresh.

I have also made sure to have no background applications running to have the closest possible result to a perfect scenario.

task manager zero cpu usage

For the game testing, I have decided to use Apex Legends since this game is known for being a multi-threaded hog, allowing me to see how the game will behave if suddenly the extra threads are gone and it can only run with 1 thread per 1 core.

The test itself was a repetition of tasks in the training range since it is a controlled environment. Since this was not a proper benchmark the results are not 100% accurate but considering the results I have recorded and that the actions were repeated with consistency I am about 95% sure of the repeatability of the final results.

All of this was carried out on my PC which is running a PBO2 + Curve Optimizer overclock on my 5600X and my RTX 2070 which is overclocked and also is de-shrouded. I am also running a custom Windows install called KernelOS (1809) so my system is already tweaked out pretty hard.

SMT On

The first thing I tested with SMT was LatencyMon where the results after 3 measurements were between 2.75us and 2.8us.

smt on lattencymon 1
smt on lattencymon 2
smt on lattencymon 3

These results were consistent with all the other previous testing I have done on my system which did not surprise me at all.

In Apex I did the same set of actions 3 times as described in the methodology while measuring and recording the FPS using MSI Afterburner and RivaTuner. The settings in Apex were 1920×1080, 110 FOV, with every other setting on low for maximum FPS.

apex ftp on

As you can see the results were all within the margin of error telling me that my set of actions repeated in the firing range can be considered a valid benchmark.

SMT Off

After going to the BIOS of my PC and disabling SMT I have started my second round of testing with restarts between each run of LatencyMon and all the other steps to ensure the validity of my results.

bios smt control

In LatencyMon with no background applications running the latency went down to 2.45us – 2.5us compared to the 2.75us and 2.8us.

smt off lattencymon 1
smt off lattencymon 2
smt off lattencymon 3

Although I have measured a notable drop in my latency it was interesting that in Apex my FPS did not change at all and was all within the margin of error.

apex ftp off

The conclusion here is pretty simple then – I have achieved lower latency without impacting my performance in my game of choice which is a net positive overall.

Limitations

The limitations of my little study here are obvious – I have used only LatencyMon to measure the latency changes and have only used a single game (3 runs each to get a stable average). Moreover, since my system is running an AMD CPU I was not able to test the same process on an Intel system.

At the same time, my findings are consistent with most other PC tweakers that have experimented with this subject on different platforms.

huperthreading on vs off

@Calypto

The common conclusion is that for gaming, turning off SMT/Hyper-Threading might lead to a small loss in FPS (depending on the game engine and optimizations) while for workload tasks this will lead to a substantial loss in performance.

cinebench results

Since I am mainly interested in gaming I would say that turning off SMT/Hyper-Threading and lowering your latency is worth losing some FPS, especially if after running some tests you lose none like in the case of Apex.

Conclusions

While turning off SMT/Hyper-Threading might hinder your performance in work-oriented tasks if you are a competitive gamer like myself and you want the best possible latency, turning off SMT/Hyper-Threading is a step in the right direction.

The decrease in latency is clear while the drop in FPS and performance will depend on individual games and optimizations. At the same time as other reputable sources have noted “in gaming, overall there was no difference between SMT On and SMT Off, however, some games may show differences in CPU limited scenarios” (source) which then leads to my conclusion.

As a competitive gamer, you should turn off core virtualization for the benefit of lower latency. The only time this advice should not apply is when you can measure a huge difference in FPS in your game of choice which then renders it unplayable.

About The Author

Chris (vile_is_dead)

Custom Windows ISO enjoyer, FPS optimizer, and aim improvement enthusiast. Will disassemble all of his peripherals (and sometimes PC parts) to mod them even if all of them work perfectly fine. Discord/Twitter: vile_is_dead

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Christopher Jackson (Ravetank / Jacksonstrut)
Christopher Jackson (Ravetank / Jacksonstrut)
1 year ago

This is a wikked idea! I have been curious about the effects of hyper threading on various apps I run, but as I opposed to disabling via UEFI, I have been using (previously Bitsum Process Lasso) and currently System Inspector to both disable hyperthreading for selected apps, and also cofigure core affinities for apps as well.

You have me intrigued to give this a try, and as I have an INTEL processor, I can provide some useful intel based results.