我的 Linux 机器中有 8 个逻辑 CPU。(从中可以看到/proc/cpuinfo
)。当我查看
/sys/kernel/debug/tracing/per_cpu
它显示有 32 个 CPU。
为什么会有差异?如果这很重要,我在 BIOS 中禁用了超线程。
答案1
每个核心都有单独的列表。我猜你的系统有 8 个逻辑 CPU,每个 CPU 有 4 个核心。
答案2
物理核心就是 CPU 内的物理核心。逻辑核心是指单个核心同时执行 2 项或更多项任务的能力。这源于早期奔腾 4 CPU能够做到所谓的超线程 (HTT)。
这有点像是一场游戏,核心的子组件不用于执行某些类型的指令,而另一条长时间运行的指令可能正在执行。因此 CPU 实际上可以同时处理两件事。
较新的内核是功能更全面的 CPU,因此它们可以同时处理多个任务,但它们不像物理内核那样是真正的 CPU。您可以在 tomshardware 上阅读有关超线程功能与内核物理功能之间的限制的更多信息,文章标题为:英特尔酷睿 i5 和酷睿 i7:英特尔的主流巨作。
您可以使用以下命令查看盒子的故障lscpu
:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 2667.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
上图中我的 Intel i5 笔记本电脑总共有 4 个“CPU”
CPU:4
其中有 2 个物理核心
每插槽核心数:2
每个可以运行最多 2 个线程
每核线程数:2
同时,这些线程是核心的逻辑能力。
伊斯托波
您可以使用该工具lstopo
获取系统拓扑的实际图表,这有时有助于理解 CPU 架构的重要性。
“PU P#” = 处理单元处理器 #。这些是 CPU 核心内的处理元素。在我的笔记本电脑 (Intel i5) 上,我有 2 个核心,每个核心有 2 个处理元素,总共 4 个。但实际上我只有 2 个物理核心。
如果你想要进一步了解输出,lstopo
请查看我在 U&L 问答中的回答,标题为:解释 lstopo 的输出。