-
Notifications
You must be signed in to change notification settings - Fork 719
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue with markDuplicates: java.io.IOException: No space left on device #82
Comments
The error Not sure how Singularity handles the |
Hi @demilappa, As @pditommaso says - Are you using If you could paste the command you're using to launch the pipeline, also the Singularity script you're using to mount the relevant directories, that would be helpful. In the last release, we added options to skip various QC steps. After reading your issue I realise that MarkDuplicates was missed here - I've just fixed that in the Phil |
Hi @pditommaso , @ewels You are correct in assuming that I am using
files, I am specifying the parameters the required memory for markduplicates process {
executor = 'slurm'
clusterOptions = { "-A $params.project ${params.clusterOptions ?: ''}" }
/* The Hebbe scheduler fails if you try to request an amount of memory for a job */
$markDuplicates.memory = 6.GB
} This way the scheduler does not crush! Recipe to mount Singularity image:
Command to launch the pipeline:nextflow run nf-core/RNAseq \
-r 1.0 \
-with-singularity "/c3se/NOBACKUP/groups/c3-c3se605-15-5/BARIA_RNASeq/C101HW18060480/Pipeline/nfcore-rnaseq-1.4.simg" \
-c "/c3se/NOBACKUP/groups/c3-c3se605-15-5/BARIA_RNASeq/C101HW18060480/Pipeline/config_TEMPLATE" \
-profile hebbe \
-with-dag flowchart.pdf \
--project C3SE2018-1-20 \
--genome 'GRCh38' \
--reads "/c3se/NOBACKUP/groups/c3-c3se605-15-5/BARIA_RNASeq/C101HW18060480/Pipeline/*{1,2}.fq.gz" \
--outdir "/c3se/NOBACKUP/groups/c3-c3se605-15-5/BARIA_RNASeq/C101HW18060480/Pipeline/results" \
-resume From the nextflow log I found this: nxf_mktemp() {
local base=${1:-/tmp}
if [[ $(uname) = Darwin ]]; then mktemp -d $base/nxf.XXXXXXXXXX
else TMPDIR="$base" mktemp -d -t nxf.XXXXXXXXXX
fi
} and this: set +u; env - PATH="$PATH" SINGULARITYENV_TMP="$TMP" SINGULARITYENV_TMPDIR="$TMPDIR" and I have set the Great to know that you have now made it possible to skip MarkDuplicates, by using the |
Great! Thanks for the details. I've reformatted what you've written a little so that it was easier for me to read (eg. making the nextflow command multi-line), hope that's ok. Picard memory
I'm a bit confused by this. You say you need to add this line to stop it from crashing. But in that line, you are requesting an amount of memory for a job, which is the opposite of what the comment line says. Nextflow commandMinor thing: nextflow handles relative paths fine. Not sure if this is not an option for some reason, but this may be easier: #!/usr/bin/env bash
cd /c3se/NOBACKUP/groups/c3-c3se605-15-5/BARIA_RNASeq/C101HW18060480/Pipeline/
nextflow run nf-core/RNAseq \
-r 1.0 \
-with-singularity nfcore-rnaseq-1.4.simg \
-c config_TEMPLATE \
-profile hebbe \
-with-dag flowchart.pdf \
--project C3SE2018-1-20 \
--genome 'GRCh38' \
--reads "*{1,2}.fq.gz" \
-resume
The filename TMPDIR stuff
I'm not sure which sbatch script you mean here.. Do you mean the scripts generated by nextflow within the work directory? They are dynamically generated so any edits you use after they are created won't be used in later runs. Or do you mean that you're launching the main nextflow command within an sbatch command? |
Thank you for your input @ewels . Just a few things: Picard memoryJust to make it clear, I am not editing anything in the When I launched the pipeline without specifying anything as a memory requirement the pipeline crashed as well, just with a different So when I added this parameter, at least it was able to run the markduplicates command. Now it exits with Nextflow commandThanks for your suggestion on handling relative paths. the TMPDIR stuff
Exactly before the execution of the nextflow command I export this: so I switch the default |
Hi again!
Now the pipeline cannot properly launch. I get an error for trim_galore:
My command for launching the pipeline is the same as before:
Looks like the memory allocation for trim_galore is problematic in this branch. |
Please can you paste the contents (or at least the header) of the The hebbe profile should disable any memory requests for this task (see config). So it should be requesting only 2 cores. I updated the syntax in the If the sbatch config is wrong then that's something we can fix in the pipeline. If not, then we may need to contact your sysadmins for help as it sounds system-specific. |
Ah - what version of nextflow are you using? |
I can see it is allocating 2 cores (1/10th of a node) but I don't get why it would want to allocate the entire node's memory for trim_galore ( So I am attaching my command.run file here: |
@pditommaso - any ideas what's happening here? Context:
Previously, with the older syntax |
@demilappa - sorry, I think my follow up question was missed: what version of nextflow are you using? |
@ewels Nextflow version:
|
Because the syntax is wrong. It should be Also you should be able to replace this block with |
@pditommaso
the pipeline was able to continue launching |
Always same |
Ok great, so @demilappa - great the pipeline is now launching properly! Let's see how far we get in the execution before the next error 😆 |
Closing this for now - feel free to open a new issue if you have more difficulties :) |
Even though the issue was closed, the original question remains:
Line 16 in df3a671
The default value for cpu allocation is 1/10th. The C3SE docs say that |
Possibly.. @demilappa are you still getting this error? I mostly closed the issue because it went quiet.. 😀 |
@ewels I still get this error when running the pipeline. |
Not sure if I get this error when starting the pipeline with version 1.1
I updated to nextflow 18.10.1 before trying the 1.1 version of the pipeline |
The code is correct, i.e. |
Hi @demilappa, did you ever manage to get markduplicates to run?
I used the default disk $TMPDIR, i.e. I did not define it myself (when I tried that I used up the entire file quota, oops), and ran the job on the 512 GB RAM node using all 20 cores. Hope this helps, |
Could you give it another try? We adjusted several things in the latest release that made it more stable with other datasets so hopefully that could also resolve your issues here #179 |
Hi @apeltzer ! |
Awesome - then I'll close this issue and you just reopen if that is required 👍 |
Thanks for the feedback 👍 |
Hi @apeltzer just some more info that might be useful to you on this markDuplicates java memory issue. I had two separate errors.
I had to adjust the java max mem to -8GB less than the markDuplicates $task.memory to avoid memory allocation errors. In addition I had to add the option |
Hi @kviljoen ! 1.) Hm, actually this line here: Line 871 in 37f260d
Check whether we have more than 8GB of memory on the system, to set it to the default value in the If I look at your code:
Will set the options to the default of 2.) I think adding the |
Hi @apeltzer thanks for your reply! Ah I see now why you did that, for systems with very limited memory? But on our system that line gave an error unfortunately as it limits to < 8GB? My task.memory=32GB and task.cpus=8 and from the pipeline execution report the % requested CPUs was median 82.5 and % requested memory use was 97% The settings I have at the moment won't work for everyone but it just illustrates that the memory specification in certain instances will need some tweaking. Will do a PR for 2). |
Yes, the idea was to not fail on systems with less than 8GB of memory. For every system with > 8GB memory, it will anyways use the default values specified in the Do you have an idea what you specified for getting this error here?
|
Hi @apeltzer, I think I'm maybe not understanding that line of code?
I thought it was saying: If the task.memory specified in the base.config is > 8GB use the options specified in params.markdup_java_options, else use task.memory - 1 ? In which case it can never specify more than 8GB, bacause default is 7GB? |
That is precisely what this does. We double checked in the production pipelines at the GATK teams CWL repository for example and found that even if their processing systems have more than 8GB of memory they always default to the setting specified in the Yes, that means the process can never use more than 8GB, which is fine since it will anyways submit with this information to a cluster scheduler, thus making sure multiple jobs can run on that instance/node anyways. |
Hi all!
I am running nfcore/rnaseq on Hebbe Cluster using singularity to pull. The .simg was created to include all the relevant dirs mounted using a recipe.
I have set
NXF_OPTS='-Xms1g -Xmx6g'
in my bash profile and I have also changed the input parameters for markduplicates to$markDuplicates.memory = 6.GB
. This is because only 2 out of 20 cores are allocated by the pipeline and RAM is proportional, and the default 3GB was insufficient - the pipeline was crashing.Even though I have set my
$TMPDIR
directory to have a lot of available space, I still get the error frommarkduplicates
. Whatever this dir is it always saysno space left on device
from thejava.io.IOException
.Any idea how I can get this pipeline to finish even without
markDuplicates
? I can provide all logs and .command files from the workdir.The text was updated successfully, but these errors were encountered: