【问题标题】:CPU Affinity in Boost::Thread APIBoost::Thread API 中的 CPU 关联性
【发布时间】:2011-12-13 22:12:27
【问题描述】:

是否可以在 boost 线程中设置 CPU 亲和性(即设置每个线程在不同的 CPU 上运行)?是否有任何教程/文档可以就此提出建议?谷歌搜索不会返回太多信息,除了以下线程文件服务器中不再存在指定的示例 (boost-bind_processor.v1.tar.gz)。谢谢。

http://lists.boost.org/boost-users/2009/02/45172.php

【问题讨论】:

    标签: c++ linux multithreading cpu boost-thread


    【解决方案1】:

    别这样。大多数时候,当你认为这会有所帮助时,它只会让事情变得更糟。

    您对系统施加的每项限制都是有代价的。调度器非常聪明,你对它施加的限制越多,它的性能就越差。除非有充分的理由,否则调度程序不会将线程从一个内核移动到另一个内核。

    【讨论】:

    • boost API 有一个名为 native_handle 的方法,它返回底层 posix 线程。我在底层 posix 线程上执行了所需的设置。
    • 我同意,不要为普通应用程序这样做。但是,您可能正在 NUMA 平台(现在基本上是每个平台)上编写高性能服务。在这种情况下,为某些线程设置处理器亲和性可能是一个胜利。您想从离 PCI 总线最近且带有 NIC 的节点进行网络读/写,等等。也就是说,是的,成本很高;这是你的时间和劳动。您必须针对特定的硬件配置进行调整,并在底层硬件更改或驱动程序更新或操作系统修补时运行回归。
    【解决方案2】:

    对于 .NET 应用程序,您可能需要查看名为 ProcessorAffinity 的内容。

    MSDN 1 MSDN 2 Wiki

    【讨论】:

    • 我在 linux 中工作并使用 GNU 编译器,但无论如何感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2020-12-21
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多