如何在 Linux 上设置进程的处理器关联?

chi*_*tom 37 linux cpu process

如何在 Linux 上设置进程的处理器关联?

kby*_*yrd 33

我为此使用了任务集。如果您安装了任务集,则类似于:

taskset -cp 0,2 45678
Run Code Online (Sandbox Code Playgroud)

会将 id 为 45678 的进程设置为与 cpu 1 和 3 具有亲缘关系。


Phi*_*ler 7

在进程内部,调用将是sched_setaffinity(),或者对于 pthreads 的东西,pthread_setaffinity_np()

与此相关的是,如果您担心程序的 CPU 亲和性,那么关注它如何进行内存分配也是值得的。将内存连接到多个控制器(即多个 CPU 插槽,每个插槽都有自己的控制器)的较大系统在不同 CPU 内存对之间将具有可变的延迟和带宽。您还需要使用numactl命令或它使用的系统调用来查看 NUMA 关联。我参与的一个程序由此获得了 10% 的性能提升。