AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1879090
Accepted
user2153235
user2153235
Asked: 2025-02-14 03:36:17 +0800 CST2025-02-14 03:36:17 +0800 CST 2025-02-14 03:36:17 +0800 CST

将线程调度到超线程内核上

  • 772

我感兴趣的是超线程感知如何影响线程在逻辑和物理核心上的调度,例如,它是否将来自同一进程的线程放在一起以从缓存共享中受益,它是否分离那些它以某种方式知道会争夺大量核心资源的线程,它是否将计算密集型线程与 I/O 密集型线程结合在一起,等等。

我谷歌了一下“调度程序如何处理逻辑核心”。 我并没有寻求人工智能的答案,但谷歌搜索结果给出了人工智能的答案:不了解超线程的调度程序将逻辑核心与物理核心同等对待。在多核 CPU 中,如果假设只有两个线程要运行,那么缺乏超线程意识可能会导致将两个线程都调度到同一个物理核心上。这会使一个核心过于繁忙并延迟线程任务的完成。

然而,这只是谷歌的人工智能。如果要让它具有可信度,那么它需要证实。 人工智能的回应似乎暗示,支持超线程的调度程序更愿意将线程分散到不同的物理处理器上,并且只有在没有更多物理处理器时才将它们加倍。 这是真的吗?我在哪里可以找到这些信息?

我很好奇这种超线程感知偏好的真实性,即把线程分散到不同的物理核心上,这是有原因的。 在典型的计算机上,有数千个线程等待运行。 这比逻辑和物理处理器的数量要多很多倍,甚至要多几个数量级。 这不仅仅是一个人工智能的答案,所以似乎除了非常具体的科学计算应用程序之外,避免将线程加倍到物理核心上没有任何好处。 这是正确的吗,还是我遗漏了什么?

最终,我试图了解超线程意识如何改善调度。 根据我目前能够找到的信息,很可能它没有改善调度。但是,我不是计算机科学家——我只需要学习多线程来使我的软件组件线程安全,因为主机应用程序确实使用超线程。

PS:我已经在网上浏览超线程页面好几天了,所以我实际上并不是在询问多线程、SMT 的基础知识、超线程是什么、超标量或类似的背景知识。

hyper-threading
  • 1 1 个回答
  • 33 Views

1 个回答

  • Voted
  1. Best Answer
    Pai-to
    2025-02-14T04:42:29+08:002025-02-14T04:42:29+08:00

    超线程在两个线程之间共享一个 CPU 核心。这意味着这两个线程都需要共享缓存、核心资源和执行单元。当您仅使用其中一个超线程核心时,这意味着可以更好地将缓存和资源分配给正在运行的线程。

    简单地说,如果您有 4 件事要做,并且有 4 个超线程核心,因此您只需要4 个核心,那么通过使用“完整”核心并避免每个核心上的第二个(超)线程将获得最佳性能。

    需要澄清的是,超线程并不等于每个核心的性能提升 100%。一个老例子是,超线程可以根据任务额外提高 30% 的性能。在单个超线程核心上运行两个任务仅相当于 1.3 个处理器。

    另一种方法是在两个“满载”处理器上运行两个任务,假设没有内存或其他限制,这样可以充分发挥两个核心的性能。两个任务将真正同时运行,而不是共享执行资源。

    因此需要澄清的是:

    • 1 个核心具有超线程 = 性能提升 130%
    • 2 个核心 = 200% 性能

    因此,您绝对希望在可能的情况下让单个任务在“完整”核心上运行。

    这就是超线程感知调度程序的作用所在。

    它会优先在每个核心上安排任务,然后仅在必要时通过超线程使用剩余的核心资源。

    忽略“I/O”和其他特性,在进程之间,每个核心基本相同,内存和硬盘的速度也相同。“共置”进程没有任何好处,因为当它们执行内存或其他硬件请求时,无论它们位于哪个核心上,它们都会看到相同的限制。

    • 1

相关问题

  • 如何为此处理器启用超线程和涡轮增压?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve