如果我的系统有两个四核 CPU 并且启用了超线程,我怎么知道物理核心和虚拟核心是如何排序的?例如,如果我强制某个进程在“CPU 0”上运行,如何知道这实际上是哪个核心?我记得有一张关于这个的复杂图纸,但没有找到任何有用的东西。
更新:与程序员讨论后,我确信将程序/线程绑定到特定核心是没有意义的。在大多数情况下,最好让操作系统决定使用哪个核心。然而,枚举的工作原理仍然很有趣。
答案1
看看韋洛克项目。它提供了一个 C API 来回答这类问题,还有一个工具,lstopo
可以生成 CPU/内存拓扑图。请参阅 URL 中的示例。