Linux 强制调度程序将线程分配给特定处理器

Linux 强制调度程序将线程分配给特定处理器,linux,multithreading,multiprocessing,scheduling,multicore,Linux,Multithreading,Multiprocessing,Scheduling,Multicore,考虑一种情况,我们有多个处理器/内核和两个线程。是否可以强制linux调度程序在其执行的每个实例中始终将特定线程(两者)调度到特定处理器。创建时设置处理器与线程的关联性是否足以达到此目的?如果查看手册页,您可以看到以下语句: Linux调度程序将遵守给定的CPU关联,并且该进程不会在任何其他CPU上运行 这意味着为特定进程设置CPU相关性将确保它始终在该CPU上运行 存在允许您为特定线程设置线程亲缘关系的API,我可以想象操作系统调度器也会尊重这一点 如果你看,你会看到一行字,上面写着: 这些对

考虑一种情况,我们有多个处理器/内核和两个线程。是否可以强制linux调度程序在其执行的每个实例中始终将特定线程(两者)调度到特定处理器。创建时设置处理器与线程的关联性是否足以达到此目的?如果查看手册页,您可以看到以下语句:

Linux调度程序将遵守给定的CPU关联,并且该进程不会在任何其他CPU上运行

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

存在允许您为特定线程设置线程亲缘关系的API,我可以想象操作系统调度器也会尊重这一点

如果你看,你会看到一行字,上面写着:

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


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

感谢@Tony the Lion的支持。我使用了taskset命令。遇到了关联列表和关联掩码。我需要知道它们之间的区别以及如何在运行时设置/更改亲缘关系我假设您使用的是操作系统,但您确实使用Linux吗?如果是这样,您应该使用
shed_setaffinity
在代码中设置它。您应该能够查找的关联掩码。是否可以将内核线程调度到特定的内核