Skip to content

Resolver

Andre Merzky edited this page Oct 6, 2021 · 1 revision

Problem

The RP agent scheduler is becoming increasingly complex due to it's support for different tags. Tags are used to specify scheduler constraints, for example

  • to get tasks placed together on the same node
  • to ensure that tasks get placed on different nodes
  • to get tasks scheduled in a certain order
  • to get tasks scheduled at the same time / not at the same time

Several of those tags require tasks to be held back until some condition is fulfilled, and to only then actually schedule them with the given constraints. The code to handle these complexities interferes with the actual scheduling code.

Proposal

Ass a new component Resolver and a new state Resolving which externalizes most of this semantics. That component will receive tasks and will ensure that only tasks which are actually eligible to be scheduled get forwarded to the scheduler. The component will also ensure that scheduling constraints are communicated in a way the scheduler can easily interpret and act upon (not on nodes A or B, specifically on nodes C and D, these to tasks together / separate etc.

The component could also provide some generic dependency resolution, offloading DAG unrolling from the client side (at least for static DAGs).

Clone this wiki locally