我遇到了一个奇怪的情况。我有两台硬件相同的电脑,都是 Core i5,型号完全相同。唯一的区别是操作系统,一台是 12.04 32 位,另一台是 12.04 64 位。
问题是超线程仅在 32 位操作系统上启用,而在 64 位操作系统上未启用。你能告诉我为什么吗?我该如何启用它?
我查看了 BIOS,发现两者具有完全相同的设置,超线程均在 BIOS 中启用,但未在 OS 中启用。
2 个逻辑处理器:
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 个逻辑处理器:
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
答案1
确保不要使用 进行引导,acpi=off
因为这会禁用超线程。您可以使用 进行引导acpi=ht
,它与 类似acpi=off
,但仅启用 acpi 使用超线程所需的部分。
答案2
答案3
当您需要知道超线程是否启用而不需要重新启动系统(并查阅 BIOS)时,您只需查看输出cat /proc/cpuinfo
并将其与 CPU 核心字段进行比较。
尽管cat /proc/cpuinfo
显示了系统中的所有逻辑 CPU(处理器字段),但同级字段保存的是此条目所属的物理 CPU 的逻辑 CPU 数量(包括核心和超线程 LCPU)。
换句话说,如果你看到:
processor : 8
physical id : 9
siblings : 4
cpu cores : 2
这意味着 LCPU #8(系统中的第 8 个逻辑 CPU)是具有 2 个内核的物理 CPU 上的 4 个逻辑 CPU 之一。因此,超线程已启用。
如果 CPU 核心数与兄弟核数相同,则超线程被禁用。