• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

Disable HyperThreading

ashrack

Limp Gawd
Joined
Jan 15, 2006
Messages
145
Hello!

I run a Pentium 4 540 3.2 GHz under Win 7.
I would like to disable HT since all my work revolves around a single threaded app.

The problem is that in BIOS there is no such option.

Is there another way to disable it?
 
I doubt it. The bios controls all the basic things about a processor, and if you don't have that option in the bios, then you're out of luck.

Try updating your bios and see if the updated version has that feature.
 
Found this posted elsewhere. I also thought I saw this option in Realtemp but might be thinking of another application.

"Add /numproc=1 to the end of your boot.ini boot line. You could
create a multi-boot to select HT on, or off, during boot. This can
also be used to select the number of cores active for a multicore
CPU."
 
I recommend against doing that since that chip already needs all the help it can get.
 
still why would you want to turn it off?

This. Windows releases from the past decade have been optimized to take advantage of HT and multicore processors, so despite the fact that you're running a single threaded application most of the time it does help to have that extra logical processor for other background tasks and processes. Especially if it's on an old P4 Prescott.
 
Found this posted elsewhere. I also thought I saw this option in Realtemp but might be thinking of another application.

"Add /numproc=1 to the end of your boot.ini boot line. You could
create a multi-boot to select HT on, or off, during boot. This can
also be used to select the number of cores active for a multicore
CPU."

Will this disable HT and hence use 100% of the available CORE, or will it only use 50% of the CORE?
 
When your process explorer shows it's using 50% you do realize it's using 100% of the logical core as it is? The other non used is the HT. If you shut that off you're going to slow your system down.
 
Will this disable HT and hence use 100% of the available CORE, or will it only use 50% of the CORE?

It would set Windows to only see 1 core and if an application needs to and can use 100% of the core it will.
 
Will this disable HT and hence use 100% of the available CORE, or will it only use 50% of the CORE?

Wow... I think this shows that you are really just confused about hyperthreading more than anything.

Hyper-threading doesn't do anything whatsoever that prevents your processor from being fully utilized. A program that could max out your core before will still max out your core now. You see 50% because that is how it is represented with 2 logical processors. But 50% means one logical processor is fully loaded - and since there is only one physical processor, that means it will be fully loaded too. The purpose of the 2nd logical processor is to take advantage of spare hardware on your processor to possibly run extra programs at the same time on that 2nd logical processor by taking advantage of unused resources on your physical processor. Most apps, even when they are showing 100% in task manager, are still not making 100% efficient use of the processor - and what's left can be taken advantage of via the 2nd logical processor. The 2nd logical processor being there doesn't slow anything down or prevent a single-threaded app from running at full speed on either logical processor.

Your single threaded app will actually run faster with HT enabled because background windows tasks will be moved over to the 2nd logical processor and run on that, making more efficient use of your processor overall than if it was all sharing a single logical processor.
 
Wow... I think this shows that you are really just confused about hyperthreading more than anything.

Hyper-threading doesn't do anything whatsoever that prevents your processor from being fully utilized. A program that could max out your core before will still max out your core now. You see 50% because that is how it is represented with 2 logical processors. But 50% means one logical processor is fully loaded - and since there is only one physical processor, that means it will be fully loaded too. The purpose of the 2nd logical processor is to take advantage of spare hardware on your processor to possibly run extra programs at the same time on that 2nd logical processor by taking advantage of unused resources on your physical processor. Most apps, even when they are showing 100% in task manager, are still not making 100% efficient use of the processor - and what's left can be taken advantage of via the 2nd logical processor. The 2nd logical processor being there doesn't slow anything down or prevent a single-threaded app from running at full speed on either logical processor.

Your single threaded app will actually run faster with HT enabled because background windows tasks will be moved over to the 2nd logical processor and run on that, making more efficient use of your processor overall than if it was all sharing a single logical processor.
Trust me I understand very good how multicore, HT and whatnot works.
As I understand Windows doesn't not distinguish between true multi core and fake multi core AKA HT.
So bios with HT ON reports 2 cores to Windows, so if I set the NUMPROC=1, which means Windows will only see the 1 core won't that mean that it will only use half of the CPU?
 
Bring up task manager
Click on the Processes tab
Click on the View Menu
Choose the option to "select columns"
Check the box next to Threads
Click ok
Look at the Processes Tab, check out the threads column
Rethink disabling hyper-threading as whatever app your using is running under Windows.

