Skip to content

Commit 574acbe

Browse files
authored
Merge pull request kubernetes#87847 from notpad/feature/slow_path
Cleanup "slow-path" logic in scheduler Filters
2 parents 38acec9 + fb89505 commit 574acbe

File tree

14 files changed

+129
-409
lines changed

14 files changed

+129
-409
lines changed

pkg/scheduler/core/generic_scheduler_test.go

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,7 +1339,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
13391339
name: "a pod that fits on both machines when lower priority pods are preempted",
13401340
registerPlugins: []st.RegisterPluginFunc{
13411341
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1342-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1342+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
13431343
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
13441344
},
13451345
nodes: []string{"machine1", "machine2"},
@@ -1354,7 +1354,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
13541354
name: "a pod that would fit on the machines, but other pods running are higher priority",
13551355
registerPlugins: []st.RegisterPluginFunc{
13561356
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1357-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1357+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
13581358
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
13591359
},
13601360
nodes: []string{"machine1", "machine2"},
@@ -1369,7 +1369,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
13691369
name: "medium priority pod is preempted, but lower priority one stays as it is small",
13701370
registerPlugins: []st.RegisterPluginFunc{
13711371
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1372-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1372+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
13731373
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
13741374
},
13751375
nodes: []string{"machine1", "machine2"},
@@ -1385,7 +1385,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
13851385
name: "mixed priority pods are preempted",
13861386
registerPlugins: []st.RegisterPluginFunc{
13871387
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1388-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1388+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
13891389
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
13901390
},
13911391
nodes: []string{"machine1", "machine2"},
@@ -1403,7 +1403,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
14031403
name: "mixed priority pods are preempted, pick later StartTime one when priorities are equal",
14041404
registerPlugins: []st.RegisterPluginFunc{
14051405
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1406-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1406+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
14071407
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
14081408
},
14091409
nodes: []string{"machine1", "machine2"},
@@ -1421,8 +1421,8 @@ func TestSelectNodesForPreemption(t *testing.T) {
14211421
name: "pod with anti-affinity is preempted",
14221422
registerPlugins: []st.RegisterPluginFunc{
14231423
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1424-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1425-
st.RegisterFilterPlugin(interpodaffinity.Name, interpodaffinity.New),
1424+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
1425+
st.RegisterPluginAsExtensions(interpodaffinity.Name, 1, interpodaffinity.New, "Filter", "PreFilter"),
14261426
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
14271427
},
14281428
nodes: []string{"machine1", "machine2"},
@@ -1541,7 +1541,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
15411541
name: "get Unschedulable in the preemption phase when the filter plugins filtering the nodes",
15421542
registerPlugins: []st.RegisterPluginFunc{
15431543
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1544-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1544+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
15451545
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
15461546
},
15471547
nodes: []string{"machine1", "machine2"},
@@ -1557,7 +1557,7 @@ func TestSelectNodesForPreemption(t *testing.T) {
15571557
name: "preemption with violation of same pdb",
15581558
registerPlugins: []st.RegisterPluginFunc{
15591559
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1560-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1560+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
15611561
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
15621562
},
15631563
nodes: []string{"machine1"},
@@ -1673,7 +1673,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
16731673
name: "No node needs preemption",
16741674
registerPlugins: []st.RegisterPluginFunc{
16751675
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1676-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1676+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
16771677
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
16781678
},
16791679
nodes: []string{"machine1"},
@@ -1686,7 +1686,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
16861686
name: "a pod that fits on both machines when lower priority pods are preempted",
16871687
registerPlugins: []st.RegisterPluginFunc{
16881688
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1689-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1689+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
16901690
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
16911691
},
16921692
nodes: []string{"machine1", "machine2"},
@@ -1701,7 +1701,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
17011701
name: "a pod that fits on a machine with no preemption",
17021702
registerPlugins: []st.RegisterPluginFunc{
17031703
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1704-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1704+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
17051705
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
17061706
},
17071707
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1716,7 +1716,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
17161716
name: "machine with min highest priority pod is picked",
17171717
registerPlugins: []st.RegisterPluginFunc{
17181718
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1719-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1719+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
17201720
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
17211721
},
17221722
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1737,7 +1737,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
17371737
name: "when highest priorities are the same, minimum sum of priorities is picked",
17381738
registerPlugins: []st.RegisterPluginFunc{
17391739
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1740-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1740+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
17411741
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
17421742
},
17431743
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1758,7 +1758,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
17581758
name: "when highest priority and sum are the same, minimum number of pods is picked",
17591759
registerPlugins: []st.RegisterPluginFunc{
17601760
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1761-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1761+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
17621762
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
17631763
},
17641764
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1784,7 +1784,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
17841784
name: "sum of adjusted priorities is considered",
17851785
registerPlugins: []st.RegisterPluginFunc{
17861786
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1787-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1787+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
17881788
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
17891789
},
17901790
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1807,7 +1807,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
18071807
name: "non-overlapping lowest high priority, sum priorities, and number of pods",
18081808
registerPlugins: []st.RegisterPluginFunc{
18091809
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1810-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1810+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
18111811
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
18121812
},
18131813
nodes: []string{"machine1", "machine2", "machine3", "machine4"},
@@ -1835,7 +1835,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
18351835
name: "same priority, same number of victims, different start time for each machine's pod",
18361836
registerPlugins: []st.RegisterPluginFunc{
18371837
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1838-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1838+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
18391839
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
18401840
},
18411841
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1856,7 +1856,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
18561856
name: "same priority, same number of victims, different start time for all pods",
18571857
registerPlugins: []st.RegisterPluginFunc{
18581858
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1859-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1859+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
18601860
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
18611861
},
18621862
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1877,7 +1877,7 @@ func TestPickOneNodeForPreemption(t *testing.T) {
18771877
name: "different priority, same number of victims, different start time for all pods",
18781878
registerPlugins: []st.RegisterPluginFunc{
18791879
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
1880-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
1880+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
18811881
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
18821882
},
18831883
nodes: []string{"machine1", "machine2", "machine3"},
@@ -1918,6 +1918,11 @@ func TestPickOneNodeForPreemption(t *testing.T) {
19181918
t.Fatal(err)
19191919
}
19201920
state := framework.NewCycleState()
1921+
// Some tests rely on PreFilter plugin to compute its CycleState.
1922+
preFilterStatus := fwk.RunPreFilterPlugins(context.Background(), state, test.pod)
1923+
if !preFilterStatus.IsSuccess() {
1924+
t.Errorf("Unexpected preFilterStatus: %v", preFilterStatus)
1925+
}
19211926
candidateNodes, _ := g.selectNodesForPreemption(context.Background(), state, test.pod, nodeInfos, nil)
19221927
node := pickOneNodeForPreemption(candidateNodes)
19231928
found := false
@@ -2091,7 +2096,7 @@ func TestPreempt(t *testing.T) {
20912096
},
20922097
registerPlugins: []st.RegisterPluginFunc{
20932098
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2094-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2099+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
20952100
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
20962101
},
20972102
expectedNode: "machine1",
@@ -2112,7 +2117,7 @@ func TestPreempt(t *testing.T) {
21122117
},
21132118
registerPlugins: []st.RegisterPluginFunc{
21142119
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2115-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2120+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
21162121
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
21172122
},
21182123
expectedNode: "machine3",
@@ -2227,7 +2232,7 @@ func TestPreempt(t *testing.T) {
22272232
},
22282233
registerPlugins: []st.RegisterPluginFunc{
22292234
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2230-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2235+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
22312236
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
22322237
},
22332238
expectedNode: "machine1",
@@ -2253,7 +2258,7 @@ func TestPreempt(t *testing.T) {
22532258
},
22542259
registerPlugins: []st.RegisterPluginFunc{
22552260
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2256-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2261+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
22572262
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
22582263
},
22592264
expectedNode: "",
@@ -2283,7 +2288,7 @@ func TestPreempt(t *testing.T) {
22832288
},
22842289
registerPlugins: []st.RegisterPluginFunc{
22852290
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2286-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2291+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
22872292
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
22882293
},
22892294
expectedNode: "machine1",
@@ -2313,7 +2318,7 @@ func TestPreempt(t *testing.T) {
23132318
},
23142319
registerPlugins: []st.RegisterPluginFunc{
23152320
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2316-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2321+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
23172322
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
23182323
},
23192324
expectedNode: "machine3",
@@ -2334,7 +2339,7 @@ func TestPreempt(t *testing.T) {
23342339
},
23352340
registerPlugins: []st.RegisterPluginFunc{
23362341
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2337-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2342+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
23382343
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
23392344
},
23402345
expectedNode: "",
@@ -2355,7 +2360,7 @@ func TestPreempt(t *testing.T) {
23552360
},
23562361
registerPlugins: []st.RegisterPluginFunc{
23572362
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
2358-
st.RegisterFilterPlugin(noderesources.FitName, noderesources.NewFit),
2363+
st.RegisterPluginAsExtensions(noderesources.FitName, 1, noderesources.NewFit, "Filter", "PreFilter"),
23592364
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
23602365
},
23612366
expectedNode: "machine1",

0 commit comments

Comments
 (0)