comment puis-je tester si ubuntu a activé l'hyperthreading?

13

J'ai l'impression que l'hyperthreading n'est pas activé sur mon PC. J'ai jeté un coup d'œil /proc/cpuinfoet il est décrit que les frères et sœurs ont le même nombre que les cœurs de processeur. Cela signifie que l'hyperthreading n'est pas activé. Comment puis-je l'activer?

Entrées partielles 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
la source

Réponses:

15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list montre la disposition des cœurs et des hyperthreads. Pour faciliter la visualisation, je recommande d'utiliser la commande lstopo, installez avec:

sudo apt-get install hwloc

et courir avec:

lstopo

Mon bureau ivybridge dispose de 4 processeurs; chacun a un hyperthread, donc nous obtenons un diagramme avec les noyaux P # 0..3 et chacun a deux PU (l'un d'eux étant l'hyperthread):

entrez la description de l'image ici

Si vous voulez juste une version texte de cette sortie, utilisez:

lstopo -
Colin Ian King
la source
Je ne sais pas pourquoi personne n'a encore voté pour ceci ... C'est un très bon utilitaire.
Huck Bennett
c'est super cool. vous voyez le cache total, les cœurs, les hyperthreads tout en 1 image
Silver Moon
9

Exécutez topdans un terminal, appuyez sur le numéro 1de votre clavier pour afficher la charge par processeur dans l'en-tête, combien de processeurs y sont décrits?

S'ils sont le double des cœurs réels dans votre hyperthreading CPU fonctionne comme il se doit.

Bruno Pereira
la source
7

Pour détecter si vous utilisez l'hyperthreading (alias Intel Hyperthreading Technology), vous pouvez utiliser dmidecode .

Dans un terminal:

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

Recherchez une valeur de statut Rempli, activé (indiqué ci-dessous entre * ... *), c'est-à-dire que "Activé" signifie que l'hyperthreading est actif.

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

Dans une CPU logique hyperthreadée, vous verrez une valeur d'état de non peuplé (indiquée ci-dessous 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

la source

liberté de fossé
la source
Le noyau Linux détermine le nombre de CPU et de frères et sœurs à partir du CPU (en utilisant l'énumération de la topologie CPUID) plutôt qu'en utilisant les données DMI configurées par le BIOS. Je soupçonne que les données DMI sont configurées au démarrage à partir des mêmes données CPUID que le noyau utilise, cependant, il est probablement préférable de faire confiance à ce que le noyau Linux a déterminé plutôt qu'à partir des données DMI. En l'occurrence, dans la majorité des cas, le BIOS a probablement raison.
Colin Ian King
La sortie dmicode ne change pas si l'hyperthreading est désactivé - cela indique simplement si le CPU prend en charge l'hyperthreading. Par exemple, sur un système CPU i7-6600U avec hyperthreading désactivé, l' dmidecode | grep -i populaimpression s'imprime également Status: Populated, Enabled. Voir aussi ma réponse .
maxschlepzig
2

dans le résultat de dmidecode, vous pouvez obtenir quelque chose comme

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

sur les serveurs avec hyper thread défini sur ON

ou

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

sur ceux réglés sur OFF

user56344
la source
Ça ne marche pas. Le Thread Countne change pas si l'hyperthreading est désactivé, par exemple sur un système i7-6600U avec des dmidecode | grep '\(Core\|Thread\).*:'impressions désactivées par hyperthreading Core Count: 2 Core Enabled: 2 Thread Count: 4.
maxschlepzig
0

Spoiler: votre CPU ne prend pas en charge l'hyperthreading .

Une alternative à la consultation de la base de données du fournisseur de CPU est de vérifier /proc/cpuinfol' htindicateur:

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

Même si l'hyperthreading est désactivé dans le BIOS, l'indicateur doit être inclus dans cette sortie.

Pour vérifier si l'hyperthreading est réellement activé, vous pouvez consulter un autre pseudo-fichier :

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

Les valeurs possibles sont: on|off|forceoff|notsupported|notimplemented

Vous pouvez activer / désactiver l'hyperthreading en écrivant on/ offdans ce pseudo fichier, par exemple:

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

Bien sûr, cela ne fonctionne pas si celui catprécédemment imprimé forceoff|notsupported|notimplemented.

L'hyperthreading est généralement activé par défaut. Et s'il est désactivé, cela se fait généralement dans le BIOS. S'il est désactivé dans le BIOS, ce pseudo-fichier contient probablement forceoffet que vous devez modifier le paramètre dans le BIOS.

maxschlepzig
la source