I have a Centos 7.3 server running a dual socket quad core Intel Xeon CPU E5620 @ 2.40GHz. I would like to use hyperthreading on this server but it seems it has been disabled.
The spec sheet for this chip indicates it should support hyperthreading:
Intel® Hyper-Threading Technology ‡ Yes
And the CPU flags indicate the same:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss **ht** syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopolog tsc_reliable nonstop_tsc aperfmperf pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt hypervisor lahf_lm ida arat dtherm
The machine currently has an SMP kernel running (i think) based on the name:
Linux PR-ORACLE01.prvln.local 3.8.13-118.14.1.el7uek.x86_64 #2 SMP
The reason I don't think that hyperthreading is enabled is the output from lscpu:
lscpu Architecture: x86_64 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: 1 Core(s) per socket: 2 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 26 Model name: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes 1 0 0 1 0:0:0:0 yes 2 0 1 2 1:1:1:1 yes 3 0 1 3 1:1:1:1 yes
My understanding is that I should be seeing two threads per core instead of just the single thread.
I've had a good hunt around and the only suggestions I could find where to make sure I had an smp kernel running (I think this is the default behaviour now, but based on the name above, my kernel has it), or to try and pass
acpi=ht to the kernel via grub at boot. (Didn't help, but acpi was already enabled so I wasn't really expecting this to do much)
This page here: https://www.golinuxhub.com/2018/01/how-to-disable-or-enable-hyper.html indicates that you should be able to turn it on/off by echoing 0 or 1 into
(where $i is the cpu in question)
This file does not exist on my machine, but there is a /sys/devices/system/cpu/online file that just contains
As far as I can tell, this is enabled in the BIOS (or at least Multiprocessor Specification is set to 1.4)
Multiprocessor Specification: [1.4]
https://i.imgur.com/oylFALZ.png <- screenshot of bios
https://i.imgur.com/W8lo9od.png <-- screen shot of Advanced Chipset Control
Advanced Chipset Control Enable memory gap: [Disabled] ECC Config: [Disabled] SERR signal condition [Multiple bit]
Am I mis-interpreting the lspcu output? Or is there something else I need to do to enable this?