A single threaded app will spawn a thread, that will wait in a queue, and be processed when it can. The priority of the thread and the number of active threads will dictate when the thread can be processed. It might be told to sit tight, be blocked, or get it's chance to get processed. Let's say it's in process, but waiting on your hard drive to finish a read/write, keeping in mind this stuff happens in milliseconds / microseconds, while that thread is in use on a single core, everything is waiting, with hyperthreading it can process (either in part or completely) other threads in the queue.

Hyper-threading allows one physical core to process more then one thread at a time. It tells the OS, hey I've got 2 cores here for you to use.
There are times when the additional overhead can slow down a single thread, however your not going to see that in your desktop OS with a P4 as you have I/O to deal with. Threading, thread waits, and blocks, if you really want to dig into it I'd research those.

If your talking about ESX, dedicated servers, and high end gear, there are times when turning it off will make a difference, which is where folks get confused. If you have 192 physical cores, that have 192 virtual cores, hundreds of GB of ram and multiple SAN's (my test environment at work), you can change how the OS handles the management of those cores and hyperthreading, and it can make a difference that's significant.

But with a single core P4 on a desktop OS, don't worry about it, it speeds up things a lot more then you see.

That's a very simplified version, but I'll bet you get the gist of it. If you really just want to limit the app, set the affinity to CPU 0 (in task manager) for that process.
 
Trust me I understand very good how multicore, HT and whatnot works.
As I understand Windows doesn't not distinguish between true multi core and fake multi core AKA HT.
So bios with HT ON reports 2 cores to Windows, so if I set the NUMPROC=1, which means Windows will only see the 1 core won't that mean that it will only use half of the CPU?
:rolleyes: AMD logic 101
 
Just give him the info on how to do it and let him see the benefit/penalty for himself...
 
Trust me I understand very good how multicore, HT and whatnot works.

No you don't.

As I understand Windows doesn't not distinguish between true multi core and fake multi core AKA HT.

Actually any Windows version since XP onwards is aware of Hyper Threading and will spread the threads evenly across physical cores before getting into using the additional thread(s) given by HT.

So bios with HT ON reports 2 cores to Windows, so if I set the NUMPROC=1, which means Windows will only see the 1 core won't that mean that it will only use half of the CPU?

Just don't disable HyperThreading. It won't do you any good; in fact, it'll be far worse. Any application that hangs and starts fully using the processor will completely take down your system.
 
Last edited:
Trust me I understand very good how multicore, HT and whatnot works.

So in your fictional reality, everyone else here just has no clue what they are talking about?

The last OS that didn't recognize HT was Windows 2000. It appears that your knowledge of this subject is equally dated.
 
I, for one, commend the OP. I too have removed Hyper Threading from my system, only I had to do it manually...1 hyper thread at a time. If you'd like instructions on how to do it yourself, PM me. You will need tweezers.
 
still why would you want to turn it off?

Because on older processors and low-end processors like Atoms, it hampers performance horribly.

Windows isn't that optimized to run single-threaded apps across all logical processors.
I've seen this first hand, it's a pain in the ass.

When an process needs a single processor, and all it gets is a single logical processor, the performance is hampered, especially on my Atom dual-core. Half of a 1.6Ghz core is only 800Mhz of in-order execution, performance bye bye. I would much rather just have the full physical core using 1.6GHz instead. For what I do it would benefit me, but it doesn't mean it would be better for everyone.

It depends on what you need HT for or don't need it for.

OP, try to update your BIOS. If that doesn't work, you may be out of luck outside of a registry fix, which I wouldn't recommend.
 
I don't know how atom does hyperthreading but that doesn't sound right at all... it's definitely not right for the old single core P4's...

Other than certain benchmarks and a few isolated applications it's MUCH better to leave HT on just for the ability to thread the OS and background apps better.
 
Well, let me put it to you this way:

Running Win 7, connecting to a wifi signal. What happens is the wifi connection process within Windows does not utilize all of the logical processors (4 logical, 2 physical), it only utilizes 1 of the logical processors, in essence, 800MHz of one physical processor.

This is a huge handicap that I have yet to resolve, and this isn't the only process/app which does this.

Now other processes/apps do utilize more than one logical processor, which is fine, but this does not happen 100% of the time. If it did, I wouldn't have a problem with it.

Linux distros on the other hand will in fact utilize all logical/physical processors with almost every single process or app I throw at the CPU, so I know this is not an architecture or design limitation.
It is a Windows OS limitation of not being able to utilize all of the logical processors, even though it does indeed identify them all.

