Phil Ewels
05/05/2026, 12:05 PMEvangelos Karatzas
05/05/2026, 12:11 PMPhil Ewels
05/05/2026, 12:13 PMFelix Krueger
05/05/2026, 12:14 PMPhil Ewels
05/05/2026, 12:14 PMJonathan Manning
05/05/2026, 12:14 PMKevin Brockers
05/05/2026, 12:30 PMFelix Krueger
05/05/2026, 12:34 PMJonathan Manning
05/05/2026, 12:36 PMFelix Krueger
05/05/2026, 12:39 PMdev (~30M PE per sample):Jonathan Manning
05/05/2026, 12:48 PMJonathan Manning
05/05/2026, 12:51 PMFelix Krueger
05/05/2026, 2:10 PM--cores 8,(rna-seq default), which uses:
• ~12 CPUs
• ~100MB of RAM
• with roughly 20M read pairs per minute
Please note that the threading model for parallel runs is N+4, so using --cores 2 uses 6 cores, while --cored 8 uses 12 cores.
Using --cores 2 is still good time wise, but the wall clock time can be reduced by a further 75% by using 12 CPUs (--coreds 8).Jonathan Manning
05/05/2026, 2:14 PMFelix Krueger
05/05/2026, 2:17 PM--cores 2 would require 6CPU?Jonathan Manning
05/05/2026, 2:19 PMPhil Ewels
05/05/2026, 2:49 PMPhil Ewels
05/05/2026, 2:49 PM--cores? So that the number specified on the CLI is actually the number that it'll use?Felix Krueger
05/05/2026, 2:54 PMOxidized Edition --cores N thread breakdown:
N worker threads (each: trim + gzip compress -> independent gzip block)
2 decompression threads (one per input file)
1 batcher thread (creates numbered batches of 4096 reads)
1 main thread (collects blocks in order -> writes to output files)
= N+4 total
to me, --cores 2 is 2x as fast, --cores 4 is 4x as fast, --cores 8 is 8x as fast. That kind of works. Adding the 4 overhead threads kind of breaks this logic (but comes at the expense that label low doesn’t quite work…
to be honest to me this is a pipeline setting, and not a TG setting: set it once, done.Felix Krueger
05/05/2026, 2:56 PMmemory 1.GB
time 1h
cpus 12
should pretty much always work, but still be subject to retry logic (which I am sure won’t be necessary).
Maybe it’s time for a label rust, that is low time/memory but higher CPU?Felix Krueger
05/05/2026, 3:01 PM--cores 1, the worker-pool is bypassed entirely: a single thread does everything with zero parallelism overhead (1 thread, 5 MB RAM). The infrastructure cost only applies from --cores 2 upward, where each additional core adds exactly 1 thread and ~10 MB of memory.Jonathan Manning
05/05/2026, 3:06 PMPhil Ewels
05/05/2026, 3:36 PM--cores should specify how many cores will be used 👀Felix Krueger
05/05/2026, 3:36 PMprocess_high has the correct amount of CPUs for maximum performance, but it asks for 720 times (!) more memory than is needed. I see 4 options, in terms of usefulness:
1. introduce a new label for memory and time efficient tools (such as fastqc-rust, trim-galore) but have decent CPU parallelisation required for maxing efficiency and reduction in wall clock time (see above). This is what I would expect as the default as a user
2. do not assign a ‘label’ to the Trim Galore module at all, but move cpus = { 12 * task.attempt }, memory = { 1.GB * task.attempt }etc. into the module instead. This bypasses adding a new general label to base config but still be optimal for the tool in question. This is equivalent to 1 in that it is optimised, but kind of goes against the old base config rules)
3. keep process_high but ask folks to each add a new config (or use groundswell) to ask for 700 times less memory). Burdensome and goes against the assumption that default == good default
4. keep process_low but accept that --cores 2 uses 6 CPUs, and thus overcommit the node dramatically. Not desirablePhil Ewels
05/05/2026, 3:37 PMconfig.cores = cli.cores - 4 if needed? Easier to handle that logic internal to the tool rather than putting it onto the end user to figure outFelix Krueger
05/05/2026, 3:40 PMJonathan Manning
05/05/2026, 4:05 PMFelix Krueger
05/05/2026, 4:09 PM--process_high as this is most efficient setting. RAM can’t cost all that much? (overpaying >> over-commiting?)Jonathan Manning
05/05/2026, 4:12 PMJonathan Manning
05/05/2026, 4:14 PMFelix Krueger
05/05/2026, 4:15 PMPhil Ewels
05/05/2026, 4:16 PMprocess_low_memory label 🤔Phil Ewels
05/05/2026, 4:16 PMprocess_high_memory alreadyFelix Krueger
05/05/2026, 4:46 PMprocess_high followed by process_low_memory would do the trick just fineMatthias Zepper
05/05/2026, 4:51 PMJonathan Manning
05/05/2026, 6:39 PMAngel Pizarro
05/16/2026, 1:35 PM