Should I disable Hyper-Threading?

Hyper-Threading essentially exposes two logical CPU cores for every physical CPU core. It does this by splitting the computational units of the physical CPU core between two virtual CPU cores.

If none of the paired cores need to use the same CPU resources, they can run simultaneously. This allows for more efficient use of computational resources on the CPU die, as two different software threads have the opportunity to use them at any given time. Otherwise, the hardware resources in question may remain idle and unused.

Should Hyper-Threading be turned off?

If you want to get performance from your computer, the answer to this question is generally no. For security, maybe, given recent MDS side channel attacks.

How does Hyper-Threading increase performance?

When Hyper-Threading was first introduced, logical cores were little more than an add-on, providing performance as low as 10% of the performance of a real CPU core. What made things even more complicated was that the Windows CPU scheduler wasn’t fully aware that it needed to use the real CPU cores first before loading the Hyper-Threaded logical CPU cores.

But over the past few years, both Intel and AMD have changed their architectures, and now the Windows CPU scheduler recognizes that it needs to prioritize thread scheduling over the actual CPU cores first. You can observe this in the way thread usage is interleaved between logical CPU cores.

However, sometimes it is preferable to disable Hyper-Threading to ensure consistent application performance, especially in real-time applications.

How to turn off Hyper-Threading?

You can disable Hyper-Threading dynamically at the UEFI (BIOS) level or per process with Process Lasso’s Hyper-Threaded Core Preventance feature.

The latter allows you to limit the use of non-physical cores to applications that need real-time performance only, without completely disabling Hyper-Threading, and for some older AMD architectures it is the only way to completely disable the use of paired cores.

To turn off Hyper-Threading, access the BIOS and find the Hyper-Threading section in the CPU settings section. Its location may vary as it may be different on each device.

With Hyper-Threading/SMT enabled, you can treat all other CPU cores as physical and threaded ones as logical. For example, threads 1 and 3 will be physical cores, while cores 2 and 4 will be logical cores connected to physical cores 1 and 3, respectively.

Each logical pair of CPU cores (e.g. threads 1 and 2) shares compute units. This is the nature of Hyper-Threading. Therefore, loading threads 1 and 2 will deliver lower performance than loading two different physical cores 1 and 3.