Linux上的处理器亲和力

时间:2010-01-27 18:43:54

标签: linux multithreading multicore

感谢目前为止的所有答案!

我正在使用双核处理器,我希望所有进程都能运行 在core1上但只有一个。我现在知道我可以使用taskset来设置当前运行的所有内容 例如,绑定到处理器1。现在我希望我的OWN应用程序已经安排好了 在启动应用程序后立即在处理器2上执行。换一种说法, 有没有办法告诉我的应用程序中的操作系统,我想让这个特定的程序在2号处理器上执行?

非常感谢, Mareika

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您可以使用:

taskset -c 1 -p 123

让核心2上的进程123运行。

答案 2 :(得分:2)

看一下这篇文章:

http://www.linuxjournal.com/article/6799

详细介绍了这一主题。

简而言之,确保'init'开始使用一个proc的亲和力(它的孩子会继承),然后你会想要使用:

// (Declaration got via 'man sched_setaffinity')
int sched_setaffinity(pid_t pid, size_t cpusetsize,
                         cpu_set_t *mask);

在程序启动后立即设置进程关联。

答案 3 :(得分:1)

我会寻找一种方法来限制'init'进程在cpu 1上运行。*由于继承了CPU亲和性,这应该导致系统上的每个其他进程也在cpu 1上运行,直到你启动你的特定为cpu 2设置cpu affinity的特殊进程。

*或者,在系统启动后,您可以重新分配所有当前正在运行的进程的亲缘关系,但这似乎不太优雅。