在Linux中查询CPU的核数

以一台Linux服务器为例。这台Linux包括一颗Intel(R) Xeon(R) CPU E3-1230 v2 @ 3.30GHz CPU, 单颗CPU包括 4 个 cpu core, 使用超线程包含8个逻辑cpu core。

下面让我们通过Linux的命令来查找对应的参数,看看是否符合官方的介绍, 主要是查看/proc/cpuinfo的信息获得。

查看 CPU 的型号

cat /proc/cpuinfo | grep 'model name' | sort | uniq

输出:

model name      : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz

查看 CPU 颗数

实际Server中插槽上的CPU个数, 物理cpu数量,可以数不重复的 physical id个数。

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

输出:

1

查看 CPU 核数

一颗CPU上面能处理数据的芯片组的数量。

cat /proc/cpuinfo |grep "cores"|uniq|awk '{print $4}'

输出:

4

逻辑 CPU 核数

一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上把一个物理线程模拟出两个线程来使用,使得单个核心用起来像两个核一样,以充分发挥CPU的性能,

逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启超线程)。

top命令查询出来的就是逻辑CPU的数量。

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

输出:

8

参考资料

https://stackoverflow.com/questions/6481005/how-to-obtain-the-number-of-cpus-cores-in-linux-from-the-command-line

https://blog.csdn.net/dba_waterbin/article/details/8644626

https://www.zhihu.com/question/28472793