GNU并行会使一台服务器饱和,而不是平均分配作业

问题描述 投票:1回答:1

我正在使用GNU parallel20160222。我在~/.parallel/sshloginfile中配置了四台服务器:

48/big1
48/big2
8/small1
8/small2

当我运行32个作业时,我希望在每个服务器上并行启动八个作业。甚至更好的是,在[[small1和small2上各两个或三个,在big1big2上各十二个左右。但是它正在做的是在small2上开始8个工作,其余的工作在本地开始。

这是我的调用(我实际上使用了--profile,但为简单起见,我将其删除):

parallel --verbose --workdir . --sshdelay 0.2 --controlmaster --sshloginfile .. \ "my_cmd {} | gzip > {}.gz" ::: $(seq 1 32)

这里是主要问题:

    是否缺少可以使工作分配更加平等的选项?
  • 这里是另一个相关问题:

      是否可以通过每台服务器指定--memfree--load等?特别是--memfree
  • gnu-parallel
    1个回答
    0
    投票
    我记得GNU Parallel用来“从一端”填充作业槽。如果您的作业多于作业位,那么这没关系:所有作业位(本地和远程)都将填满。

    但是,如果您的工作量较少,这很重要。因此它进行了更改,因此GNU Parallel今天以循环方式向sshlogins提供了作业-从而更均匀地传播它。

    很遗憾,我不记得此更改是在哪个版本上进行的。但是您可以通过运行以下命令来确定您是否进行了版本控制:

    parallel -vv -t

    并查看正在使用哪个sshlogin。

    Re:--memlimit

    您可以使用--limit建立自己的游戏。

    我很好奇,为什么要对不同的服务器使用不同的限制。 --memlimit的思想是将其设置为单个作业占用的RAM数量。因此,如果有足够的RAM用于单个作业,则无论服务器如何,都应启动一个新作业。

    您显然还有另一种情况,所以请解释一下。

    重新:升级

    查看parallel --embed

    © www.soinside.com 2019 - 2024. All rights reserved.