在多个服务器上并行运行独立作业,并进行负载平衡

时间:2015-01-23 13:57:02

标签: shell parallel-processing makefile pbs

我有一些数字运算工作,我在群集上并行运行。现在,我使用make -j在一台计算机上运行多个作业,同时提供一些负载平衡 - 某些作业可能比另一个完成得更快。当扩展到多台机器时,我只是将作业数量均匀地划分为几个makefile,盲目地希望每个makefile大致相等的时间来完成。

现在,我的问题是 - 是否可以轻松地在M台机器上并行运行N个独立作业,而提供全局负载平衡

我在安装了PBS的Linux(Bullx)集群上,并且还有GNU并行(虽然我从来没有使用过那个,但在我看来它不会在它之间进行负载平衡计算节点,通过阅读手册后)。

3 个答案:

答案 0 :(得分:2)

假设您有N个工作,M个机器和K核心M*K < N。您可以将所有工作提交给PBS,并在旧工作完成后立即安排新工作。虽然如果N很大(> 10000),PBS可能会带来很大的开销。

答案 1 :(得分:1)

听起来我需要像Jenkins和Multijob插件这样的东西。 它将有效地让你做你在那里要求的。

这里有一些额外信息:https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

答案 2 :(得分:1)

GNU Parallel可以平衡异构集群上的作业:如果一个主机有4个核心而另一个有64个核心,GNU Parallel将默认在小型机器上生成4个作业,在大型机器上生成64个作业,并保留4个(和64个)在这些机器上运行的作业,直到所有作业都运行完毕。

这应该比简单地使用makefile好得多。