私は常に以下を使用し、「コアあたりのスレッド:」を見てきました。
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
ただし、単純なコマンドで論理プロセッサの電源がオフになっている場合、この手法は失敗することに注意してください
echo 0 > /sys/devices/system/cpu/cpuX/online
2014 年 7 月 8 日に追加されたメモ: Riccardo Murri が指摘したように、以下の私の回答は、プロセッサがハイパースレッディングをサポートしていると報告されているかどうかのみを示しています。通常、*nix O/S は、サポートされている場合、ハイパースレッディングを有効にするように構成されています。ただし、これを実際にプログラムで確認するには、たとえば Nils の回答を参照してください!
---- 2012 年 3 月 25 日の元の回答:
あなたは確かに正しい軌道に乗っています:)
dmidecode -t processor | grep HTT
Linux では、通常、/proc/cpuinfo
の「flags」行で「ht」を探すだけです。 .例を参照してください
grep '^flags\b' /proc/cpuinfo | tail -1
または、パターンに「ht」を含めたい場合
grep -o '^flags\b.*: .*\bht\b' /proc/cpuinfo | tail -1
(\b
単語の境界に一致し、「ht」が別のフラグの一部である場合の誤検知を回避するのに役立ちます。)
論理プロセッサの数が HT のコア数の 2 倍の場合、次のスクリプトを使用して /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"