Hyperthreading in 6.x ... still frowned upon?

Vinny Abello vinny at tellurian.com
Wed May 3 17:36:01 UTC 2006

At 11:36 AM 5/3/2006, Chuck Swiger wrote:
>Marc G. Fournier wrote:
>>In 4.x, it was a 'shut it off' sort of deal .. my new amd64 don't 
>>appear to have it enabled, but my older i386 server that I just 
>>upgraded to 6.x does:
>>user     pid %cpu %mem   vsz   rss   tt state start        time command
>>root      14 104.0  0.0     0     8  ??  RL    11:38AM   0:55.02 [idle: cpu0]
>>root      11 99.1  0.0     0     8  ??  RL    11:38AM   0:00.00 [idle: cpu3]
>>root      13 99.1  0.0     0     8  ??  RL    11:38AM   0:00.00 [idle: cpu1]
>>root      12 98.0  0.0     0     8  ??  RL    11:38AM   0:54.54 [idle: cpu2]
>>Is it still something that I should disable, and, if so, how in 6.x?
>You should test it for the workloads you have, but most of the time, 
>HT isn't especially helpful.  AMD64 CPUs come in dual-core format 
>rather than HT-enabled.  If you've seen "HT" or "HTT" applied to an 
>AMD system, it's likely an abbreviation for "HyperTransport" or 
>"HyperTransport Technology".

An Intel technical rep that gave a presentation on upcoming Intel VT 
technology in processors (Virtualization Technology) that I attended 
indicated that Hyperthreading was really designed to start getting 
programmers to program threading into their applications in 
preparation of dual core processors that we now have. Hyperthreading 
will likely be removed in future processors now that dual core 
technology is standard. In some instances it created a slight 
performance boost.

Hyperthreading is known to hurt performance under high loads because 
it diminishes the amount of cache available for each thread. Many 
times, having no Hyperthreading but more CPU cache available 
increases performance under high loads.

I typically disable Hyperthreading on all my servers as they are dual 
processor or dual core/dual processor or better anyway. I tend to get 
better results (with my applications) without Hyperthreading. I've 
been experimenting with leaving it on with my workstation as it's not 
a dual core or dual processor.

The reason hyperthreading frowned upon in multiuser scenarios of 
FreeBSD is due to a vulnerability found in Hyperthreading:


Hyperthreading needs to be disabled in the BIOS. Often is referred to 
as a "Virtual Processor" in the BIOS.

Vinny Abello
Network Engineer
Server Management
vinny at tellurian.com
(973)300-9211 x 125
(973)940-6125 (Direct)
PGP Key Fingerprint: 3BC5 9A48 FC78 03D3 82E0  E935 5325 FBCB 0100 977A

Tellurian Networks - The Ultimate Internet Connection
http://www.tellurian.com (888)TELLURIAN

"Courage is resistance to fear, mastery of fear - not absence of 
fear" -- Mark Twain

More information about the freebsd-stable mailing list