使用UNix系统调用固定并行进程

时间:2012-05-06 22:53:47

标签: unix process parallel-processing fork pinning

for i in `seq 1 8` ; do
    (./runProgram &)
done
亲爱的研究员, 我知道如何通过创建8个独立的进程来创建并行进程,接下来我要搜索的是如何

与处理器固定同时运行8个副本(每个副本都是自己的处理器核心)

ii-与处理器固定同时运行16个副本(每个核心2个副本)

iii-根据“iii”与处理器固定同时运行8个副本,并在代码中的特定函数调用之后将处理器核心翻转到最远的核心。

我的cpu的当前配置是8核。它正在运行Fedora OS。我事先不知道过程ID。

请建议。

提前致谢。

1 个答案:

答案 0 :(得分:1)

实现i和ii的最简单方法是使用taskset命令:

案例i:

for i in `seq 0 7`; do
  taskset -c $i ./runProgram &
done

案例ii:

for i in `seq 0 7`; do
  taskset -c $i ./runProgram &
  taskset -c $i ./runProgram &
done

案例iii:请参阅sched_getaffinity(2)sched_setaffinity(2)的手册页,了解如何更改代码中的固定。