感谢目前为止的所有答案!
我正在使用双核处理器,我希望所有进程都能运行 在core1上但只有一个。我现在知道我可以使用taskset来设置当前运行的所有内容 例如,绑定到处理器1。现在我希望我的OWN应用程序已经安排好了 在启动应用程序后立即在处理器2上执行。换一种说法, 有没有办法告诉我的应用程序中的操作系统,我想让这个特定的程序在2号处理器上执行?
非常感谢, Mareika
答案 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的特殊进程。
*或者,在系统启动后,您可以重新分配所有当前正在运行的进程的亲缘关系,但这似乎不太优雅。