Ho sempre usato quanto segue e ho guardato '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
Nota, tuttavia, questa tecnica fallirà se qualsiasi processore logico è stato disattivato con un semplice
echo 0 > /sys/devices/system/cpu/cpuX/online
Note aggiunte l'8 luglio 2014: Come ha sottolineato Riccardo Murri, la mia risposta di seguito mostra solo se il processore segnala di supportare l'hyperthreading. Generalmente, i sistemi operativi *nix sono configurati per abilitare l'hyperthreading se supportato. Tuttavia, per verificarlo effettivamente a livello di codice, vedere ad esempio la risposta di Nils!
---- Risposta originale del 25 marzo 2012:
Sei davvero sulla strada giusta :) con
dmidecode -t processor | grep HTT
Su Linux, generalmente cerco solo "ht" nella riga "flags" di /proc/cpuinfo
. Vedi ad esempio
grep '^flags\b' /proc/cpuinfo | tail -1
o se vuoi includere "ht" nel pattern
grep -o '^flags\b.*: .*\bht\b' /proc/cpuinfo | tail -1
(\b
corrisponde ai confini delle parole e aiuta a evitare falsi positivi nei casi in cui "ht" fa parte di un altro flag.)
Se il numero di processori logici è il doppio del numero di core, hai HT. Usa il seguente script per decodificare /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"