9

我试图找出操作系统(Windows,linux)如何在启用超线程的环境中将数字分配给逻辑 CPU。?

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

任何参考将不胜感激。

提前致谢。

问候,-杰。

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

4

2 回答 2

9

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

使用单核处理器(例如带有 HT 的 Pentium 4),这非常简单,因为您只有一对 - 所以它是 (0, 1)。对于四核处理器(如 Nehalem),逻辑核对是 (0,4)、(1,5)、(2,6) 和 (3,7)。拥有每对的所有前半部分然后拥有所有后半部分的模式应该适用于具有更多内核的未来 CPU。

真正的问题是为什么你需要知道配对安排?让操作系统的调度程序为正确的线程选择正确的内核——它做得相当不错。

于 2009-11-16T19:18:32.223 回答
5

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

于 2010-06-02T14:47:13.097 回答