|Q: - "From what I have heard, hyperthreading can only yield about 15-20% more work than a non-hyperthreading machine. So when I look at it as say 120%, if the dual core Intels have hyperthreading capabilities, does that mean that you will yield in terms of work rendered, 240%?"|
A: - Theoretically you can say YES but practically am gonna have to say NO! too.
"There are some performance arguments on computers that have multiple CPU's with HTT enabled. The claim is that depending on the operating system for example Windows 2000, NT which are already multiprocessing aware but not HTT aware. For these OS the machine will only see two processors per physical CPUs.
Since the scheduler doesn't realize the connection between the virtual CPUs, it can end up doing a worse job than if you had never enabled hyperthreading to begin with.
Now consider a dual-hyperthreaded-processor machine. There are two physical processors A and B, each with two virtual hyperthreaded processors, call them A1, A2, B1, and B2. Multiprocessing on a single CPU.
Suppose you have two CPU-intensive tasks. As far as the Windows NT and Windows 2000 schedulers are concerned, all four processors are equivalent, so it figures it doesn't matter which two it uses. And if you're unlucky, it'll pick A1 and A2, forcing one physical processor to shoulder two heavy loads (with each probably run at something between half-speed and three-quarter speed), leaving physical processor B idle; completely unaware that it could have done a better job by putting one on A1 and the other on B1.
In case HTT won’t help, it will actually slow the computer down. Windows XP and Windows Server 2003 are hyperthreading-aware. When faced with the above scenario, those schedulers will
know that it is better to put one task on one of the A's and the other on one of the B's.
Another discussion on HTT deals with the Cache Memory and in this case, the problem will be there even if the operating system is hyperthreading aware. In the following example, HTT ends up a net loss.
(For example, if you have four tasks, two of which rely heavily on L2 cache and two of which don't, you'd be better off putting each of the L2-intensive tasks on separate processors, since the L2 cache is shared by the two virtual processors. Putting them both on the same CPU would result in a lot of L2-cache misses as the two tasks fight over L2 cache slots.)"
See study on HTT for more.
B4 you criticize a bigger man, walk a mile in his shoes. That way, you're a mile away, and you have his shoes.