我试图了解操作系统(Windows,linux)如何在启用超线程的环境中将数字分配给逻辑cpus。?
开放源码软件是否先向物理CPUs顺序分配编号,然后开始对逻辑cpus编号,或者是否遵循了其他规则??例如,在具有超线程的2个物理cpu系统中,操作系统是否将编号0、2分配给第一个物理cpu,然后分配给1,3到第二个物理cpu。?
如有任何参考资料,将不胜感激。
提前谢谢。
你好,-Jay。
编辑:回答Alan的问题:我需要知道这一点,因为在我的工作中,我需要将各种线程绑定到特定的cpus,以避免上下文切换,并且我希望确保某些任务( threads )绑定到独立的物理CPUs。谢谢
发布于 2009-11-16 19:18:32
据我所知,这取决于CPU如何暴露他的核心。当启用HT时,没有公开的物理CPU,而是每个物理CPU有两个逻辑CPU,因此,如果在任一逻辑CPU上运行线程,则没有区别。唯一重要的是,哪些逻辑CPU属于每个物理CPU。
对于单核处理器(就像奔腾4和HT一样),它非常直接,因为你只有一对,所以它是(0,1)。对于四核处理器(如Nehalem),逻辑核对是(0,4),(1,5),(2,6)和(3,7)。拥有每对的所有前半部,然后拥有所有的第二半部的模式与未来拥有更多核心的CPU关闭规模。
真正的问题是为什么你需要知道配对的安排?让操作系统的调度器为正确的线程选择正确的核心-它做了相当不错的工作。
发布于 2010-06-02 14:47:13
您可以在/sys/devices/system/cpu/中查找有关CPU的信息。核心及其超线程对的布局可以在/sys/devices/system/cpu/cpuN/topology/thread_siblings_list中找到。
https://stackoverflow.com/questions/1744130
复制相似问题