Skip to content

RFC Stage 3: Restructure pipeline resource labels into orthogonal CPU / memory / time axes#140

Open
pinin4fjords wants to merge 4 commits into
nf-core:mainfrom
pinin4fjords:139-process-axis-labels
Open

RFC Stage 3: Restructure pipeline resource labels into orthogonal CPU / memory / time axes#140
pinin4fjords wants to merge 4 commits into
nf-core:mainfrom
pinin4fjords:139-process-axis-labels

Conversation

@pinin4fjords
Copy link
Copy Markdown
Member

Summary

Stage 3 RFC for the resource-label restructure approved at #139 (10/10, 2026-05-13).

Replaces the bundled labels (process_low, process_medium, process_high, process_long, process_high_memory) with three orthogonal axes (process_cpus_*, process_mem_*, process_time_*) that are mixed and matched per process, with a documented deprecation path for the existing labels.

Companion implementation PRs

The RFC is intended to be merged once both companion PRs are ready for review and the open questions in the RFC body have been resolved.

Test plan

  • Reviewers confirm the legacy → axis mapping table in the RFC matches their expectations (the process_low → process_mem_medium row is the most opinionated call).
  • Reviewers confirm the default tier values in base.config are acceptable, or propose alternatives.
  • Reviewers weigh in on the open questions section (bulk-PR granularity, site-config tooling, error_*/process_gpu interactions).

… / memory / time axes

Implements stage 3 of nf-core#139 (approved 2026-05-13).

Companion implementation:
- nf-core/tools#4265 (template change)
- nf-core/website#4212 (documentation)

[skip ci]
The /docs/contributing/migrating-resource-labels URL 404s until
nf-core/website#4212 is merged, so point reviewers at the draft PR
instead.

[skip ci]

The current label set was designed to be simple and to "just work" out of the box, with users expected to override values in their own configs. In practice:

- There is no way to express "many CPUs but little memory". Authors either pick `process_high` (which over-allocates memory by a large factor) or stack `process_high_memory` on top of `process_medium`, which is undocumented and counter-intuitive.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The second half is weird. Why would someone stick the process_high_memory label onto a process that needs "many CPUS but little memory" ?
Did you mean "little CPUs but high memory ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, fixed!

pinin4fjords and others added 2 commits May 14, 2026 10:06
…rd cases [skip ci]

Address @muffato review feedback: the original bullet conflated "many CPUs,
little memory" (no clean expression) with the workaround for the reverse case
(stacking process_high_memory on process_medium). Now phrased as two bullets.

Also tidy the ad-hoc-labels examples: scnanoseq's process_high_memory matches
the template default, so that case is stacking, not inventing. Only
genomeassembler's process_high_cpu is a true invention.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…kip ci]

The previous parenthetical ("later labels win, definition order matters") was
ambiguous - it could be read as "the last label on the process wins". Spell
out that precedence is controlled by the order of withLabel: blocks in
base.config, not by the order labels are declared on the process.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants