diff --git a/.changeset/fix-mmseqs2-memory-headroom.md b/.changeset/fix-mmseqs2-memory-headroom.md new file mode 100644 index 0000000..c4437c4 --- /dev/null +++ b/.changeset/fix-mmseqs2-memory-headroom.md @@ -0,0 +1,5 @@ +--- +'@platforma-open/milaboratories.clonotype-clustering.workflow': patch +--- + +Reduce MMseqs2 --split-memory-limit from 80% to 60% of system RAM to prevent OOM kills diff --git a/workflow/src/clustering.tpl.tengo b/workflow/src/clustering.tpl.tengo index 973b060..a768831 100644 --- a/workflow/src/clustering.tpl.tengo +++ b/workflow/src/clustering.tpl.tengo @@ -126,7 +126,10 @@ self.body(func(inputs) { run() // get split memory limit based on real system ram - memLimit := "{int(ceil(system.ram.gb * 0.8))}" + "G" + // --split-memory-limit controls only the prefilter database splitting; + // actual peak usage is ~125% of this value, plus uncontrolled memory + // from clustering and alignment steps; 60% leaves headroom for all of that + memLimit := "{int(max(system.ram.gb*60/100,1))}" + "G" mem := "32GiB" // @TODO: set based on the size of the input cpu := 16