GNU/Linux >> Tutoriels Linux >  >> Linux

Vérifier si HyperThreading est activé ou non ?

J'ai toujours utilisé ce qui suit et regardé 'Thread(s) per core:'.

hostname:~ # lscpu
Architecture:          x86_64
CPU(s):                24
Thread(s) per core:    2                <-- here
Core(s) per socket:    6
CPU socket(s):         2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 44
Stepping:              2
CPU MHz:               1596.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              12288K

Notez cependant que cette technique échouera si un processeur logique a été désactivé avec un simple

echo 0 > /sys/devices/system/cpu/cpuX/online

Notes ajoutées le 8 juillet 2014 : Comme l'a souligné Riccardo Murri, ma réponse ci-dessous indique uniquement si le processeur déclare prendre en charge l'hyperthreading. Généralement, *nix O/S sont configurés pour activer l'hyperthreading s'il est pris en charge. Cependant, pour vérifier cela par programmation, voir par exemple la réponse de Nils !

---- Réponse originale du 25 mars 2012 :

Vous êtes en effet sur la bonne voie :) avec

dmidecode -t processor | grep HTT

Sous Linux, je cherche généralement juste "ht" sur la ligne "flags" de /proc/cpuinfo . Voir par exemple

grep '^flags\b' /proc/cpuinfo | tail -1

ou si vous souhaitez inclure le "ht" dans le motif

grep -o '^flags\b.*: .*\bht\b' /proc/cpuinfo | tail -1

(\b correspond aux limites du mot et permet d'éviter les faux positifs dans les cas où "ht" fait partie d'un autre indicateur.)


Si le nombre de processeurs logiques est le double du nombre de cœurs, vous avez HT. Utilisez le script suivant pour décoder /proc/cpuinfo :

#!/bin/sh
CPUFILE=/proc/cpuinfo
test -f $CPUFILE || exit 1
NUMPHY=`grep "physical id" $CPUFILE | sort -u | wc -l`
NUMLOG=`grep "processor" $CPUFILE | wc -l`
if [ $NUMPHY -eq 1 ]
  then
    echo This system has one physical CPU,
  else
    echo This system has $NUMPHY physical CPUs,
fi
if [ $NUMLOG -gt 1 ]
  then
    echo and $NUMLOG logical CPUs.
    NUMCORE=`grep "core id" $CPUFILE | sort -u | wc -l`
    if [ $NUMCORE -gt 1 ]
      then
        echo For every physical CPU there are $NUMCORE cores.
    fi
  else
    echo and one logical CPU.
fi
echo -n The CPU is a `grep "model name" $CPUFILE | sort -u | cut -d : -f 2-`
echo " with`grep "cache size" $CPUFILE | sort -u | cut -d : -f 2-` cache"

Linux
  1. id :commande introuvable

  2. w :commande introuvable

  3. df :commande introuvable

  4. du :commande introuvable

  5. rm :commande introuvable

Utilisation élevée du processeur - Installation de SQL non terminée

ln :commande introuvable

Le processeur de l'hôte n'adapte pas la fréquence lorsque l'invité KVM en a besoin

Comment vérifier si le noyau Linux est activé ou non avec Retpoline ?

Pourquoi certains modèles de processeurs Intel famille 6 (Core 2, Pentium M) ne sont-ils pas pris en charge par intel_idle ?

Pare-feu - Enregistrement des paquets refusés activé - pas d'enregistrement