Hyperthreading (HT) works by utilizing otherwise unused execution units that become available due to events as cache misses and branch mis-predictions. The key thing to take away from that is "misses" and "mis-predictions."
Because HT takes advantage of unknown variables, it is hard to take advantage of HT.
Alessandro Perilli, virtualization evangelist and SearchServerVirtualization.com columnist has a lot to say about HT. Here's what he has to say about the misinformation about HT:
"Nobody (vendors, engineers, developers) ever wanted to publicly take a neat position about Intel HT value and real capabilities. I tried several times to access most valuable sources of informations to discover the truth but the real thing is: nobody has a real idea of how HT impacts on application performances. Depending on application internal architecture HT execution of threads can be a benefit or a real pain."
Alessandro is correct about the ambivalent benefits that come with HT. Basically, if your application or your underlying operating system causes these scenarios and can then take advantage of them, then HT is a plus. However, the flip side of the coin is that your application or your underlying operating system could cause these scenarios, and then your application could be negatively impacted by them.
The other real downside to HT is the possibility of what I call instruction lumping. This is when you have multi-processor HT-enabled systems and all of the processor instructions get "lumped" onto a single physical processor. This can occur when the operating system's processor scheduler places too many instructions on what it sees as physical processors when in fact it placed the instructions on a single physical processor that has HT enabled. This can lead to overall system slowdown.
Perilli has more to say about the lack of documentation on HT: "You will easily discover since the born of HT there isn't a single whitepaper (from Intel or 3rd parties) about performance improvements. Another surprising thing is nobody seems to care about discovering if it works or not, and when is better to use it."
After one year of testing both Microsoft and VMware, Perilli found that HT doesn't help virtual infrastructure performances. These vendors' latest products acquired the capability to cohabit with it. So, Perilli said: "you don't have to turn it off." However, he suggests that you do.
I am not able to find any conclusive evidence to suggest that VMware ESX behaves better with or without HT. I do know, however, that ESX 2.5x and greater are very much aware of the fact that HT is enabled and distinguishes between physical and logical processors, saving ESX from the trap of instruction lumping.
In his real-world experience, Perilli has found that HT doesn't help at all when using VMware. He notes that performance isn't improved in a virtualization scenario that's HT-enabled, and computing capability in that scenario can become unpredictable, depending on how the applications are written and how many are running. Once again, he advises switching HT off.
Perilli predicts that, within a year or so, Intel will fade out HT as soon as multicore processors become the standard. Alessandro is absolutely right. Already, HT is not included in the latest of Intel's Merom, Conroe and Woodcrest processors. I know this seems outrageous, given the dominance HT has enjoyed in Intel's recent ad campaigns, but the data sheets on the Core2 line of processors do not mention the two-letter acronym at all.
This was first published in August 2006