我如何测试 ubuntu 是否激活了超线程?

我如何测试 ubuntu 是否激活了超线程?

我感觉我的电脑上没有激活超线程。我查看了一下/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 中的设置。

相关内容