Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Pipeline resources

Each process should be assigned a specific amount of RAM, processors and execution time. There is no one size fits all per se, but a good strategy to begin is requesting more resources than you think you will need, and then reduce as needed.

There are multiple resource tiers defined in conf/base.config and each module is assigned one of these tiers. You may update these tiers if you wish to modify resources broadly. The resources are described as follows:

Resource Description
time The amount of time the process should use. After surpassing this time, the job will timeout.
cpus The number of cores to use. A core is a processing unit that executes commands in code. Cores are crucial for parallel processing.
penv The parallel environment to use. You will generally never need to change this value.
memory The amount of memory to use for the process

If you look you will notice that each process is assigned different resources:

For example bwa_align is one of the more memory intensive processes and uses 8 cpus, 16 GB of memory, and up to 24 hours. If a task attempt fails, the resources are increased.

 withName:bwa_align {
        cpus = { check_max( 8 * task.attempt, 'cpus') }
        memory = { check_max( 16.GB * task.attempt, 'memory' ) }
        time = { check_max( 24.h * task.attempt, 'time') }    
    }