我有一系列的工作需要完成;作业之间没有依赖关系。我正在寻找一种工具来帮助我将这些工作分配给机器。唯一的限制是每台机器一次只能运行一个作业。我正在尝试最大化吞吐量,因为工作不是很平衡。由于我预先构建了每台机器的作业队列,我目前的组合 shell 脚本效率较低,并且无法将作业从负载繁重的机器的队列移动到正在等待的机器,已经完成了所有工作。
以前的建议包括 SLURM,这看起来有点过分,甚至更过分的 LoadLeveller。
GNU Parallel 看起来几乎正是我想要的,但是远程机器不支持 SSH;使用了一个自定义作业启动器(没有排队功能)。我想要的是 Gnu Parallel,其中机器可以在调度作业之前动态替换为 shell 脚本。
所以,总结一下:
- 作业列表+可以接受的机器列表:最大化吞吐量。尽可能靠近外壳是首选。
在最坏的情况下,某些东西可以与 bash 的锁定文件一起被破解,但我觉得好像在某个地方必须存在更好的解决方案。