-
Notifications
You must be signed in to change notification settings - Fork 23
Resolver
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.
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).