kubernetes-sigs / scheduler-plugins

Repository for out-of-tree scheduler plugins based on scheduler framework.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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?

  1. pods of podGroup will be ordered based on the podGroup's queueing timestamp
  2. podGroup's queueing timestamp will be refreshed in a new scheduling cycle
  3. 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?

Related issues:
#110
#429

Kubernetes version

None

Scheduler Plugins version

None

/remove-kind bug
/kind feature