Skip to content

Commit 630ff96

Browse files
committed
Revert "Scheduler first fit"
1 parent ed84e7f commit 630ff96

File tree

6 files changed

+14
-136
lines changed

6 files changed

+14
-136
lines changed

pkg/scheduler/extender.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -383,11 +383,6 @@ func (h *HTTPExtender) IsBinder() bool {
383383
return h.bindVerb != ""
384384
}
385385

386-
// IsPrioritizer returns whether this extender is configured for the Prioritize method.
387-
func (h *HTTPExtender) IsPrioritizer() bool {
388-
return h.prioritizeVerb != ""
389-
}
390-
391386
// Helper function to send messages to the extender
392387
func (h *HTTPExtender) send(action string, args interface{}, result interface{}) error {
393388
out, err := json.Marshal(args)

pkg/scheduler/extender_test.go

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ func TestSchedulerWithExtenders(t *testing.T) {
9393
registerPlugins: []tf.RegisterPluginFunc{
9494
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
9595
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
96-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
9796
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
9897
},
9998
extenders: []tf.FakeExtender{
@@ -246,7 +245,6 @@ func TestSchedulerWithExtenders(t *testing.T) {
246245
// because of the errors from errorPredicateExtender.
247246
registerPlugins: []tf.RegisterPluginFunc{
248247
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
249-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
250248
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
251249
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
252250
},
@@ -270,30 +268,6 @@ func TestSchedulerWithExtenders(t *testing.T) {
270268
},
271269
name: "test 9",
272270
},
273-
{
274-
registerPlugins: []tf.RegisterPluginFunc{
275-
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
276-
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
277-
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
278-
},
279-
extenders: []tf.FakeExtender{
280-
{
281-
ExtenderName: "FakeExtender1",
282-
Predicates: []tf.FitPredicate{tf.TruePredicateExtender},
283-
},
284-
{
285-
ExtenderName: "FakeExtender2",
286-
Predicates: []tf.FitPredicate{tf.Node1PredicateExtender},
287-
},
288-
},
289-
nodes: []string{"node1", "node2"},
290-
expectedResult: ScheduleResult{
291-
SuggestedHost: "node1",
292-
EvaluatedNodes: 1,
293-
FeasibleNodes: 1,
294-
},
295-
name: "test 10",
296-
},
297271
}
298272

299273
for _, test := range tests {

pkg/scheduler/framework/extender.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ type Extender interface {
5050
// this pod is managed by this extender.
5151
IsInterested(pod *v1.Pod) bool
5252

53-
// IsPrioritizer returns whether this extender is configured for the Prioritize method.
54-
IsPrioritizer() bool
55-
5653
// ProcessPreemption returns nodes with their victim pods processed by extender based on
5754
// given:
5855
// 1. Pod to schedule

pkg/scheduler/schedule_one.go

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ func (sched *Scheduler) schedulePod(ctx context.Context, fwk framework.Framework
422422
}, nil
423423
}
424424

425-
priorityList, err := sched.prioritizeNodes(ctx, fwk, state, pod, feasibleNodes)
425+
priorityList, err := prioritizeNodes(ctx, sched.Extenders, fwk, state, pod, feasibleNodes)
426426
if err != nil {
427427
return result, err
428428
}
@@ -546,19 +546,6 @@ func (sched *Scheduler) evaluateNominatedNode(ctx context.Context, pod *v1.Pod,
546546
return feasibleNodes, nil
547547
}
548548

549-
// hasScoring checks if scoring nodes is configured.
550-
func (sched *Scheduler) hasScoring(fwk framework.Framework) bool {
551-
if fwk.HasScorePlugins() {
552-
return true
553-
}
554-
for _, extender := range sched.Extenders {
555-
if extender.IsPrioritizer() {
556-
return true
557-
}
558-
}
559-
return false
560-
}
561-
562549
// findNodesThatPassFilters finds the nodes that fit the filter plugins.
563550
func (sched *Scheduler) findNodesThatPassFilters(
564551
ctx context.Context,
@@ -569,9 +556,6 @@ func (sched *Scheduler) findNodesThatPassFilters(
569556
nodes []*framework.NodeInfo) ([]*framework.NodeInfo, error) {
570557
numAllNodes := len(nodes)
571558
numNodesToFind := sched.numFeasibleNodesToFind(fwk.PercentageOfNodesToScore(), int32(numAllNodes))
572-
if !sched.hasScoring(fwk) {
573-
numNodesToFind = 1
574-
}
575559

576560
// Create feasible list with enough space to avoid growing it
577561
// and allow assigning.
@@ -723,8 +707,9 @@ func findNodesThatPassExtenders(ctx context.Context, extenders []framework.Exten
723707
// The scores from each plugin are added together to make the score for that node, then
724708
// any extenders are run as well.
725709
// All scores are finally combined (added) to get the total weighted scores of all nodes
726-
func (sched *Scheduler) prioritizeNodes(
710+
func prioritizeNodes(
727711
ctx context.Context,
712+
extenders []framework.Extender,
728713
fwk framework.Framework,
729714
state *framework.CycleState,
730715
pod *v1.Pod,
@@ -733,7 +718,7 @@ func (sched *Scheduler) prioritizeNodes(
733718
logger := klog.FromContext(ctx)
734719
// If no priority configs are provided, then all nodes will have a score of one.
735720
// This is required to generate the priority list in the required format
736-
if !sched.hasScoring(fwk) {
721+
if len(extenders) == 0 && !fwk.HasScorePlugins() {
737722
result := make([]framework.NodePluginScores, 0, len(nodes))
738723
for i := range nodes {
739724
result = append(result, framework.NodePluginScores{
@@ -766,17 +751,14 @@ func (sched *Scheduler) prioritizeNodes(
766751
}
767752
}
768753

769-
if len(sched.Extenders) != 0 && nodes != nil {
754+
if len(extenders) != 0 && nodes != nil {
770755
// allNodeExtendersScores has all extenders scores for all nodes.
771756
// It is keyed with node name.
772757
allNodeExtendersScores := make(map[string]*framework.NodePluginScores, len(nodes))
773758
var mu sync.Mutex
774759
var wg sync.WaitGroup
775-
for i := range sched.Extenders {
776-
if !sched.Extenders[i].IsInterested(pod) {
777-
continue
778-
}
779-
if !sched.Extenders[i].IsPrioritizer() {
760+
for i := range extenders {
761+
if !extenders[i].IsInterested(pod) {
780762
continue
781763
}
782764
wg.Add(1)
@@ -786,10 +768,10 @@ func (sched *Scheduler) prioritizeNodes(
786768
metrics.Goroutines.WithLabelValues(metrics.PrioritizingExtender).Dec()
787769
wg.Done()
788770
}()
789-
prioritizedList, weight, err := sched.Extenders[extIndex].Prioritize(pod, nodes)
771+
prioritizedList, weight, err := extenders[extIndex].Prioritize(pod, nodes)
790772
if err != nil {
791773
// Prioritization errors from extender can be ignored, let k8s/other extenders determine the priorities
792-
logger.V(5).Info("Failed to run extender's priority function. No score given by this extender.", "error", err, "pod", klog.KObj(pod), "extender", sched.Extenders[extIndex].Name())
774+
logger.V(5).Info("Failed to run extender's priority function. No score given by this extender.", "error", err, "pod", klog.KObj(pod), "extender", extenders[extIndex].Name())
793775
return
794776
}
795777
mu.Lock()
@@ -798,7 +780,7 @@ func (sched *Scheduler) prioritizeNodes(
798780
nodename := (*prioritizedList)[i].Host
799781
score := (*prioritizedList)[i].Score
800782
if loggerVTen.Enabled() {
801-
loggerVTen.Info("Extender scored node for pod", "pod", klog.KObj(pod), "extender", sched.Extenders[extIndex].Name(), "node", nodename, "score", score)
783+
loggerVTen.Info("Extender scored node for pod", "pod", klog.KObj(pod), "extender", extenders[extIndex].Name(), "node", nodename, "score", score)
802784
}
803785

804786
// MaxExtenderPriority may diverge from the max priority used in the scheduler and defined by MaxNodeScore,
@@ -808,11 +790,11 @@ func (sched *Scheduler) prioritizeNodes(
808790
if allNodeExtendersScores[nodename] == nil {
809791
allNodeExtendersScores[nodename] = &framework.NodePluginScores{
810792
Name: nodename,
811-
Scores: make([]framework.PluginScore, 0, len(sched.Extenders)),
793+
Scores: make([]framework.PluginScore, 0, len(extenders)),
812794
}
813795
}
814796
allNodeExtendersScores[nodename].Scores = append(allNodeExtendersScores[nodename].Scores, framework.PluginScore{
815-
Name: sched.Extenders[extIndex].Name(),
797+
Name: extenders[extIndex].Name(),
816798
Score: finalscore,
817799
})
818800
allNodeExtendersScores[nodename].TotalScore += finalscore

pkg/scheduler/schedule_one_test.go

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ type fakeExtender struct {
9191
interestedPodName string
9292
ignorable bool
9393
gotBind bool
94-
isPrioritizer bool
9594
errBind bool
9695
}
9796

@@ -145,10 +144,6 @@ func (f *fakeExtender) IsInterested(pod *v1.Pod) bool {
145144
return pod != nil && pod.Name == f.interestedPodName
146145
}
147146

148-
func (f *fakeExtender) IsPrioritizer() bool {
149-
return f.isPrioritizer
150-
}
151-
152147
type falseMapPlugin struct{}
153148

154149
func newFalseMapPlugin() frameworkruntime.PluginFactory {
@@ -1828,7 +1823,6 @@ func TestSchedulerSchedulePod(t *testing.T) {
18281823
registerPlugins: []tf.RegisterPluginFunc{
18291824
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
18301825
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
1831-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
18321826
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
18331827
},
18341828
nodes: []string{"node1", "node2"},
@@ -1946,7 +1940,6 @@ func TestSchedulerSchedulePod(t *testing.T) {
19461940
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
19471941
tf.RegisterPreFilterPlugin(volumebinding.Name, frameworkruntime.FactoryAdapter(fts, volumebinding.New)),
19481942
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
1949-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
19501943
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
19511944
},
19521945
nodes: []string{"node1", "node2"},
@@ -2060,7 +2053,6 @@ func TestSchedulerSchedulePod(t *testing.T) {
20602053
"PreFilter",
20612054
"Filter",
20622055
),
2063-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
20642056
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
20652057
},
20662058
nodes: []string{"node1", "node2", "node3"},
@@ -2363,7 +2355,6 @@ func TestSchedulerSchedulePod(t *testing.T) {
23632355
},
23642356
}, nil
23652357
}, "PreFilter", "Filter"),
2366-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
23672358
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
23682359
},
23692360
nodes: []string{"node1", "node2", "node3"},
@@ -2386,33 +2377,6 @@ func TestSchedulerSchedulePod(t *testing.T) {
23862377
pod: st.MakePod().Name("ignore").UID("ignore").Obj(),
23872378
wantNodes: sets.New("node1", "node2"),
23882379
},
2389-
{
2390-
name: "test without score plugin no extra nodes are evaluated",
2391-
registerPlugins: []tf.RegisterPluginFunc{
2392-
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2393-
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
2394-
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
2395-
},
2396-
nodes: []string{"node1", "node2", "node3"},
2397-
pod: st.MakePod().Name("pod1").UID("pod1").Obj(),
2398-
wantNodes: sets.New("node1", "node2", "node3"),
2399-
wantEvaluatedNodes: ptr.To[int32](1),
2400-
},
2401-
{
2402-
name: "test no score plugin, prefilter plugin returning 2 nodes, only 1 node is evaluated in Filter",
2403-
registerPlugins: []tf.RegisterPluginFunc{
2404-
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2405-
tf.RegisterPreFilterPlugin(
2406-
"FakePreFilter",
2407-
tf.NewFakePreFilterPlugin("FakePreFilter", &framework.PreFilterResult{NodeNames: sets.New("node1", "node2")}, nil),
2408-
),
2409-
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
2410-
},
2411-
nodes: []string{"node1", "node2", "node3"},
2412-
pod: st.MakePod().Name("test-prefilter").UID("test-prefilter").Obj(),
2413-
wantNodes: sets.New("node1", "node2"),
2414-
wantEvaluatedNodes: ptr.To[int32](2),
2415-
},
24162380
}
24172381
for _, test := range tests {
24182382
t.Run(test.name, func(t *testing.T) {
@@ -2786,7 +2750,7 @@ func TestZeroRequest(t *testing.T) {
27862750
t.Fatalf("error filtering nodes: %+v", err)
27872751
}
27882752
fwk.RunPreScorePlugins(ctx, state, test.pod, tf.BuildNodeInfos(test.nodes))
2789-
list, err := sched.prioritizeNodes(ctx, fwk, state, test.pod, tf.BuildNodeInfos(test.nodes))
2753+
list, err := prioritizeNodes(ctx, nil, fwk, state, test.pod, tf.BuildNodeInfos(test.nodes))
27902754
if err != nil {
27912755
t.Errorf("unexpected error: %v", err)
27922756
}
@@ -3182,10 +3146,7 @@ func Test_prioritizeNodes(t *testing.T) {
31823146
for ii := range test.extenders {
31833147
extenders = append(extenders, &test.extenders[ii])
31843148
}
3185-
sched := &Scheduler{
3186-
Extenders: extenders,
3187-
}
3188-
nodesscores, err := sched.prioritizeNodes(ctx, fwk, state, test.pod, tf.BuildNodeInfos(test.nodes))
3149+
nodesscores, err := prioritizeNodes(ctx, extenders, fwk, state, test.pod, tf.BuildNodeInfos(test.nodes))
31893150
if err != nil {
31903151
t.Errorf("unexpected error: %v", err)
31913152
}
@@ -3288,7 +3249,6 @@ func TestFairEvaluationForNodes(t *testing.T) {
32883249
[]tf.RegisterPluginFunc{
32893250
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
32903251
tf.RegisterFilterPlugin("TrueFilter", tf.NewTrueFilterPlugin),
3291-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
32923252
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
32933253
},
32943254
"",
@@ -3367,7 +3327,6 @@ func TestPreferNominatedNodeFilterCallCounts(t *testing.T) {
33673327
registerPlugins := []tf.RegisterPluginFunc{
33683328
tf.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
33693329
registerFakeFilterFunc,
3370-
tf.RegisterScorePlugin("EqualPrioritizerPlugin", tf.NewEqualPrioritizerPlugin(), 20),
33713330
tf.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
33723331
}
33733332
fwk, err := tf.NewFramework(

pkg/scheduler/testing/framework/fake_extender.go

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -137,30 +137,6 @@ func (pl *node2PrioritizerPlugin) ScoreExtensions() framework.ScoreExtensions {
137137
return nil
138138
}
139139

140-
type equalPrioritizerPlugin struct{}
141-
142-
// NewEqualPrioritizerPlugin returns a factory function to build equalPrioritizerPlugin.
143-
func NewEqualPrioritizerPlugin() frameworkruntime.PluginFactory {
144-
return func(_ context.Context, _ runtime.Object, _ framework.Handle) (framework.Plugin, error) {
145-
return &equalPrioritizerPlugin{}, nil
146-
}
147-
}
148-
149-
// Name returns the name of the plugin.
150-
func (pl *equalPrioritizerPlugin) Name() string {
151-
return "EqualPrioritizerPlugin"
152-
}
153-
154-
// Score returns score 1 for each node.
155-
func (pl *equalPrioritizerPlugin) Score(_ context.Context, _ *framework.CycleState, _ *v1.Pod, _ string) (int64, *framework.Status) {
156-
return int64(1), nil
157-
}
158-
159-
// ScoreExtensions returns nil.
160-
func (pl *equalPrioritizerPlugin) ScoreExtensions() framework.ScoreExtensions {
161-
return nil
162-
}
163-
164140
// FakeExtender is a data struct which implements the Extender interface.
165141
type FakeExtender struct {
166142
// ExtenderName indicates this fake extender's name.
@@ -404,11 +380,6 @@ func (f *FakeExtender) IsBinder() bool {
404380
return true
405381
}
406382

407-
// IsPrioritizer returns true if there are any prioritizers.
408-
func (f *FakeExtender) IsPrioritizer() bool {
409-
return len(f.Prioritizers) > 0
410-
}
411-
412383
// IsInterested returns a bool indicating whether this extender is interested in this Pod.
413384
func (f *FakeExtender) IsInterested(pod *v1.Pod) bool {
414385
return !f.UnInterested

0 commit comments

Comments
 (0)