逻辑与物理 CPU 性能

vhl*_*vhl 15 cpu performance multi-core multiple-instances

一台计算机有 2 个物理内核和 4 个逻辑内核(例如,具有 i5-3210M 处理器的计算机)。

当程序A运行时,htop显示它使用了100%的1核,其他3核几乎空闲。这种情况下的吞吐量是 X。

我的问题是,如果我在 4 个逻辑核心上运行 4 个 A 实例,那么总吞吐量是 4X 还是 2X?如果我只运行两个实例怎么办?

小智 17

内核的概念并没有那么简单。逻辑核心数是物理核心数乘以每个核心上可以运行的线程数。这称为超线程。如果我有一台具有 4 核处理器的计算机,每个内核运行两个线程,那么我有一个 8 个逻辑处理器。您可以通过运行lscpu命令查看您的计算机核心功能。

如果一个处理器有 4 个内核,但它可以并行运行 8 个线程,则意味着它只有 4 个物理内核(处理单元)。但它的硬件最多可以支持 8 个线程并行。显然,内核中最多可以运行 4 个作业。在内核中运行的一个作业,如果以任何方式停止内存I/O 操作,那么另一个线程可以使用该空闲内核。

您现在应该明白,如果您的计算机有 2 个物理内核,并且每个内核可以运行 2 个线程,那么您就有 4 个逻辑处理器。因此,您只能运行 2 个实例,因为您有 2 个物理内核,这意味着您正在使用单个物理内核的全部功能(一次 2 个线程)。所以吞吐量将是 50%。但是,如果任何时候一个线程空闲,那么内核可以在该内核上加载一个线程。

您可以在BIOS 中关闭超线程(类似于“英特尔 ht 技术”)并查看正常和超线程功能之间的差异,因为现在吞吐量将是 100%。

  • @ChamindaBandara `lscpu` 甚至可以通过 WSL 工作 (2认同)