我有一系列需要完成的工作;工作之间没有依赖关系。我正在寻找一种能够帮助我将这些工作分配给机器的工具。唯一的限制是每台机器只能一次运行一项作业。我试图最大化吞吐量,因为这些工作不是很平衡。我目前黑客一起使用shell脚本的效率并不高,因为我预先构建了每台计算机的作业队列,并且无法将作业从负载较重的计算机的队列移动到正在等待的计算机,并且已经完成了所有工作。小规模负载均衡
以前的建议已经包括SLURM,这似乎是过度杀伤,甚至更多矫枉过正LoadLeveller。
GNU Parallel看起来像我想要的,但远程机器不会说SSH;有一个自定义的作业启动器(没有排队功能)。我想要的是Gnu Parallel,它可以在工作分派之前立即将机器替换为shell脚本。
因此,简言之:
- 机器可以接受的作业+目录的列表:最大限度地提高吞吐量。尽可能接近壳体是首选。
最糟糕的情况可以用bash的lockfile破解一些东西,但我觉得好像更好的解决方案必须存在某处。
你有没有考虑使用壳内置作业?类似while#jobs> = maxjobs sleep .1;命令& – technosaurus