我有一台 Centos 7.3 服务器,运行双插槽四核 Intel Xeon CPU E5620 @ 2.40GHz。我想在这台服务器上使用超线程,但似乎已被禁用。
该芯片的规格表表明它应该支持超线程:
英特尔® 超线程技术 ‡ 是
CPU 标志也表示相同的意思:
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
该机器当前正在运行一个 SMP 内核(我认为),其名称如下:
Linux PR-ORACLE01.prvln.local 3.8.13-118.14.1.el7uek.x86_64 #2 SMP
我不认为超线程已启用的原因是 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
我的理解是我应该看到每个核心有两个线程而不是仅仅一个线程。
我仔细搜索了一下,唯一能找到的建议是确保我有一个 smp 内核在运行(我认为这是现在的默认行为,但根据上面的名称,我的内核有它),或者尝试acpi=ht
在启动时通过 grub 传递给内核。(没有帮助,但 acpi 已经启用,所以我真的不指望这能起到什么作用)
此页在此:https://www.golinuxhub.com/2018/01/how-to-disable-or-enable-hyper.html 表示你应该能够通过回显 0 或 1 来打开/关闭它
/sys/devices/system/cpu/cpu${i}/online;
(其中 $i 是所讨论的 CPU)
我的机器上不存在此文件,但有一个 /sys/devices/system/cpu/online 文件,其中包含
0-3
据我所知,此功能已在 BIOS 中启用(或至少多处理器规范设置为 1.4)
Multiprocessor Specification: [1.4]
https://i.stack.imgur.com/61Yv7.png <- 个人简介截图
https://i.stack.imgur.com/HClGG.png <-- 高级芯片组控制的屏幕截图
Advanced Chipset Control
Enable memory gap: [Disabled]
ECC Config: [Disabled]
SERR signal condition [Multiple bit]
我是否误解了 lspcu 的输出?或者我是否需要执行其他操作才能启用此功能?
谢谢