WIP: add jobtap plugin for preemption #6580
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a first cut at a jobtap plugin that dispatches preemptible jobs when there is job pressure from non-preemptible jobs, as discussed in #6524. It handles
preemptible-after > 0
and doesn't preempt jobs in queues that don't have pressure.That's about the extent of its smarts!
There's a comment at the top of the plugin that explains how it works, but the quick summary is that there are currently two "handlers" that are invoked periodically while there are potential victims and job pressure. If the
overkill
handler is selected, it kills all eligible victims in one go. If theonekill
handler is selected, it kills one random victim, then waits a while and tries again if there is still pressure.This is a WIP because probably we'll need another handler that's smart about node counts, and because testing doesn't cover queues yet. I was reaching a quitting point for the weekend and wanted to get this up.