【问题标题】:Any way to prevent linux kernel to migrate threads to other cpus防止linux内核将线程迁移到其他cpu的任何方法
【发布时间】:2012-12-13 17:40:04
【问题描述】:

有什么办法可以防止linux内核将线程迁移到其他cpu上? 使用 hwloc(它又使用 pthread_setaffinity_np),我将线程绑定到核心。但是,有时我会看到内核启动了昂贵的迁移任务。有什么办法可以阻止内核这样做吗?我没有在 hwloc / pthreads 库中找到任何标志,也没有将 kernel/sched_nr_migrate 设置为 0 导致所需的行为。 任何建议都受到高度赞赏。谢谢

【问题讨论】:

  • 有没有人有证据表明这样的功能在任何应用程序中都是一个优势?如果线程 X 准备就绪,它所绑定的核心已经很忙并且还有另一个核心空闲,那么操作系统应该做什么?不运行吗?迁移其他线程?我没有看到太大的上涨空间?
  • 也许你可以看看 libnuma。不确定它是否可以在非 NUMA 架构中使用。
  • @jrw:你解决过这个问题吗?我在短期线程上看到了类似的问题,这些线程似乎在其生命周期开始时就被迁移了,这正在扼杀性能。

标签: linux-kernel pthreads


【解决方案1】:

您可以设置进程(而不是线程)的 CPU 亲和性,据我了解,内核会非常努力地尊重这一点。如果您希望特定进程产生的所有线程都在同一个 CPU 上运行,那么这是一个可以接受的解决方案。

这是一篇来自 IBM 的文章,提供了一些额外的背景知识和特定的系统调用:

http://www.ibm.com/developerworks/library/l-affinity/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2011-05-03
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多