我正在尝试用numactl启动我的MPI应用程序(OpenMPI1.4.5)。由于使用--cpu-nodebind的负载平衡显然不是以循环的方式在可用的节点之间分发我的进程,所以我特别希望将我的进程限制在一组封闭的cpus上。通过这种方式,我计划根据每个节点上运行的线程数来确保节点之间的均衡负载。--根据numactl手册,似乎在做这项工作。
问题是--根据我从this后提取的内容--使用--phycpubind,进程可以在这个cpu集中迁移。另一个问题是,该集合中的一些CPU仍未使用,而其他CPU则被分配给两个或多个进程,因此只运行50%或更少的CPU使用率。为什么会发生这种情况,对这种现象有什么解决办法吗?
亲切的问候
发布于 2020-08-03 19:44:32
我想你可以试试这个(它对我有用):
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是优先,在我的情况下,我正在运行一个时间关键的进程。此外,您可能需要隔离您正在使用的cpus,以防止调度程序将进程分配/移动到它们/从它们移动。
https://stackoverflow.com/questions/16950606
复制相似问题