在启用了hypertheading的系统上的CPU编号

我试图找出一个操作系统(Windows,Linux)如何在启用了Hyper线程的环境中将数字分配给逻辑cpus。 ?

这两个操作系统是否首先将序号分配给物理CPU,然后开始对逻辑CPU进行编号,或者是否还有其他一些规则。 例如在具有超线程的2个物理cpu系统中,操作系统是否将0,2分配给第一个物理CPU,然后是1,3分配给第二个物理CPU。

任何参考将非常感激。

提前致谢。

问候, – 好的。

编辑:回应Alan的问题:我需要知道这一点,因为在我的工作中,我需要将各种线程绑定到特定的CPU,以避免上下文切换,我想确保某些任务(THreads)绑定到分开物理cpus。 谢谢

Solutions Collecting From Web of "在启用了hypertheading的系统上的CPU编号"

据我所知,这取决于CPU如何公开他的内核。 启用HT时,没有外露的物理CPU,而是每个物理CPU有两个逻辑CPU,因此,如果在任一逻辑CPU上运行线程,则没有区别。 唯一重要的是哪对逻辑CPU属于每个物理CPU。

对于单核心处理器(例如带有HT的奔腾4),它是非常简单的,因为你只有一对 – 所以它是(0,1)。 对于四核处理器(如Nehalem),逻辑核对是(0,4),(1,5),(2,6)和(3,7)。 每个对的所有前半部分具有所有后半部分的模式将会与将来具有更多内核的CPU相比较。

真正的问题是为什么你需要知道这对配置? 让操作系统的调度程序为正确的线程选择合适的核心 – 它的工作相当不错。

您可以查看/sys/devices/system/cpu/以查找有关CPU的信息。 核心及其超线程对的布局可以在/sys/devices/system/cpu/cpuN/topology/thread_siblings_list