¿Cómo puedo probar si ubuntu activó hyperthreading?

13

Tengo la sensación de que hyperthreading no está activado en mi PC. Eché un vistazo /proc/cpuinfoy se describe que los hermanos tienen el mismo número que los núcleos de la CPU. Esto significa que hyperthreading no está activado. ¿Cómo puedo activarlo?

Entradas parciales de /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
grenzfrequence
fuente

Respuestas:

15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list muestra el diseño de núcleos e hyperthreads. Para facilitar la visualización, recomiendo usar el comando lstopo, instalar con:

sudo apt-get install hwloc

y correr con:

lstopo

Mi escritorio ivybridge tiene 4 CPU; cada uno tiene un hyperthread, por lo que obtenemos un diagrama con los núcleos P # 0..3 y cada uno tiene dos PU (uno de los cuales es el hyperthread):

ingrese la descripción de la imagen aquí

Si solo desea una versión de texto de esta salida, use:

lstopo -
Colin Ian King
fuente
No estoy seguro de por qué nadie ha votado sobre esto todavía ... Esta es una utilidad realmente agradable.
Huck Bennett
Esto es súper genial. ves el caché total, los núcleos, los hilos de imagen todo en 1 imagen
Silver Moon
9

Ejecutar topen una terminal, presione el número 1en su teclado para mostrar la carga por CPU en el encabezado, ¿cuántos CPU se describen allí?

Si son el doble de núcleos reales en su CPU, hyperthreading está funcionando como debería.

Bruno Pereira
fuente
7

Para detectar si está utilizando hyperthreading (también conocido como Tecnología Intel Hyperthreading) puede usar dmidecode .

En una terminal:

sudo dmidecode > /tmp/dmidecode.txt
gksudo gedit /tmp/dmidecode.txt

Busque un valor de estado de poblado, habilitado (se muestra a continuación entre * ... *), es decir, "habilitado" significa que hyperthreading está activo

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

En una CPU lógica Hyperthreaded, verá un valor de estado de despoblado (que se muestra a continuación entre * ... *):

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

fuente

fossfreedom
fuente
El kernel de Linux determina la cantidad de CPU y hermanos de la CPU (usando la enumeración de topología CPUID) en lugar de usar los datos DMI configurados por el BIOS. Sospecho que los datos DMI se configuran en el momento del arranque a partir de los mismos datos CPUID que usa el kernel, sin embargo, probablemente sea mejor confiar en lo que el kernel de Linux ha determinado en lugar de los datos DMI. En la mayoría de los casos, el BIOS probablemente lo hace bien.
Colin Ian King
La salida dmicode no cambia si hyperthreading está deshabilitado; solo indica si la CPU admite hyperthreading. Por ejemplo, en un sistema de CPU i7-6600U con hyperthreading deshabilitado dmidecode | grep -i populatambién se imprime Status: Populated, Enabled. Ver también mi respuesta .
maxschlepzig
2

en el resultado de dmidecode, puede obtener algo como

    Core Count: 6
    Core Enabled: 6
    Thread Count: 12

en servidores con hyper thread establecido en ON

o

    Core Count: 6
    Core Enabled: 6
    Thread Count: 6

en aquellos configurados en OFF

usuario56344
fuente
Esto no funciona El Thread Countno cambia si hyperthreading está desactivado, por ejemplo, en un sistema i7-6600U con hyperthreading discapacitados dmidecode | grep '\(Core\|Thread\).*:'impresiones Core Count: 2 Core Enabled: 2 Thread Count: 4.
maxschlepzig
0

Spoiler: tu CPU no admite hyperthreading .

Una alternativa a consultar la base de datos del proveedor de CPU es verificar /proc/cpuinfola htmarca:

$ grep -o '\<ht\>' /proc/cpuinfo

Incluso si hyperthreading está deshabilitado en el BIOS, el indicador debe incluirse en esa salida.

Para verificar si hyperthreading está realmente habilitado, puede consultar otro pseudo archivo :

$ cat /sys/devices/system/cpu/smt/control

Los valores posibles son: on|off|forceoff|notsupported|notimplemented

Puede habilitar / deshabilitar hyperthreading escribiendo on/ offen ese pseudo archivo, por ejemplo:

# echo off > /sys/devices/system/cpu/smt/control

Por supuesto, esto no funciona si el catimpreso anteriormente forceoff|notsupported|notimplemented.

Por lo general, hyperthreading está habilitado, de forma predeterminada. Y si está deshabilitado, generalmente se hace en el BIOS. Si está deshabilitado en el BIOS, es probable que el pseudo archivo contenga forceoffy debe cambiar la configuración en el BIOS.

maxschlepzig
fuente