Skip to content

RFC: Range-based capability matching for amount requirements #134

Description

@oehmends

Description

The OpenJD specification defines the data model for step amount requirements (<AmountRequirement> with min/max) and worker capabilities, but does not define how scheduling systems should match requirements against hosts or fleets that advertise a range of capabilities (e.g., vCPU min–max).

This gap has led to implementations that match only against the lower bound of a capability range. For example, a fleet configured with vCPU range 64–128 is rejected for a step requiring 96 vCPUs, because the check compares 96 against the fleet minimum (64) rather than the fleet maximum (128).

This forces users into one of two bad workarounds:

  1. Fleet proliferation — Create separate fleets for each vCPU/memory tier (64, 96, 128), each requiring its own service quotas, monitoring, and configuration.
  2. Over-provisioning — Set the fleet minimum to the highest value any job might need, wasting resources on smaller jobs.

Both defeat the purpose of flexible fleet sizing and increase operational overhead.

This RFC proposes normative language defining that a fleet with capability range [C_min, C_max] should be considered compatible with a step requirement if there exists any value in the fleet's range that satisfies the requirement. In practice: the fleet's maximum determines whether it can meet the step's minimum requirement.

Roles

Role User
Proposed By @oehmends
Author(s) @oehmends

Workflow

  • Tracking issue created (label: rfc/proposed)
  • RFC pull request submitted and ready for discussion (label: rfc/exploring)
  • Last call for comments (labels: rfc/exploring and rfc/final-comments)
  • Accepted and merged RFC pull request (label: rfc/accepted-future)
  • Green-light for inclusion in a draft specification, and the author is creating and iterating on pull requests (label: rfc/accepted-draft)
  • Pull requests are merged in to a draft specification (label: rfc/accepted-staged)
  • Officially published in a non-draft revision of the specification (label: rfc/released)

Please close this tracking issue when the proposal enters the Released stage of the process.

Open Points

  • Should the spec define matching semantics only for amount capabilities, or also extend to attribute capabilities with range-like semantics?
  • Should the spec mandate a specific instance selection strategy (e.g., smallest sufficient), or leave that as an implementation detail?

The author is responsible to progress the RFC according to this checklist, and
apply the relevant labels to this issue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions