What's new

Disable Hyperthreading?

kozak79

Active Member
Is there a way to disable Hyperthreading? Many tasks are not properly multi-threaded and many applications, even while being multi-threaded, still have some tasks within them that don't take advantage of multiple cores. That being said, with Hyperthreading, your physicals cores are split to perform 2 tasks, so if an application is only using one thread, you're actually using half the potential of that core, making things slower. I've only experienced benefits when using hyperthreading for 3D rendering or video processing, otherwise I turn off Hyperthreading on all my machines, and even then, the benefits max out at about 15% speed improvement.

Since I'm not rendering anytime soon on my SP3, is there a way to disable Hyperthreading on the SP3?
 
I won't tell you how to do it. But please don't give it even a try to do it. You need hyper threading even when you don't know. I will NOT recommend to do!
 
The reason I want to disable it is that I use 3D applications like Maya. Maya is multi-threaded 64 bit application, but many of it's plugins and modules are not multi-threaded. So when you're doing something in Maya that is not multi-threaded, only one of your logical cores is being used. With Hyper-Threading on, you have 4 logical cores from splitting 2 physical cores. That means instead of a whole core working on a non multi-threaded process, only half a core is working on it. On top of that, Hyper-Threading only gives a marginal performance boost to applications that can actually take advantage of it.
 
The answer to the OP question is "sort of". Skip down for the how to.

On Ironlake and earlier Intel processors, disabling hyperthreading (HT)could indeed boost single-thread performance for some workloads. Microsoft Exchange server was on such workload. Also in certain old games that only generate 2 threads, if both threads are on the same physical processor, then the two threads can reduce the efficiency by overwhelming the L1/L2/L3 caches such that there is a lot more thrashing to main memory than what the developer intended. This can be easily worked around by manually setting the processor affinity when starting your application.

With the improvements in IvyBridge/Haswell processors, there are very few workloads that would result in slower performance with HT on vs off and in fact Windows 8.1 takes advantage of HT very well, so if you were able to turn it off, you might see a small decrease in perf and a small increase in power consumption.

How to:
Unlike Dell/Lenovo firmware, the Surface UEFI firmware does not provide an option to disable HT. But you can artificially set the system to single thread mode or two thread mode if you wanted to benchmark single-thread performance for test purposes.
  • Run msconfig.exe
  • click over to the "boot" tab
  • ensure your OS is selected then click "advanced options"
  • check the "number of processors" box
  • set the value to 1 or 2 depending on your preference
  • save everything
  • reboot
  • run your benchmark/test
If you set it to "2" its dumb - it just disables the second physical proc so that you have 1 physical proc with 2 threads. So the only true way to disable HT is to limit it to one proc. Probably not what you wanted to do, but now you know. Using the affinity option mentioned previously is much better.
Use start /AFFINITY commandline to specify exactly which processors you want your app to use instead of having Windows auto-select. You can use powershell too (See references)


References:
 
Last edited:
How long do your Maya plugins execute for? I suspect that if you start Maya with the affinity settings to only use Processor 0 and Processor 2, for example, Maya will run great, but when it instantiates a separate process for a plugin, that process will be assigned to a processor by the OS. You could use task manager to set the affinity for that manually if it is a long-running process and is likely to be negatively affected by HT.

You'd have to test it to see if it actually boosts performance. My bet is that its not going to be worth it to mess with this stuff.

BTW it is incorrect to assume that with HT on that a single thread on a single physical processor is not using the whole processor. The scheduler is very smart and you can watch the clock rates and thermal performance of the processor to prove that it is being used. You are not squandering the capabilities of your CPU by leaving HT on.
 
Well that's annoying. It's not windows that I'm worried about. There are many times where I do a task that takes a long time and I open the task manager to make sure my application hasn't crashed, and only seeing one logical core cranking away at 100% while the other 3 are at 0% is disappointing. With hyper-threading off, one of the physical cores would be cranking away, that's 2 logical cores.

It's easy on my laptop. I go in the bios and disable just disable HT.
 
Kozak, on your laptop, what was the performance or power consumption difference with HT on vs off. Also which generation of Intel CPU was it? On later generations, unless you have very specific workloads, you're unlikely to see much difference.

If you do see a big difference, you should file a ticket with the plugin developer. Intel has very good developer guidance on this stuff, free sample code, and HT has been around for years...
 
Last edited:
Back
Top