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

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

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

答案1

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

taskset -cp 0,2 45678

将设置 id 为 45678 的进程与 cpu 1 和 3 具有关联性。

答案2

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

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

答案3

您需要安装schedutils(Linux 调度程序实用程序)。我已经在我的 Ubuntu 桌面上使用了它。

顺丰关联

答案4

taskset -c 1-3 ./a.out arg1 arg2

a.out使用给定参数和设置为处理器 1、2 或 3(从零开始)的亲和力启动进程。

这是一个最小的 C 测试程序,可用于查看它的实际情况:https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from-c/50117787#50117787

相关内容