ok, i did a little experiment the other day running a program called super pi... i was surprised to see that it performed better with ht disabled than enabled. another thing i noticed was that when ht was enabled my cpu claimed to be running at only 50%, ie super pi was only using one logical cpu, even though it shouldnt be restricted to doing this.
i also noticed games tend to do the same thing, ie only use 50% cpu. so is this simply the cpu monitor misrepresenting whats really happening, or am i actually losing performance here, and if so how do i fix it and get programs to use both logical processors??
It doesn't matter, if the program is not multithreaded, it will not use HT. In which case, the processor will simply give its resources all to one thread instead of sharing between two. That's the beauty of SMT vs MP, you get all (well, most) of the processor's resources whether in single threaded or multithreaded environments.
"We are Microsoft, resistance is futile." - Bill Gates, 2015.
The 50% figure you are getting is misleading, it just means that one logical cpu isnt doing anything (because neither superpi or your game is multithreaded). To get it to 100%, launch two instances of superpi.
It shouldnt negatively impact performance much if anything though, there are only very few instances where enabling HT decreases performance significantly. But if you are worried about this, benchmarking is the only way to tell, looking at performance monitor won't tell you a thing.
= The views stated herein are my personal views, and not necessarily the views of my wife. =
I suppose you run Windows XP, right? If so, press CTRL-ALT-DEL, and, in the Task Manager Window, select Performance Tab. Look for threads. launch any program and you will see thenumber next to it increase. If it increases with more then 1, the application you just launched is suited for HT, or dual CPU systems. How much that number increases the number of threads the application runs.
What performance monitor displays is really a gross misrepresentation of what's happening with a hyperthreaded CPU. Think of hyperthreading like a store checkout - imagine two queues of customers (program threads) feeding into one cashier (CPU execution unit). What performance monitor shows is how the two queues are moving - not how much work the cashier (execution unit) is doing. The CPU's execution units (shared by both logical CPU's) may be running at 100%, but performance monitor may still show 50% overall.
If you really want to see what hyperthreading can do - run superpi (or some CPU intensive program that doesn't run at idle priority) while you do some gaming. Try that with and without hyperthreading, and let us know if you can tell a difference.
Or as others have said, try running two copies of superpi concurrently.