Slurm 的后处理队列

问题描述 投票:0回答:1

我的问题不是直接与 SLURM 相关,而是关于如何围绕它组织工作。 我可以将提交给 SLURM 的作业类型总结为两类:属于流程一部分且其结果将由后续步骤使用的作业以及其结果必须手动修改或处理的作业。 可以自动处理的结果并不是真正的问题,任何错误检查也可以自动执行。 对于需要我手动验证的结果,但我总是担心忘记其中的一些结果。这是一个问题,尤其是当我发送大量长时间运行的作业并且作业的完成可能需要几天的时间时。 如果在所有结果完成后(如果没有失败)进行修改所有结果是相当容易的,但是我经常必须在作业结束时逐渐修改结果或重新提交一些失败的作业。 这会带来很高的在此过程中引入手动错误的风险,因为我很容易忘记处理某些结果或重新提交一些失败的作业。

我想要一个简单的方法来提醒我所有已完成且需要修改的作业,以及所有失败且应重新提交的作业的列表。 我考虑了一些方法,其中一些我已经测试过并且正在使用。它们都不是完美的,我正在考虑编写一个自定义软件来管理我的这个要求。我问这个问题是为了看看是否已经存在任何替代解决方案。

我已经确定了三种解决方案:

  1. 提交作业时,将作业 ID 添加到需要处理的作业文档中

    • 所有职位都可以在列表中找到
    • 列表创建过程可以自动化
    • 可以指定并轻松检索作业目录
    • 每次都要手动检查列表中的所有作业,比较麻烦
  2. 让作业在完成或失败时将其提交到文档中

    • 列表中仅显示需要处理的作业
    • 列表自动创建
    • 可以自定义方式指定作业目录(对于作业数组很有用)
    • 每个作业提交脚本都必须为此集成一些自定义逻辑
  3. 使用 sacct 命令和 workdir 输出参数

    • 不创建自定义文件
    • 该列表包含所有最近的工作
    • 如果您在作业中更改目录,工作目录可能会不准确
    • 您无法从输出中过滤已处理的结果
    • 如果您有积压的工作,并且说您必须处理几周前完成的工作,这可能会出现问题

所有这些解决方案实施起来都相当简单,但每个都有其自身的缺点。您知道在这些情况下可以使用任何其他解决方案并且会带来更好的结果吗?

workflow slurm hpc organization
1个回答
0
投票

有多种工具可以帮助管理工作,您可以在本文档这些视频中查看其中一些工具,尽管我不确定它们是否旨在应对手动干预。

我考虑的解决方案涉及使用

comment
工作领域。您可以使用
--coment="Initial comment"
提交带有初始评论的作业,然后在提交脚本的最后一行添加命令:

scontrol update jobid=$SLURM_JOB_ID comment="Ready for review"

然后您可以使用 列出所有 正在运行和挂起

作业的评论
squeue --me --Format jobid,state,comment

并且,如果 Slurm 配置为

AccountingStoreFlags=job_comment
,当作业 完成 时,则为

sacct -X --user $USER --format jobid,state,comment

查看作业输出后,您可以使用以下命令更改其在 Slurm 数据库中的注释:

sacctmgr modify job jobid=XXXXXX set comment="Reviewed-OK"

sacctmgr modify job jobid=XXXXXX set comment="Reviewed-tofix"
然后,也许

sacctmgr modify job jobid=XXXXXX set comment="Reviewed-fixed"
这样,您就可以根据需要对其执行的手动操作来标记作业。

© www.soinside.com 2019 - 2024. All rights reserved.