“关于此计算机”和 /cpu/cpuinfo 中的 CPU 编号不同

“关于此计算机”和 /cpu/cpuinfo 中的 CPU 编号不同

问题:

我想问一下是什么原因导致处理器数量有两个不同的信息。请参阅下面的报告。

系统对话框:

如果打开系统设置/详细信息选项卡(与注销轮盘和关于此计算机相同),我会收到以下报告:

处理器:Intel® Xeon(R) CPU E5-2680 v3 @ 2.50GHz × 16


CLI:cpuinfo(1)

尽管如此,使用命令行命令,我得到以下内容:

$ cat /proc/cpuinfo | grep processor | wc -l
24

我倾向于相信命令行报告——但什么可能导致它们不同?

FIY:系统监视器还显示 24 个核心的统计数据


CLI:cpuinfo(2)

根据评论中的建议,我还运行了以下命令行

$ cat /proc/cpuinfo |grep 'core id'|sort|uniq|wc -l
12

所以现在我甚至有了第三个结果!这个结果很有意义,因为机器可能有 12 个内核和 2 个处理器 - 但系统对话框怎么可能计数 16 个呢?

答案1

我认为 CPU 核心与对称多处理 (对称多处理器)。

在此处输入图片描述

英特尔酷睿2双核处理器显示物理布局的图表。 在此处输入图片描述


目录中保存的是系统的 CPU 信息/proc,软件可以很整齐的展示出来lscpu,如下图,我举了三个例子来对比:一台有 2 个 CPU 核心的台式机,一台有 48 个 CPU 核心的服务器,一台有 4 个 CPU 核心的树莓派。

台式电脑
用户@主机名:~$ lscpu
架构:x86_64
CPU 操作模式:32 位、64 位
字节顺序:小端
CPU: 2
在线 CPU 列表:0,1
每核线程数:1
每插槽核心数:2
插座:1
NUMA 节点:1
供应商 ID:GenuineIntel
CPU 系列:6
型号:60
步进:3
CPU频率:800.000
保费:5586.94
虚拟化:VT-x
L1d 缓存:32K
L1i 缓存:32K
L2 缓存: 256K
L3缓存:2048K
NUMA 节点 0 CPU:0,1

服务器
用户@主机名%lscpu
架构:x86_64
CPU 操作模式:32 位、64 位
字节顺序:小端
CPU:48
在线 CPU 列表:0-47
每核线程数:2
每插槽核心数:12
插座:2
NUMA 节点:1
供应商 ID:GenuineIntel
CPU 系列:6
型号:62
步进:4
CPU频率:1799.724
保价MIPS:3600.09
虚拟化:VT-x
L1d 缓存:32K
L1i 缓存:32K
L2 缓存: 256K
L3缓存:30720K
NUMA 节点 0 CPU:0-47

树莓派
jeff@clear-pi:~$ lscpu
架构:armv7l
字节顺序:小端
CPU:4
在线 CPU 列表:0-3
每核线程数:1
每插槽核心数:4
插座:1
型号名称:ARMv7 处理器修订版 5 (v7l)
CPU 最大 MHz:900.0000
CPU 最小 MHz:600.0000

服务器总数为 48,但必须乘以 3 个数字才能达到这个数字:2*12*2=48. 通过这种方式比较,CPU 制造商安排的差异显而易见。

桌面
[每核线程数:1] * [每插槽核数:1] * [插槽数:1] = 2

服务器
[每核线程数:2] * [每插槽核数:12] * [插槽数:2] = 48

树莓派
[每核线程数:1] * [每插槽核数:4] * [插槽数:1] = 4  

lshw有更多的系统信息,但在这里不太有用。

台式电脑
用户@主机名:~$ sudo lshw
     *-中央处理器
          描述:中央处理器
          产品:英特尔(R) 赛扬(R) CPU G1840 @ 2.80GHz
          供应商:英特尔公司
          物理 ID:9
          总线信息:cpu@0
          版本:Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
          插槽:SOCKET 0
          尺寸:2800MHz
          容量:3800MHz
          宽度:64 位
          时钟:100MHz

服务器
用户@主机名%sudo lshw
     *-CPU:0
          描述:中央处理器
          产品:Intel(R) Xeon(R) CPU E5-2651 v2 @ 1.80GHz
          供应商:英特尔公司
          物理 ID:4
          总线信息:cpu@0
          版本:Intel(R) Xeon(R) CPU E5-2651 v2 @ 1.80GHz
          插槽:SOCKET 0
          尺寸:1800MHz
          容量:4GHz
          宽度:64 位
          时钟:100MHz

树莓派
用户@主机名:~ $ sudo lshw
*-CPU:0
          描述:中央处理器
          产品:中央处理器
          物理 ID:0
          总线信息:cpu@0
          尺寸:900MHz
          容量:900MHz
          功能:cpufreq

最后,这种方法在我使用的几种不同的 Linux/UNIX 操作系统上都有效,因为 lscpu 不可用。这是问题和评论中建议的变体,但我更喜欢简写命令和简单输出。

user@hostname:~ $ grep -c ^processor /proc/cpuinfo
4

参考:如何查找包括虚拟在内的 CPU 核心数?

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

参考:https://stackoverflow.com/questions/19225859/difference-between-core-and-processor

相关内容