我需要将 N 个实体(每个实体都有可能的父母和可能的孩子)分配给 M 个计算节点,同时满足以下优化条件:
- 实体的子节点希望被分配到同一个计算节点(以最大化兄弟节点之间的数据局部性)
- 实体的分布应尽可能均匀(即单个节点不超负荷)。
我正在寻找一些关于解决这个问题的启发式方法的建议。
我读过http://en.wikipedia.org/wiki/Assignment%5Fproblem。
谢谢。
我需要将 N 个实体(每个实体都有可能的父母和可能的孩子)分配给 M 个计算节点,同时满足以下优化条件:
我正在寻找一些关于解决这个问题的启发式方法的建议。
我读过http://en.wikipedia.org/wiki/Assignment%5Fproblem。
谢谢。
好吧,显然你必须预测每个进程平均有多少个子进程(或简单的总负载)。与您可以使用经典的分配算法相比,它们通常非常简单。
最重要的问题当然是决定要最小化什么。通常我们希望尽量减少迟到(我们得到多少“落后于计划”),但并不总是......
编辑:如果您事先知道所有的孩子/父母,并且一个进程的孩子必须在同一台机器上,您可以认为一个进程及其所有孩子一开始就是同一个进程。然后你可以使用一个非常简单的算法来最小化你想要最小化的任何东西。
编辑#2:阅读作业调度以获得更好的想法