3

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

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

亲切的问候

4

1 回答 1

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,以防止调度程序向/从它们分配/移动进程。

于 2020-08-03T19:44:32.793 回答