gpt4 book ai didi

multithreading - 多核 + 超线程 - 线程是如何分布的?

转载 作者:行者123 更新时间:2023-12-03 10:41:48 28 4
gpt4 key购买 nike

我正在阅读对新英特尔凌动 330 的评论,他们指出任务管理器显示 4 个内核 - 两个物理内核,另外还有两个由超线程模拟。

假设您有一个包含两个线程的程序。还假设这些是在 PC 上执行任何工作的唯一线程,其他所有线程都处于空闲状态。操作系统将两个线程放在同一个核心上的概率是多少?这对程序吞吐量有巨大的影响。

如果答案不是 0%,那么除了创建更多线程之外还有其他缓解策略吗?

我预计 Windows、Linux 和 Mac OS X 会有不同的答案。

使用 sk's answer作为谷歌素材,然后按照链接,我找到了 GetLogicalProcessorInformation Windows 中的功能。它谈到“共享资源的逻辑处理器。这种类型的资源共享的一个例子是超线程方案。”这意味着 jalf是正确的,但它不是一个确定的答案。

最佳答案

Linux 有一个非常复杂的线程调度程序,它是 HT 感知的。它的一些策略包括:

被动负载平衡:如果一个物理 CPU 正在运行多个任务,调度程序将尝试在第二个物理处理器上运行任何新任务。

主动负载均衡:如果有 3 个任务,2 个在一个物理 CPU 上,1 个在另一个物理处理器上,当第二个物理处理器空闲时,调度程序将尝试将其中一个任务迁移到它。

它在尝试保持线程亲和性的同时这样做,因为当一个线程迁移到另一个物理处理器时,它必须从主内存重新填充所有级别的缓存,从而导致任务停止。

所以回答你的问题(至少在 Linux 上);在双核超线程机器上给定 2 个线程,每个线程将在自己的物理内核上运行。

关于multithreading - 多核 + 超线程 - 线程是如何分布的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/360307/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com