在Snakemake中,我有5个规则,对于每个规则,我通过resources mem_mb
选项设置内存限制。
所以它看起来像这样:
rule assembly:
input:
file1 = os.path.join(MAIN_DIR, "1.txt"), \
file2 = os.path.join(MAIN_DIR, "2.txt"), \
file3 = os.path.join(MAIN_DIR, "3.txt")
output:
foldr = dir, \
file4 = os.path.join(dir, "A.png"), \
file5 = os.path.join(dir, "A.tsv")
resources:
mem_mb=100000
shell:
" pythonscript.py -i {input.file1} -v {input.file2} -q {input.file3} --cores 5 -o {output.foldr} "
但我想要的是通过做某事来限制整个Snakefile的内存使用:
snakamake --snakefile mysnakefile_snakefile --resources mem_mb=100000
因此,并非所有作业都会使用100GB
(如果我有5条规则,即500GB
内存分配),但所有作业都将最大100GB
(5个作业,总共100 GB
分配?)
答案 0 :(得分:2)
命令行参数设置总限制。 Snakemake调度程序将确保对于一组正在运行的作业,mem_mb
资源的总和不会超过总限制。
我认为这正是你想要的,不是吗?您只需要在规则本身中设置每个作业的预期内存。请注意,Snakemake不会为您量身定制。您必须在规则中自己定义该值。例如,如果您希望您的作业使用100MB内存,请将mem_mb=100
放入该规则中。