![与 CPU 计算相关的奇怪 lscpu 输出](https://linux22.com/image/228524/%E4%B8%8E%20CPU%20%E8%AE%A1%E7%AE%97%E7%9B%B8%E5%85%B3%E7%9A%84%E5%A5%87%E6%80%AA%20lscpu%20%E8%BE%93%E5%87%BA.png)
我一直在尝试理解lscpu
的输出,并遇到了几个专门用于 CPU、物理核心和线程概念的线程。根据这些线程,要获取 CPU(逻辑单元)的总数,您可以执行以下操作:Thread(s) per core
x Core(s) per socket
x Socket(s)
。
鉴于我的机器的部分输出如下所示,我预计CPU(s)
为 28,但它被列为 20。
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 20
On-line CPU(s) list: 0-19
Vendor ID: GenuineIntel
Model name: 12th Gen Intel(R) Core(TM) i9-12900H
CPU family: 6
Model: 154
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 1
有人可以帮助我理解我对 CPU 数量的预期与lscpu
此实例中实际产生的结果之间明显的脱节吗?我好像找不到类似的案例。
答案1
您找到的信息(可能包括我之前关于该主题的答案)没有考虑到单个包中具有不同内核的 CPU。您的 CPU 有 6 个 P 核和 8 个 E 核;每个 P 核心有两个线程,因此您的系统总共有 20 个逻辑 CPU。
lscpu
无法在其摘要中表示这一点(至少不是您拥有的版本),因此它显示了误导性信息;你可以通过运行看到不同的核心lscpu --extended
。