我感兴趣的是超线程感知如何影响线程在逻辑和物理核心上的调度,例如,它是否将来自同一进程的线程放在一起以从缓存共享中受益,它是否分离那些它以某种方式知道会争夺大量核心资源的线程,它是否将计算密集型线程与 I/O 密集型线程结合在一起,等等。
我谷歌了一下“调度程序如何处理逻辑核心”。 我并没有寻求人工智能的答案,但谷歌搜索结果给出了人工智能的答案:不了解超线程的调度程序将逻辑核心与物理核心同等对待。在多核 CPU 中,如果假设只有两个线程要运行,那么缺乏超线程意识可能会导致将两个线程都调度到同一个物理核心上。这会使一个核心过于繁忙并延迟线程任务的完成。
然而,这只是谷歌的人工智能。如果要让它具有可信度,那么它需要证实。 人工智能的回应似乎暗示,支持超线程的调度程序更愿意将线程分散到不同的物理处理器上,并且只有在没有更多物理处理器时才将它们加倍。 这是真的吗?我在哪里可以找到这些信息?
我很好奇这种超线程感知偏好的真实性,即把线程分散到不同的物理核心上,这是有原因的。 在典型的计算机上,有数千个线程等待运行。 这比逻辑和物理处理器的数量要多很多倍,甚至要多几个数量级。 这不仅仅是一个人工智能的答案,所以似乎除了非常具体的科学计算应用程序之外,避免将线程加倍到物理核心上没有任何好处。 这是正确的吗,还是我遗漏了什么?
最终,我试图了解超线程意识如何改善调度。 根据我目前能够找到的信息,很可能它没有改善调度。但是,我不是计算机科学家——我只需要学习多线程来使我的软件组件线程安全,因为主机应用程序确实使用超线程。
PS:我已经在网上浏览超线程页面好几天了,所以我实际上并不是在询问多线程、SMT 的基础知识、超线程是什么、超标量或类似的背景知识。