逻辑CPU个数

cat /proc/cpuinfo | grep "processor" | wc -l

物理CPU个数

cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

“siblings”指的是一个物理CPU有几个逻辑CPU。
“cpu cores”指的是一个物理CPU有几个核。
不应该按照flags里是否有ht标志来判断系统是否有超线程能力,而应该:

  • 如果”siblings”和”cpu cores”一致,则说明不支持超线程,或者超线程未打开
  • 如果”siblings”是”cpu cores”的两倍,则说明支持超线程,并且超线程已打开

举例说明

两个双核超线程CPU:

processor   0 1 2 3 4 5 6 7
physical id 0 0 0 0 1 1 1 1
siblings    4 4 4 4 4 4 4 4
core id     0 0 1 1 0 0 1 1
cpu cores   2 2 2 2 2 2 2 2

感谢老男赐予的知识。