Open Overcraft90 opened 1 year ago
I'm not a Cromwell dev, but I've dealt with this quite a lot, so I have some experience here...
When resource issues happen on local-Cromwell, it is usually due to scattered tasks either all running at once (which is the default behavior), or, if they're running one-at-a-time, things getting stuck. But none of your tasks are scattered, so the usual easy fixes don't apply.
Unfortunately, Cromwell ignores most of your runtime arguments when running in "local mode" including memory, cpu, and disk size. This isn't something you can configure, it just doesn't know how to handle them. You'll see warnings to that effect when the tasks launch, eg:
[2022-12-13 12:11:22,26] [warn] LocalExample [5aba40a5]: Key/s [preemptible, disks, cpu, memory] is/are not supported by backend. Unsupported attributes will not be part of job executions.
One thing you can try doing to get around this is to make sure Docker is getting as much memory as you can give it. If you're using Docker Desktop, you can do this in Preferences > Resources, then cranking the memory slider as far to the right as you feel comfortable doing. But I do notice you're using a Linux machine, so it's probably a good idea to be using Docker Engine instead of Docker Desktop if this this issue with the Dockstore CLI, which that uses Cromwell to launch workflows, is any indication, which has a different way of configuring resources.
If you're still having issues, please post a followup -- and others, please chime in too if you have ideas. Resource usage on local runs is a bit of a persistent issue with Cromwell.
@aofarrel Thanks a lot! This actually worked just fine till I hit the memory wall of 200Gb of RAM. In fact, my Docker launches a tool invoking a Snakemake pipeline for genome inference, the fourth step of which requires 200Gb of memory.
Now, prior to your suggestion my Docker Engine
was running with 20Gb of RAM, I then pushed it to 120. This helped to go through the 3rd step of the Snakemake pipeline, requiring 100Gb of memory and where previously my WDL run was terminated, still the entire script cannot complete its execution due to memory requirement.
With that said, I might keep this issue open for a bit longer maybe someone can relate to this and, most importantly, someone without the high memory demand for the tool I'm using might actually get the job done with this simple workaround.
Are you seeing something that looks like a bug? Please attach as much information as possible. No. The job is killed because of memory limitations e.g
/bin/bash: line 1: 172 Killed
Which backend are you running? I'm running
Cromwell
on a local machine, I should have enough memory to run the process but somehow to amount visible/accessible byCromwell
is limited.Paste/Attach your workflow if possible:
Paste your configuration if possible, MAKE SURE TO OMIT PASSWORDS, TOKENS AND OTHER SENSITIVE MATERIAL:
Please help me out on how to set the resources used by Cromwell in local, what file I need to create/modify or how should I cange my code? Thanks in advance!