Siempre he usado lo siguiente y he mirado 'Hilo(s) por núcleo:'.
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
Tenga en cuenta, sin embargo, que esta técnica fallará si algún procesador lógico se ha apagado con un simple
echo 0 > /sys/devices/system/cpu/cpuX/online
Notas añadidas el 8 de julio de 2014: Como señaló Riccardo Murri, mi respuesta a continuación solo muestra si el procesador informa que admite hyperthreading. Por lo general, *nix O/S están configurados para habilitar hyperthreading si es compatible. Sin embargo, para verificar esto mediante programación, ¡vea, por ejemplo, la respuesta de Nils!
---- Respuesta original del 25 de marzo de 2012:
De hecho, estás en el camino correcto :) con
dmidecode -t processor | grep HTT
En Linux, generalmente solo busco "ht" en la línea "flags" de /proc/cpuinfo
. Ver por ejemplo
grep '^flags\b' /proc/cpuinfo | tail -1
o si quieres incluir el "ht" en el patrón
grep -o '^flags\b.*: .*\bht\b' /proc/cpuinfo | tail -1
(\b
coincide con los límites de las palabras y ayuda a evitar falsos positivos en los casos en que "ht" es parte de otra marca).
Si la cantidad de procesadores lógicos es el doble de la cantidad de núcleos que tiene HT, use el siguiente script para decodificar /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"