Vždy jsem používal pouze následující a podíval jsem se na 'Vlákna na jádro:'.
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
Všimněte si však, že tato technika selže, pokud byl některý logický procesor vypnut jednoduchým
echo 0 > /sys/devices/system/cpu/cpuX/online
Poznámky přidány 8. července 2014: Jak zdůraznil Riccardo Murri, moje odpověď níže pouze ukazuje, zda procesor hlásí podporu hyperthreadingu. Obecně jsou *nix O/S nakonfigurovány tak, aby umožňovaly hyperthreading, pokud je podporován. Chcete-li to však skutečně zkontrolovat programově, podívejte se například na Nilsovu odpověď!
---- Původní odpověď z 25. března 2012:
Jste skutečně na správné cestě :) s
dmidecode -t processor | grep HTT
V Linuxu obecně hledám "ht" na řádku "flags" /proc/cpuinfo
. Viz například
grep '^flags\b' /proc/cpuinfo | tail -1
nebo pokud chcete zahrnout "ht" do vzoru
grep -o '^flags\b.*: .*\bht\b' /proc/cpuinfo | tail -1
(\b
odpovídá hranicím slova a pomáhá vyhnout se falešným poplachům v případech, kdy je „ht“ součástí jiného příznaku.)
Pokud je počet logických procesorů dvojnásobkem počtu jader, máte HT. K dekódování použijte následující skript /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"