有没有一种方法可以将进程绑定到特定的CPU上?

7

我正在考虑开发一个应用程序,它将在一台六核机器上运行六个异步任务,每个任务分别运行在一个核心上。

但是是否可能将任务锁定到它们自己的核心上呢?

这个想法是让它们大部分时间自己运行,但有时会通过共享内存区域进行通信。然而,我希望任务尽可能不被干扰地运行。


1
你真的确定比调度程序更能决定每个任务应该在哪个CPU上运行吗? :-) - R.. GitHub STOP HELPING ICE
@R..,不确定,但我有一个相当好的预感。原因是要做的事情恰好有6件,并且应该尽可能地异步运行,以保持连续性。 - Prof. Falken
4个回答

9
你在寻找的概念叫做“线程亲和性”。它的实现方式以及请求接口都是与操作系统相关的。
在Linux下,可以尝试使用sched_setaffinity()。glibc也可能提供pthread_attr_setaffinity_np()。

5
taskset -c cpunum yourprocess

所需功能完全可以实现。您也可以提供PID,以此来将单个线程分配到特定的CPU上。如果您想从自己的程序中更改CPU亲和性,请使用sched_setaffinity()


4

1

只是为了记录,另一种不涉及编程的方法: 打开任务管理器,转到进程选项卡,右键单击你的进程并选择设置关联性...


3
问题被标记为 Linux - 你不能假设有鼠标连接,更别说一个带有“任务管理器”的完整图形用户界面了。 - Mat
@Mat 你说得完全正确。无论如何,这可能会帮助其他人。 - Adi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接