Ubuntu – Hyperthreading on 32-bit but not on 64-bit

cpu

I have a strange situation. I have two computers with identical hardware, both Core i5, exactly the same model. The only difference is the OS, one has 12.04 32-bit and the other one has 12.04 64-bit.

The problem is that hyperthreading is only enabled on the 32-bit OS and not on the 64-bit OS. Can you tell me why, and how I can enable it?

I looked in the BIOS and both have exactly the same settings, both hyperthreading enabled in BIOS but not in the OS.

2 logical processors:

 Architecture:          x86_64  
CPU op-mode(s):        32-bit, 64-bit  
Byte Order:            Little Endian  
CPU(s):                2  
On-line CPU(s) list:   0,1  
Thread(s) per core:    1  
Core(s) per socket:    2  
Socket(s):             1  
NUMA node(s):          1  
Vendor ID:             GenuineIntel  
CPU family:            6  
Model:                 42  
Stepping:              7  
CPU MHz:               2294.665  
BogoMIPS:              4589.73  
Virtualization:        VT-x  
L1d cache:             32K   
L1i cache:             32K  
L2 cache:              256K  
L3 cache:              3072K  
NUMA node0 CPU(s):     0,1 

4 logical processors:

Architecture:          i686  
CPU op-mode(s):        32-bit, 64-bit  
Byte Order:            Little Endian  
CPU(s):                4  
On-line CPU(s) list:   0-3  
Thread(s) per core:    2  
Core(s) per socket:    2  
Socket(s):             1  
Vendor ID:             GenuineIntel  
CPU family:            6  
Model:                 42  
Stepping:              7  
CPU MHz:               800.000  
BogoMIPS:              4589.36  
Virtualization:        VT-x  
L1d cache:             32K  
L1i cache:             32K  
L2 cache:              256K  
L3 cache:              3072K  

Best Answer

Make sure you don't boot with acpi=off as this disables hyperthreading. You can boot with acpi=ht, which is just like acpi=off, but enables just the required parts of acpi to use hyperthreading.

Related Question