Skip to content
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

[Feature] [Alpha] Application Priority and Preemption #5961

Open
3 of 11 tasks
RainbowMango opened this issue Dec 17, 2024 · 16 comments
Open
3 of 11 tasks

[Feature] [Alpha] Application Priority and Preemption #5961

RainbowMango opened this issue Dec 17, 2024 · 16 comments
Assignees
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Milestone

Comments

@RainbowMango
Copy link
Member

RainbowMango commented Dec 17, 2024

Summary
Currently, the karmada-scheduler operates based on a First-In-First-Out scheduling order. In some real-world scenarios, like AI training, some jobs are more critical than others and require preferential treatment in terms of scheduling and resource allocation.

We need the feature to enable users to specify the importance of an application. Applications with higher priority are scheduled ahead of other applications with lower priority. When member clusters do not have enough capacity for running a high priority application, the scheduler preempts and removes lower priority applications in order to make room for the high priority application.

Proposal:

Author:

References:

Iteration Tasks -- Part-1: Scheduling based on application priority:

Iteration Tasks -- Part-2: Preemption in case of member clusters lack of capacity:

  • API change: Introduce preemptionPolicy to ResourceBinding
  • TBD

Welcome Join us
If anyone is interested in this feature or would like to participate in its development, please leave a comment in this issue to claim the task you are interested in.

Note that this feature is still under discussion, and the listed iteration tasks might be subject to change.

@RainbowMango RainbowMango added the kind/feature Categorizes issue or PR as related to a new feature. label Dec 17, 2024
@RainbowMango RainbowMango added this to the v1.13 milestone Dec 17, 2024
@RainbowMango RainbowMango moved this to Planned In Release 1.13 in Karmada Overall Backlog Dec 17, 2024
@seanlaii
Copy link
Contributor

seanlaii commented Dec 18, 2024

Hi @RainbowMango , I can take the first two tasks first. Thank you so much for this!
Also, for the second task, we might need to add preemptionPolicy in the resourceBinding as well.

@RainbowMango
Copy link
Member Author

Sure thanks. Assigned and updated.
By the way, do you know Yifan's GitHub handle? He is the co-author of this proposal, right?

@whitewindmills
Copy link
Member

@RainbowMango
in the part-I, we don't need any feature gates.

@whitewindmills
Copy link
Member

I have already implemented a priority queue demo, so I will continue to work on it. please assign it to me.
/assign
/assign @seanlaii

@RainbowMango
Copy link
Member Author

@RainbowMango in the part-I, we don't need any feature gates.

Not sure about it yet. We probably need a feature gate to isolate the changes. Let's keep it on the list for now.

@seanlaii
Copy link
Contributor

Sure thanks. Assigned and updated.

By the way, do you know Yifan's GitHub handle? He is the co-author of this proposal, right?

Yes, this is his github: https://github.com/zclyne. Thank you!

@zhzhuang-zju
Copy link
Contributor

webhook: Introduce validation to restrict PriorityClass modification

I'm quite interested in this task. If no one else claims it, I can be assigned it.

@LeonZh0u
Copy link

I can take on these two tasks:

  • Feature gate: Introduce a feature gate for this feature. (if needed)
  • Controller: Build application priority when creating ResourceBinding

@RainbowMango
Copy link
Member Author

OK Leon. Assigned them to you.
But I think we are still waiting for @kevin-wangzefeng's comments about the feature, so no rush~ I will talk to him.

@RainbowMango
Copy link
Member Author

Hi all, @seanlaii @LeonZh0u @whitewindmills Do you guys want to bring this feature into the coming release, which is v1.13.0 scheduled at the end of this month? I know the time is tight, but there is still a chance to have a minimal version of this feature.

@seanlaii
Copy link
Contributor

Hi all, @seanlaii @LeonZh0u @whitewindmills Do you guys want to bring this feature into the coming release, which is v1.13.0 scheduled at the end of this month? I know the time is tight, but there is still a chance to have a minimal version of this feature.

Yes, I really hope we can include this feature in the v1.13.0 release. I understand the timeline is tight, but I’m willing to push for a minimal version within the schedule. Thank you!

@RainbowMango
Copy link
Member Author

OK. Let's start with the API parts which are the prerequisites of this feature. I left some comments on your PR, by the way.

@whitewindmills
Copy link
Member

+1

@RainbowMango
Copy link
Member Author

FYI. The API part has been merged, we can proceed with the implementations now. Thank you!

@seanlaii
Copy link
Contributor

Hi @zhzhuang-zju , are you planning to work on the Webhook? I can take the E2E tests. Thank you!

@zhzhuang-zju
Copy link
Contributor

Hi @zhzhuang-zju , are you planning to work on the Webhook? I can take the E2E tests. Thank you!

@seanlaii If you're interested in this task, feel free to take it. I can spend more time on the review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Projects
Status: Planned In Release 1.13
Development

No branches or pull requests

5 participants