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

Parallel processing GNU并行:延迟发送到远程服务器的第一个作业,parallel-processing,gnu-parallel,Parallel Processing,Gnu Parallel,我有一个gnu并行脚本,它将数据(100000个作业分配到100个远程服务器)导入到中央数据库中。第一批工作正在猛烈抨击中央数据库,因为它们几乎同时完成。之后的工作最终会分散开来,不要试图同时导入所有的工作 有没有办法延迟每个远程服务器第一个作业的执行?因此,脚本可以说“现在将进程1运行到服务器1,在5秒内将进程2运行到服务器2,在10秒内将进程3运行到服务器3,在20秒内将进程4运行到服务器4,…”。在第一批被发送到每个服务器之后,我希望其他进程尽快运行 是否有用于此的参数?--2012122

我有一个gnu并行脚本,它将数据(100000个作业分配到100个远程服务器)导入到中央数据库中。第一批工作正在猛烈抨击中央数据库,因为它们几乎同时完成。之后的工作最终会分散开来,不要试图同时导入所有的工作

有没有办法延迟每个远程服务器第一个作业的执行?因此,脚本可以说“现在将进程1运行到服务器1,在5秒内将进程2运行到服务器2,在10秒内将进程3运行到服务器3,在20秒内将进程4运行到服务器4,…”。在第一批被发送到每个服务器之后,我希望其他进程尽快运行

是否有用于此的参数?

--20121222版的延迟和20130122版的
--sshdelay

=编辑=

--延迟是从作业开始时开始测量的,因此如果作业的运行时间超过延迟*作业槽(例如,在您的示例中为100台服务器*5秒),则您会感觉在第一批之后没有延迟

比较:

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

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

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

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

其中,100是第一批的大小。

这是否会延迟所有作业,而不仅仅是发送到远程服务器的第一批作业?
parallel 'if [ {#} -lt 100 ] ; then sleep {#} ; fi; do_stuff {}'