在Linux中查询CPU的核数

以一台Linux服务器为例。这台Linux包括两颗Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz CPU, 单颗CPU包括 10 个 cpu core, 使用超线程包含20个逻辑cpu core, 具体的官方介绍: E5-2630 V4

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

查看 CPU 的型号

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

输出:

1
model name : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz

查看 CPU 颗数

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

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

输出:

1
2

查看 CPU 核数

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

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

输出:

1
10

逻辑 CPU 核数

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

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

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

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

输出:

1
40

参考资料

  1. https://stackoverflow.com/questions/6481005/how-to-obtain-the-number-of-cpus-cores-in-linux-from-the-command-line
  2. https://blog.csdn.net/dba_waterbin/article/details/8644626
  3. https://www.zhihu.com/question/28472793