[Coscheduling] make podGroup a queueing unit
kerthcet opened this issue · comments
Area
- Scheduler
- Controller
- Helm Chart
- Documents
Other components
No response
What happened?
Currently, we use queuedPodInfo's InitialAttemptTimestamp in ordering, it's a static value which will lead to starvation, earlier submitted podGroups will always block the queue if unschedulable(backoff queue can somehow mitigate this but not solve this problem).
creationTime1 := cs.pgMgr.GetCreationTimestamp(podInfo1.Pod, *podInfo1.InitialAttemptTimestamp)
creationTime2 := cs.pgMgr.GetCreationTimestamp(podInfo2.Pod, *podInfo2.InitialAttemptTimestamp)
What I want to do is make podGroup's queueing timestamp as a criteria, it will be refreshed together with a new scheduling cycle, the general idea is we'll maintain a podGroups cache in coscheduling. I'll write an updated KEP to detail the design.
What did you expect to happen?
- pods of podGroup will be ordered based on the podGroup's queueing timestamp
- podGroup's queueing timestamp will be refreshed in a new scheduling cycle
- pods of the same podGroup will be popped out sequentially as today
How can we reproduce it (as minimally and precisely as possible)?
No response
Anything else we need to know?
Kubernetes version
None
Scheduler Plugins version
None
/remove-kind bug
/kind feature
cc @Huang-Wei