Snakemake:如何在群集模式中最好地辨别各种类型的节点故障?

时间:2018-05-02 22:27:54

标签: snakemake

在Snakemake中,据我所知,我们只能根据作业的尝试次数动态调整作业资源。在尝试在失败后重新调整资源时,从以下类型的群集故障中辨别是有用的:

  1. 程序错误
  2. 瞬态节点故障
  3. 内存不足
  4. 超时
  5. 最后3种情况特别是通过不同的作业完成状态代码向SLURM用户公开。状态脚本的snakemake接口将所有类型的故障合并为单个“失败”状态。

    有没有办法这样做?或者这是一个计划的功能?保留以前失败原因的列表,而不仅仅是attempts计数将是最有用的。

    e.g。目标:

    rule foo:
        resources:
            mem_gb=lambda wildcards, attempts: 100  + (20*attempts.OOM)
            time_s=lambda wildcards, attempts: 3600 + (3600*attemps.TIMEOUT)
        ...
    

    我可以访问的集群具有异构机器,其中每个节点都配置了不同的壁挂时间和内存限制,如果我不必一次保守地阻止所有资源,它将最大限度地缩短调度时间。

    可能的解决方法:我想到了跟踪作业状态脚本和集群提交脚本之间的额外信息(例如,保留每个jobid的状态代码历史记录)。尝试#是否可用于群集提交和群集状态命令?

1 个答案:

答案 0 :(得分:0)

我认为最好在配置文件中处理此类群集特定功能,例如在slurm profile。检测到错误时,状态脚本可以根据slurm报告的内容以静默方式重新提交更新的资源。我不认为Snakefile必须与这些平台细节混杂在一起。