numactl --physcpubind处理器迁移

时间:2013-06-05 21:57:31

标签: mpi openmpi numa pinning

我正在尝试使用 numactl 启动我的mpi应用程序(Open MPI 1.4.5)。由于显然使用 - cpu-nodebind 的负载平衡不会在可用节点之间以循环方式分配我的进程,所以我希望将我的进程专门限制为一组封闭的cpus。通过这种方式,我计划根据每个节点上运行的线程数确保节点之间的平衡负载。 - physcpubind 似乎根据numactl手册完成了这项工作。

问题是 - 从我可以从this帖子中提取的内容 - 使用 - phycpubind ,允许进程在此cpu中迁移组。另一个问题是,来自此集合的某些cpu仍未使用,而其他cpus被分配了两个或更多进程,因此仅使用50%或更少的CPU使用率运行。为什么会发生这种现象?是否有针对这种现象的解决方法?

亲切的问候

1 个答案:

答案 0 :(得分:0)

我想您可以尝试一下(它对我有用):

numactl --cpunodebind={cpu-core}  chrt -r 98 {your-app}

chrt 命令使您可以建立调度策略,可以选择以下选项:

Policy options:
 -b, --batch          set policy to SCHED_BATCH
 -d, --deadline       set policy to SCHED_DEADLINE
 -f, --fifo           set policy to SCHED_FIFO
 -i, --idle           set policy to SCHED_IDLE
 -o, --other          set policy to SCHED_OTHER
 -r, --rr             set policy to SCHED_RR (default)

编辑:数字98是优先级,对于我来说,我正在运行一个时间紧迫的进程。 另外,您可能需要隔离正在使用的CPU,以防止调度程序向其分配进程或从中移出进程。