But for the most part, I just would prefer 2 physical processors, no logical (no HT) since the Atom is an in-order execution processor and is very slow.
 
Last edited:
Hyper-threading is just Intel's moniker for what has historically been known as a barrel processor. There are always advantages and disadvantages to this design.

There is no win-all for every situation when it comes to barrel processing. But at least Intel isn't charging and arm & a leg for what is essentially technology that had previously only been used in multi-million dollar supercomputers. It's when they start charging for N-threads per physical core as if they were physical ones that consumers should worry.

The fact they let you enable/disable it proves how loosely latched it is to the cpu's pipeline anyway.
 
Last edited:
Because on older processors and low-end processors like Atoms, it hampers performance horribly.

Windows isn't that optimized to run single-threaded apps across all logical processors.
I've seen this first hand, it's a pain in the ass.

When an process needs a single processor, and all it gets is a single logical processor, the performance is hampered, especially on my Atom dual-core. Half of a 1.6Ghz core is only 800Mhz of in-order execution, performance bye bye. I would much rather just have the full physical core using 1.6GHz instead. For what I do it would benefit me, but it doesn't mean it would be better for everyone.

It depends on what you need HT for or don't need it for.

OP, try to update your BIOS. If that doesn't work, you may be out of luck outside of a registry fix, which I wouldn't recommend.


Dude...you know nothing about HT ROFL...

If HT is enabled and you are using 100% of one logical core and 0% of the other logical core you are in essence using near close to 100% of the physical core.

HT is not a static partition that equally devides a cores computational resources in half, its a dynamic partition. It basically is designed to cram the physical core w/ as many instructions as possible to keep the pipelines as full as possible.

So, if you are using say 100% of one logical core and 50% of the other core... thats gonna be 100% of the physical core, not 75% of the physical core. Actually it may be a tad more than 100% of the physical core in relation to if HT was off...(hence the whole thought behind HT)

So, you are incorrect a atom, which has only half of the cores(logical) 100% under load, does not equal half its processing power, its still around 100% =)...
 
Dude, no, it doesn't. I can watch it on the CPU monitor app I use, only half of one physical processor is used, aka one logical processor, aka half of 1.6GHz, aka 800MHz.

Get over yourself and do some research.
 
