Skip to content
KEP Brain

KEP-4671keps/sig-scheduling/4671-gang-scheduling

Gang Scheduling

implementablestablesig-schedulinglatest v1.38
In this KEP, kube-scheduler is modified to support gang scheduling[^1]. We focus on framework support and building blocks, not the ideal gang-scheduling algorithm - it can come as a follow-up. We start with simpler implementation of gang scheduling, kube-scheduler identifies pods that are in a group and waits until all pods reach the same stage of the schedu… Full summary

In this KEP, kube-scheduler is modified to support gang scheduling[^1]. We focus on framework support and building blocks, not the ideal gang-scheduling algorithm - it can come as a follow-up. We start with simpler implementation of gang scheduling, kube-scheduler identifies pods that are in a group and waits until all pods reach the same stage of the scheduling/binding cycle before allowing any pods from the group to advance past that point. If not all pods can reach that point before a timeout expires, then the scheduler stops trying to schedule that group, and all pods release all their resources. This allows other workloads to try to allocate those resources. New core types called Workload and PodGroup are introduced to tell the kube-scheduler that a group of pods should be scheduled together and to define policy options related to gang scheduling. Pods may have an object reference in their spec to the PodGroup they belong to. The Workload and PodGroup objects are intended to evolve[^2] via future KEPs to support additional kube-scheduler improvements, such as topology-aware scheduling. The API is structured to decouple template from runtime grouping: - Workload represents a static template defining the scheduling hierarchy and scheduling policy definition that specifies what workload behavior should be applied. - PodGroup becomes a standalone, self-contained runtime scheduling unit for a group of pods that encapsulates both the scheduling policy and status. True workload[^6] owners are responsible for creating PodGroup objects (together with Workload objects). PodGroups are expected to be created based on the podGroupTemplates defined in the Workload. - Pods reference PodGroup which is their immediate execution context.

Facts

PRR approvers
@soltyshalpha@soltyshbeta@soltyshstable
Tracking issue
#4671(opens GitHub in a new tab) openmilestone v1.38sig/schedulingstage/stabletracked/yeslead-opted-inwg/workload-aware-scheduling
Milestones
alpha v1.35beta v1.37stable v1.38
Participating SIGs
sig-apps
Feature gates
GenericWorkload
Created / last updated
2025-09-17 / none
Loading decisions and status history

Keyboard shortcuts

Everywhere

?
Show or hide this list
/
Focus the question box on Ask, otherwise the page search
Ctrl Kor⌘ K
Focus the KEP search in the top bar
t
Switch the theme (system, light, dark)
Esc
Close a dialog, a search list or a menu

Go to a page

Press g, then the letter

g h
Home
g a
Ask
g e
Explore
g u
Audit
g m
Memory
g b
About

Ask

Enter
Send the question
Shift Enter
New line in the question
Esc
Cancel the running question

Search lists

KEP search and Explore search

↓or↑
Move through the results
HomeorEnd
First or last result (Explore)
Enter
Open the highlighted result, or KEP-n when the query is a number

KEP page

o
Open the KEP on GitHub
y
Open kep.yaml on GitHub
a
Ask about this KEP
←or→
Previous or next tab, when a tab is focused

Findings table

With a finding row focused (Tab into the table or click a row)

jork
Next or previous finding
EnterorSpace
Expand or collapse the finding
o
Open the finding's KEP page
d
Draft the fix as an issue text (nothing is posted)
]or[
Next or previous page of findings

Shortcuts pause while you type in a field. Press ? or Esc to close.