我正在尝试使用 numactl 启动我的mpi应用程序(Open MPI 1.4.5)。由于显然使用 - cpu-nodebind 的负载平衡不会在可用节点之间以循环方式分配我的进程,所以我希望将我的进程专门限制为一组封闭的cpus。通过这种方式,我计划根据每个节点上运行的线程数确保节点之间的平衡负载。 - physcpubind 似乎根据numactl手册完成了这项工作。
问题是 - 从我可以从this帖子中提取的内容 - 使用 - phycpubind ,允许进程在此cpu中迁移组。另一个问题是,来自此集合的某些cpu仍未使用,而其他cpus被分配了两个或更多进程,因此仅使用50%或更少的CPU使用率运行。为什么会发生这种现象?是否有针对这种现象的解决方法?
亲切的问候
答案 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,以防止调度程序向其分配进程或从中移出进程。