One would need to define what 100% cpu usage is first to have some agreeable metric for what is 100% efficiency is. I say that because no CPU today uses all of its transistors every cycle. If they did, the cpu would go into meltdown (if a power blackout didn't occur first). The same can be said for pipeline stages. If you can keep the pipeline stages full (while staying within the power envelope), then that's a pretty good argument that your CPU design is efficient... at least at the most basic level.

To understand how HT works, you pretty much have to understand how CPU pipelining works, period.

With HT you are basically adding duplication of certain parts of the CPU's pipeline stages, but not the whole cpu itself, which in itself implies some resources eventually HAVE to be shared across the two threads (i.e. cache).

What HT does try to do is keep the CPU's pipeline stages always active and full. If you've got one thread stalled due to a no-op or "bubble" (usually because of a memory fetch or data dependency), then why wait around 4 more cycles when you could be issuing another set of intructions through the pipeline? Got data dependency with the current thread that in turn stalls the pipeline? Then how about a whole 'nother slew of intructions from a completely different thread?

For the classic single thread scenario, keeping the pipeline full is usually done at compile time or through a CPU's out-of-order execution unit. HT is basically doing the same thing, only at the thread level.

Sounds good, right? Not so fast there... Because eventually you run into memory latency issues (due to a cache hit/miss) where both threads end up stalled. THIS is pretty much why alot of academics (aka critics) claim that Intel is just hiding its memory latency through Hyperthreading, and that it's all a wash since they could have gotten the same performance gains by dedicating that silicon for other means.

Then there's the argument of "Why would I need to waste 16% more die space on a single physical core to solve a single threaded problem?"

It's all subjective. HT is very specific to the applications involved. Applications tuned for single threading would seem better off having the entire CPU dedicated to them than having to share resources with another thread. The problem is, the only way to test this is through trial and error. There's no sure fire way to determine if HT is helping or hurting other than to try it enabled and then disabled.

In the case of the Intel Atom, its pipeline is already crippled by lacking instruction reordering, speculative execution, and register renaming (all important features of Superscalar processor design). I'd rather have those features in a non-HT cpu than trying to make up for it via HT. Software, especially compilers, is still better at maximizing throughput via a single thread. And having 1/3rd or less the cache (in the case of Atom) than a desktop CPU just exacerbates the performance issue even more. The more threads you are working on, the more cache you want to pool from.

Despite this, the Intel Atom is still an amazing cpu for what it is.
 
No, HT splits the processor from one physical processor, into two logical processors.
A single-core 2GHz processor with HT (hyper threading, not hyper transport, just fyi) then splits it's resources into two.

Essentially, 2GHz physical processor divides into two 1GHz logical processors.

Because eventually you run into memory latency issues (due to a cache hit/miss) where both threads end up stalled. THIS is pretty much why alot of academics (aka critics) claim that Intel is just hiding its memory latency through Hyperthreading, and that it's all a wash since they could have gotten the same performance gains by dedicating that silicon for other means.
Memory latency issues, really? Are you really going there with this arguement?
I think you are still in 2004, this does not happen and hasn't happened since the Pentium 4 and Pentium D net-burst architecture was dropped all together.

You are correct, it happened, but on very, VERY old architectures, it doesn't happen any more. Not on the Core 1, Core 2, Core iX, or Atom processors.
Just fyi, on the Core iX series processors, the memory controller is built into the processor, how would there be any memory latency issues?


Guys, this is simple, watch a task and your system monitor, watch how the logical processors work.

I explained above exactly what happens to me in certain situations, fuck, I can sit and WATCH it happen, then I'm told it doesn't work that way... believe whatever you want to.

On older and weaker processors, there is a reason we want to disable HT.
On Core i7's it works great and I would always leave it on, but on Atom processors, for certain tasks, I want it off.


HT is not a static partition that equally devides a cores computational resources in half, its a dynamic partition. It basically is designed to cram the physical core w/ as many instructions as possible to keep the pipelines as full as possible.

Hate to say it, but, yeah, it does. It's done that since it was initialized on the Pentium 4 and works the exact same now, even on Atom processors. I'm watching it do this as we speak on my system monitor. I'm sorry, but your statement is full of BS.

Dude...you know nothing about HT ROFL...
Look, I'm not out to convince you of anything, but you are wrong and acting like a troll doesn't help any.

Even if you showed me proof, it would be the exact same as what I am physically seeing right now.

You're fighting a losing argument.
 
The fact they let you enable/disable it proves how loosely latched it is to the cpu's pipeline anyway.

No, they don't always let you enable or disable it. On Atom processors, you are stuck with it, period.
What were you saying about loosely latched?
 
No, HT splits the processor from one physical processor, into two logical processors.
A single-core 2GHz processor with HT (hyper threading, not hyper transport, just fyi) then splits it's resources into two.

Essentially, 2GHz physical processor divides into two 1GHz logical processors.

After speaking to my uncle who helped develop hyper-threading for Intel chips, he politely said that you have no idea what you are talking about and gave me a good link to give to you so that you could read and educate yourself on hyper-threading technology.

http://www.intel.com/technology/itj/2002/volume06issue01/vol6iss1_hyper_threading_technology.pdf
 
A single-core 2GHz processor with HT (hyper threading, not hyper transport, just fyi) then splits it's resources into two.

Essentially, 2GHz physical processor divides into two 1GHz logical processors.

lol wow

Wrong.
 
No, HT splits the processor from one physical processor, into two logical processors.

This is true; however, logical vs. physical is the argument since they are not the same thing, nor equal.

Essentially, 2GHz physical processor divides into two 1GHz logical processors.

Not true. If this were the case, then any stalled thread would in fact be wasting precious cpu cycles that could be used to do other things. What you're implying is a 2GHz Intel cpu with HT enabled is more inefficient than a 2GHz clocked Intel cpu with HT disabled. And I think Intel would argue you to the moon on that. Clock frequency and simultaneous threading are mutually exclusive topics. You need to read up on how HT and cpu pipelining works. Hyper-threading is two threads sharing the same cpu cycle(s). There is no alternating of cycles between each or some 50/50 time sharing going on. And there certainly is no division of frequency because of that sharing.

Memory latency issues, really? I think you are still in 2004, this does not happen and hasn't happened since the Pentium 4 and Pentium D netburst architecture was dropped all together.

Despite all the improvements in clock frequency and instruction parallelism of microprocessor design in the last 10 years, memory (yes, cache is still considered memory) hasn't kept up with those same improvements. Moore's law for CPUs does not directly apply to memory, not even close. On Sandy Bridge, it still takes 3 cycles (according to Intel) to access L1 cache, 8 cycles for L2, and 26-31 cycles for L3. That's just reads. Writes take even longer (due to cache coherency restraints). Adding more cache doesn't solve the basic issue of latency: "How many cycles does the cpu have to wait before it can retrieve the memory value? How many levels of cache do I have to go through before I get the proper value?"

Just fyi, on the Core iX series processors, the memory controller is built into the processor, how would there be any memory latency issues?

Intel moving to an internal controller for external memory does nothing to improve the CPU's cache latency. It only assisted that worst case scenario of having to access external memory. And dear god, external memory is so god awful slow. You NEVER want to have to access it unless you absolutely have no choice. We're talking about a 1000s of cpu cycles vs 30'ish here. That's an eternity as far as a typical cpu instruction is concerned. Intel increasing L3 cache size pretty much made moving the memory controller on-chip pretty moot. Until you start filling up (and thrashing) L3 do you even have to worry anymore about what kind of memory controller is being used. And until Intel runs out of room (or the wires get too long) for on-die cache will the memory controller ever come back into serious play again.

You're fighting a losing argument.

While I'm late in joining this discussion, you seem to be throwing out alot of biased opinion based on empirical evidence. Not that experimentation is a bad thing, but you come across as being an ass by claiming your results as undeniable fact.
 
Hate to say it, but, yeah, it does. It's done that since it was initialized on the Pentium 4 and works the exact same now, even on Atom processors. I'm watching it do this as we speak on my system monitor. I'm sorry, but your statement is full of BS.
.

Your system monitor shows half utilization because it treats each logical processor as a full core. It expects that two fully-loaded cores = %100 utilization, and one full-loaded core = %50 utilization.

You will never fully-load more than one of the cores because there are not enough processor resources to keep both logical cores maxed. You can, however, get bursts of time when a second thread can use idle units in the core, and so you can exceed the %50 barrier a bit. But overall, expect "full" core utilization reported by Windows to be around %50.

You are still using all 1.6 GHz toward processing a single thread.
 
I disabled HT and guess what. Makes no damn difference at all in games. I'd rather have what I paid for turned on rather than off. Anyways I use HT all the time doing conversions and stuff plus I have a few games that I play that use all 8 threads in some form or fashion but still makes no difference in games. The 2600K is just a damn fast chip with or with out HT on.
 
I disabled HT and guess what. Makes no damn difference at all in games. I'd rather have what I paid for turned on rather than off. Anyways I use HT all the time doing conversions and stuff plus I have a few games that I play that use all 8 threads in some form or fashion but still makes no difference in games. The 2600K is just a damn fast chip with or with out HT on.

You didn't read my post above, I suggest you do so. :rolleyes:
 
Your system monitor shows half utilization because it treats each logical processor as a full core. It expects that two fully-loaded cores = %100 utilization, and one full-loaded core = %50 utilization.

You will never fully-load more than one of the cores because there are not enough processor resources to keep both logical cores maxed. You can, however, get bursts of time when a second thread can use idle units in the core, and so you can exceed the %50 barrier a bit. But overall, expect "full" core utilization reported by Windows to be around %50.

You are still using all 1.6 GHz toward processing a single thread.

This makes sense to me, but under the system monitor, it shows all 4 logical processors at full load, which is both physical processors maxed.

Many times, an app or service on my system will show that it is running on only one logical processor, aka half of the physical processor.

If what you say is true, then it should show two logical processors (one physical processor) being utilized, but it doesn't do this, ever.


I get what you guys are saying and at this point I'm not saying you are wrong, but why does this happen then on my system? What I'm seeing on my system is the complete opposite to what you all are saying, that's why it is making it hard for me to believe.
 
Why should he read your uninformed nonsense when it's been proved several times over that you have no concept of how HT actually affects the CPU...
 
This makes sense to me, but under the system monitor, it shows all 4 logical processors at full load, which is both physical processors maxed.

Many times, an app or service on my system will show that it is running on only one logical processor, aka half of the physical processor.

If what you say is true, then it should show two logical processors (one physical processor) being utilized, but it doesn't do this, ever.


I get what you guys are saying and at this point I'm not saying you are wrong, but why does this happen then on my system? What I'm seeing on my system is the complete opposite to what you all are saying, that's why it is making it hard for me to believe.

Maybe you're seeing activity on the other cores (logical or physical) because more than JUST your app is running on the machine. Moreover, you're going to see SOME processing overhead on the primary core (logical or physical) in an SMP/HT setup for flow control anyhow.
 
Back
Top