我感觉我的电脑上没有激活超线程。我查看了一下/proc/cpuinfo
,发现其中描述称兄弟的数量与 CPU 核心数相同。这意味着超线程未激活。我该如何激活它?
部分条目/proc/cpuinfo
:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
stepping : 6
cpu MHz : 2997.000
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
答案1
/sys/bus/cpu/devices/cpu*/topology/thread_siblings_list 显示核心和超线程的布局。为了更容易直观地查看,我建议使用 lstopo 命令,使用以下命令安装:
sudo apt-get install hwloc
并运行:
lstopo
我的 ivybridge 台式机有 4 个 CPU;每个都有一个超线程,因此我们得到一个带有核心 P#0..3 的图表,每个核心都有两个 PU(其中一个是超线程):
如果您只想要此输出的文本版本,请使用:
lstopo -
答案2
top
在终端中运行,按下1
键盘上的数字来显示标题中每个 CPU 的负载,那里描述了多少个 CPU?
如果它们是 CPU 中实际核心的两倍,则超线程可以正常工作。
答案3
要检测您是否正在使用超线程(又名英特尔超线程技术),您可以使用解码。
在终端中:
sudo dmidecode > /tmp/dmidecode.txt
gksudo gedit /tmp/dmidecode.txt
查找状态值已填充,已启用(如下图*...*之间所示)即“Enabled”表示超线程处于活动状态
Physical CPU
Handle 0x000C, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 1 CPU 1
Type: Central Processor
Family: Xeon
Manufacturer: GenuineIntel
ID: 43 0F 00 00 01 03 00 00
Signature: Type 0, Family 15, Model 4, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
Version: Intel Xeon
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Populated, Enabled*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0004
L2 Cache Handle: 0x0005
L3 Cache Handle: Not Provided
在超线程逻辑 CPU 中,您将看到状态值为无人居住(如下所示*...*之间):
Handle 0x000D, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 2 CPU 2
Type: Unknown
Family: Unknown
Manufacturer: Not Specified
ID: 00 00 00 00 00 00 00 00
Version: Not Specified
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Unpopulated*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0006
L2 Cache Handle: 0x0007
L3 Cache Handle: Not Provided
答案4
剧透:你的 CPU不支持超线程。
除了查阅 CPU 供应商的数据库之外,还有一种替代方法是检查/proc/cpuinfo
以下ht
标志:
$ grep -o '\<ht\>' /proc/cpuinfo
即使在 BIOS 中禁用超线程,该标志也应包含在该输出中。
要检查超线程是否实际启用,您可以查阅另一个伪文件:
$ cat /sys/devices/system/cpu/smt/control
可能的值包括:on|off|forceoff|notsupported|notimplemented
您可以通过将on
/写入off
该伪文件来启用/禁用超线程,例如:
# echo off > /sys/devices/system/cpu/smt/control
cat
当然,如果先前打印了一个,那么这不起作用forceoff|notsupported|notimplemented
。
通常情况下,超线程默认启用。如果禁用,通常是在 BIOS 中禁用。如果在 BIOS 中禁用,则伪文件可能包含该信息forceoff
,您必须更改 BIOS 中的设置。