-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Jobspecs with flexible resource types #1259
Comments
An example job spec with
When running a match allocate on this against tiny.graphml we get:
|
opened PR #1296 for this feature |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This features would allow jobespecs to specify multiple possible resource configurations and allow the scheduler to select configurations based what's available or what is best.
I've tested implementing this feature in the traverser by adding a new slot type, an
or_slot
with the intention here being there are multiple possible configurations and the scheduler can select any combination based on what's available.Implementing a prototype of this in the traverser consisted of adding handling for the
or_slot
much like howslot
is handled indfu_impl_t::match
anddfu_impl_t::test
except by allowing for multiple resource types ofor_slot
to be specified. I also added a new functiondfu_impl_t::dom_or_slot
that behaves similarly todfu_impl_t::dom_slot
. A few key differences are that it will traverse the rest of the resource graph and job spec on the union of all resources specified under all of the or_slots. This is to ensure that we get proper counts. Then determine the best configurations of theor_slot
options. Then create the edge groups for those or slot options. You can find the branch of this prototype here: https://github.com/zekemorton/flux-sched/tree/resource-or. The lates commit shows an example where the optimal configuration is selected using dynamic programing, but easier commits show how it was implemented with greedy selection.This leaves me with some open questions that I would like to discuss with the larger group:
Is implementing this in the traverser an appropriate place for this kind of functionality? What are some other options?
What are kinds of logical operators for this kind of flexibility?
What are different means that we can select the desired configuration? Will this be a whole new set of policies?
The text was updated successfully, but these errors were encountered: