【问题标题】:force scheduler to allocate thread to specific processor强制调度程序将线程分配给特定的处理器
【发布时间】:2013-02-05 09:44:26
【问题描述】:

假设我们有多个处理器/内核和两个线程。是否可以强制 linux 调度程序在其执行的每个实例中始终将特定线程(两者)调度到特定处理器。是否在创建时为线程设置处理器亲和性,足以达到此目的

【问题讨论】:

    标签: linux multithreading multiprocessing scheduling multicore


    【解决方案1】:

    如果您查看taskset 的手册页,您会看到以下语句:

    Linux 调度程序将遵循给定的 CPU 亲和性,并且该进程不会在任何其他 CPU 上运行。

    这意味着为特定进程设置 CPU 亲和性将确保它始终在该 CPU 上运行。

    存在允许您为特定线程设置线程亲和性的 API,我想 OS 调度程序也会支持这一点。

    如果您查看sched_setaffinity,您会看到一行内容:

    这些对进程将运行的实际 CPU 集的限制是由内核静默施加的。

    这意味着这将确保您的线程仅在此函数设置的 CPU 上运行。

    【讨论】:

    • 感谢@Tony The Lion 的支持。我使用了taskset命令。并遇到了亲和力列表和亲和力掩码。我需要知道它们之间的区别以及如何在运行时设置/更改亲和力
    • 我对您使用的操作系统做了一个假设,但您确实在 Linux 上吗?如果是这样,您应该使用shed_setaffinity 在代码中进行设置。您应该能够查找的亲和力掩码。
    • 是否可以将内核线程调度到特定内核
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多