使用 slurm 提交大量工作的最佳实践
Best practices to submit a huge numer of jobs with slurm
我需要向我们的集群提交数千个作业。每项工作大约需要六个小时才能完成。如果我使用所有可用资源,这将需要大约一周的时间。理论上我可以这样做,但我会阻止所有其他用户一周。所以这不是一个选项。
我有两个可能解决问题的想法:
- 创建数组作业并限制 运行 个作业的最大数量。我不喜欢这个选项,因为经常(晚上、周末等)没有人使用集群,我的工作不能使用这些未使用的资源。
- 一次提交所有作业,但以某种方式将每个作业的优先级设置得非常低。理想情况下,任何人仍然可以使用集群,因为当他们提交作业时,他们会比我的更快开始。我不知道这在 slurm 中是否可行,我是否有权这样做。
有没有我缺少的 slurm 机制?是否可以如上所述设置 slurm 作业的优先级,我是否有权这样做?
通常这是集群管理问题。他们应该以一种优先考虑短期和小型作业而不是大型和大型作业的方式配置集群 and/or 防止某些节点上的大型作业 运行。
但是,作为非管理员,您也可以使用 nice factor 选项手动降低工作的优先级(更高 -> 更低优先级):
sbatch --nice=POSITIVE_NUMBER script.sh
我需要向我们的集群提交数千个作业。每项工作大约需要六个小时才能完成。如果我使用所有可用资源,这将需要大约一周的时间。理论上我可以这样做,但我会阻止所有其他用户一周。所以这不是一个选项。
我有两个可能解决问题的想法:
- 创建数组作业并限制 运行 个作业的最大数量。我不喜欢这个选项,因为经常(晚上、周末等)没有人使用集群,我的工作不能使用这些未使用的资源。
- 一次提交所有作业,但以某种方式将每个作业的优先级设置得非常低。理想情况下,任何人仍然可以使用集群,因为当他们提交作业时,他们会比我的更快开始。我不知道这在 slurm 中是否可行,我是否有权这样做。
有没有我缺少的 slurm 机制?是否可以如上所述设置 slurm 作业的优先级,我是否有权这样做?
通常这是集群管理问题。他们应该以一种优先考虑短期和小型作业而不是大型和大型作业的方式配置集群 and/or 防止某些节点上的大型作业 运行。
但是,作为非管理员,您也可以使用 nice factor 选项手动降低工作的优先级(更高 -> 更低优先级):
sbatch --nice=POSITIVE_NUMBER script.sh