我正在使用GNU parallel20160222。我在~/.parallel/sshloginfile
中配置了四台服务器:
48/big1
48/big2
8/small1
8/small2
当我运行32个作业时,我希望在每个服务器上并行启动八个作业。甚至更好的是,在[[small1和small2上各两个或三个,在big1和big2上各十二个左右。但是它正在做的是在small2上开始8个工作,其余的工作在本地开始。
这是我的调用(我实际上使用了--profile
,但为简单起见,我将其删除):parallel --verbose --workdir . --sshdelay 0.2 --controlmaster --sshloginfile .. \
"my_cmd {} | gzip > {}.gz" ::: $(seq 1 32)
这里是主要问题:是否缺少可以使工作分配更加平等的选项?
--memfree
,--load
等?特别是--memfree
。 但是,如果您的工作量较少,这很重要。因此它进行了更改,因此GNU Parallel今天以循环方式向sshlogins提供了作业-从而更均匀地传播它。
很遗憾,我不记得此更改是在哪个版本上进行的。但是您可以通过运行以下命令来确定您是否进行了版本控制:
parallel -vv -t
并查看正在使用哪个sshlogin。Re:--memlimit
您可以使用
--limit
建立自己的游戏。我很好奇,为什么要对不同的服务器使用不同的限制。
--memlimit
的思想是将其设置为单个作业占用的RAM数量。因此,如果有足够的RAM用于单个作业,则无论服务器如何,都应启动一个新作业。您显然还有另一种情况,所以请解释一下。
重新:升级
查看
parallel --embed
。