多核系统。核心是如何“排序”的

asd*_*ael 5 scheduling process multi-core

如果我有一个系统,假设启用了两个四核 CPU 和超线程,我怎么知道物理和虚拟内核是如何排序的?例如,如果我强制一个进程在“CPU 0”上运行,如何知道这到底是哪个核心?我记得关于这个的复杂绘图,但没有发现任何有用的东西。

更新:在与程序员讨论后,我确信将程序/线程绑定到特定核心是没有意义的。在大多数情况下,最好让操作系统决定使用哪个内核。然而,枚举的工作方式仍然很有趣。

knw*_*iss 2

看一下hwloc项目。它提供了一个 C API 来回答此类问题,还提供了一个生成lstopoCPU/内存拓扑图的工具。请参阅 URL 获取示例。