Disable hyper threading via software?

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
I'm using a laptop(g73jh) that is running a Core i7 and Win7. It does not have a bios option for toggling HT on or off. I am curious if anyone knows of a way to disable HT if you don't have access to it in the bios. Googling this mostly brings up forum arguments about why disabling HT is a good or bad idea and that's not what I'm looking for.

I have reason to believe that Windows is not properly scheduling tasks to the processor cores in a way that achieves maximum performance. Example of what I'm talking about: If there's three threads of work to do, Windows is putting two of them on one processor core and one on another. In essence, it is favoring loading up the logical threads before loading up the physical cores in some scenarios. Obviously, three threads being worked on by three different cores will get much more work done than if two of them were on logical threads on a single core. If things were working optimally, Windows would prefer to put work on the actual processor cores before starting to put two threads on a single core.

The benchmark I ran that made me think this was occurring was wprime. With the program set for 4 threads and 32M, I get a score of 22.4 seconds. With it set for 8 threads and 32M, the score is 15.6 seconds. Surely that kind of performance gain isn't reasonable to expect from hyper threading alone. Something must be wrong when it is running 4 threads; IE it's not scheduling them to the four cores.
 

john3850

Golden Member
Oct 19, 2002
1,436
21
81
Not sure if this will work
But go to System Configuration Utility msconfig.exe Boot advanced options and reset the # of processors from 8 to 4 then reboot.
 

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
CPU Z reports the processor as having 2 cores and 4 threads if I use the msconfig method. Wprime's 4 thread score is the same as well, which seems to confirm my suspicions. The benchmark score for four threads is the same on the processor with 4 physical cores and 8 logical threads as it is with 2 physical cores and 4 logical threads. This means it is absolutely not taking advantage of the processor's 4 physical cores.
 

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
> CPU Z reports the processor as having 2 cores and 4 threads

Are you sure you do have 4 physical cores? For laptop parts only the i7 - QM parts have 4 physical cores.

http://www.intel.com/content/www/us/en/processor-comparison/compare-intel-processors.html

It reports the processor as having 2 cores and 4 threads when I use the msconfig method to limit the processor to 4 threads. It allows me to select up to 8 threads. I have an i7 QM. CPUZ reports 4 cores 8 threads if everything is configured to default.
 

Blastman

Golden Member
Oct 21, 1999
1,758
0
76
You can disable HT (hyperthreading) in the task manager for individual programs on a case by case basis by setting the CPU affinity for that program in the windows task manager.

When setting CPU affinity my i3 shows 4 logical processors …

CPU 0 … physical core 1
CPU 1 … physical core 2
CPU 2 … second logical processor core 1 (HT)
CPU 3 … second logical processor core 2 (HT)

I believe that is how the logical cores are numbered. On an i7 quad 0,1,2,3 would be the physical cores.

If you haven't done this before, bring up Windows Task Manager, click the "Applications" tab, right click on the application and select "Go To Process". This will bring you to the process under the "Processes" tab. Right click again on application and select "Set Affinity". Turn off CPU 4,5,6,7 which will leave 1 processor per core on, essentially disabling HT.
 

Blastman

Golden Member
Oct 21, 1999
1,758
0
76
BTW … HT makes quite a significant difference in wPrime.

i3-530 … seconds …

19.281 … HT on … 33.1% ..faster
25.671 … HT off
 

LiuKangBakinPie

Diamond Member
Jan 31, 2011
3,903
0
0
Thats in a synthetic benchmark. What's the difference in real world circumstances. You don't use your pc to run synthetics 24/7 do you?
Strange that there's no option to turn it off in the bios. Why did Asus do that?
 

Ferzerp

Diamond Member
Oct 12, 1999
6,438
107
106
You are not likely to have issues with HT hurting your general performance.
 

IntelUser2000

Elite Member
Oct 14, 2003
8,686
3,786
136
Here's my results. I just went to BIOS and turned HT off.

Turbo-off Hyperthreading off WPrime 2.06 32M

11.584s

Turbo-off Hyperthreading on WPrime 2.06 32M

8.292s-40% faster

Thats in a synthetic benchmark. What's the difference in real world circumstances. You don't use your pc to run synthetics 24/7 do you?

If you use something that's close to WPrime's code, then its not synthetic is it? Anyway the applications most people use don't even go above 4 threads, so HT will obviously won't help there, but that applies for 6 and 8 cores too.

Windows 7 has "Core Parking", which priotizes physical cores over logical ones on Hyperthreading enabled CPUs. It works too well in fact...

http://www.obr-hardware.com/2011/11/real-winrar-benchmark.html
 
Last edited:

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
I get the same wPrime score with it set to use any thread it wants and forced to 0, 1, 2, and 3. I think I was mistaken and Windows is scheduling things on the cores properly. I just didn't think hyper threading alone could result in such a huge performance improvement so I figured something was wrong with the original score. The posts here have helped me see that the scores are where they should be. Thanks all
 
Last edited:

Blastman

Golden Member
Oct 21, 1999
1,758
0
76
Just tested the new wPrime 2.06 …

i3-530 32M sec. …

25.672 … HT off
18.625 … HT on … ~ 38% faster

My previous results were using wPrime 2.05, so the newer 2.06 appears to work a little better with HT than the previous version.:)
 

LiuKangBakinPie

Diamond Member
Jan 31, 2011
3,903
0
0
Just tested the new wPrime 2.06 …

i3-530 32M sec. …

25.672 … HT off
18.625 … HT on … ~ 38% faster

My previous results were using wPrime 2.05, so the newer 2.06 appears to work a little better with HT than the previous version.:)

Set thread count to include all threads including hyperthreading. 2600K should be set to 8 threads.