GNU Parallel:延迟发送到远程服务器的第一个作业

时间:2013-05-02 05:23:59

标签: parallel-processing gnu-parallel

我有一个gnu并行脚本,可以将数据(分配给100个远程服务器的100,000个作业)导入中央数据库。第一份工作是砰击中央数据库,因为它们几乎同时完成。之后的工作最终分散开来,并且不会同时尝试导入所有工作。

有没有办法延迟每个远程服务器执行第一个作业?因此脚本可以说"现在将进程#1运行到server1,在5秒内将进程#2运行到server2,在10秒内将进程#3运行到server3,在20秒内将进程#4运行到服务器4,... 。,..."。在第一批被发送到每个服务器之后,id就像要运行的其余进程一样as。

这是否有一个参数?

1 个答案:

答案 0 :(得分:3)

来自版本20121222的

--delay和来自版本20130122的--sshdelay

=编辑=

--delay是从作业开始时开始计算的,所以如果你的作业运行时间超过延迟*作业点(例如100个服务器* 5秒),那么你会觉得好像没有延迟第一批。

比较

time parallel -S 2/: --delay 1 'sleep {};hostname' ::: 2 2

要:

time parallel -S 2/: --delay 1 'sleep {};hostname' ::: 2 2 2

第一个需要3秒,第二个4秒。

没有处理第一批的功能。你可以做的是:

parallel 'if [ {#} -lt 100 ] ; then sleep {#} ; fi; do_stuff {}'

其中100是第一批的大小。