Skip to content

Commit 983875b

Browse files
authored
Merge pull request kubernetes#126337 from macsko/add_larger_scheduler_perf_test_cases
Add larger scheduler_perf test cases
2 parents c999f9d + 3b7b50a commit 983875b

File tree

3 files changed

+141
-32
lines changed

3 files changed

+141
-32
lines changed

test/integration/framework/etcd.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,17 @@ func getAvailablePort() (int, error) {
6464

6565
// startEtcd executes an etcd instance. The returned function will signal the
6666
// etcd process and wait for it to exit.
67-
func startEtcd(output io.Writer) (func(), error) {
68-
etcdURL := env.GetEnvAsStringOrFallback("KUBE_INTEGRATION_ETCD_URL", "http://127.0.0.1:2379")
69-
conn, err := net.Dial("tcp", strings.TrimPrefix(etcdURL, "http://"))
70-
if err == nil {
71-
klog.Infof("etcd already running at %s", etcdURL)
72-
conn.Close()
73-
return func() {}, nil
67+
func startEtcd(output io.Writer, forceCreate bool) (func(), error) {
68+
if !forceCreate {
69+
etcdURL := env.GetEnvAsStringOrFallback("KUBE_INTEGRATION_ETCD_URL", "http://127.0.0.1:2379")
70+
conn, err := net.Dial("tcp", strings.TrimPrefix(etcdURL, "http://"))
71+
if err == nil {
72+
klog.Infof("etcd already running at %s", etcdURL)
73+
_ = conn.Close()
74+
return func() {}, nil
75+
}
76+
klog.V(1).Infof("could not connect to etcd: %v", err)
7477
}
75-
klog.V(1).Infof("could not connect to etcd: %v", err)
7678

7779
currentURL, stop, err := RunCustomEtcd("integration_test_etcd_data", nil, output)
7880
if err != nil {
@@ -217,7 +219,7 @@ func EtcdMain(tests func() int) {
217219
goleak.IgnoreTopFunction("github.com/moby/spdystream.(*Connection).shutdown"),
218220
)
219221

220-
stop, err := startEtcd(nil)
222+
stop, err := startEtcd(nil, false)
221223
if err != nil {
222224
klog.Fatalf("cannot run integration tests: unable to start etcd: %v", err)
223225
}
@@ -247,8 +249,8 @@ func GetEtcdURL() string {
247249
//
248250
// Starting etcd multiple times per test run instead of once with EtcdMain
249251
// provides better separation between different tests.
250-
func StartEtcd(tb testing.TB, etcdOutput io.Writer) {
251-
stop, err := startEtcd(etcdOutput)
252+
func StartEtcd(tb testing.TB, etcdOutput io.Writer, forceCreate bool) {
253+
stop, err := startEtcd(etcdOutput, forceCreate)
252254
if err != nil {
253255
tb.Fatalf("unable to start etcd: %v", err)
254256
}

test/integration/scheduler_perf/config/performance-config.yaml

Lines changed: 126 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,17 @@
3030
initPods: 500
3131
measurePods: 1000
3232
- name: 5000Nodes
33-
labels: [performance, fast]
33+
labels: [fast]
3434
params:
3535
initNodes: 5000
3636
initPods: 1000
3737
measurePods: 1000
38+
- name: 5000Nodes_10000Pods
39+
labels: [performance]
40+
params:
41+
initNodes: 5000
42+
initPods: 1000
43+
measurePods: 10000
3844

3945
- name: SchedulingPodAntiAffinity
4046
defaultPodTemplatePath: config/templates/pod-with-pod-anti-affinity.yaml
@@ -59,11 +65,17 @@
5965
initPods: 100
6066
measurePods: 400
6167
- name: 5000Nodes
62-
labels: [performance, fast]
68+
labels: [fast]
6369
params:
6470
initNodes: 5000
6571
initPods: 1000
6672
measurePods: 1000
73+
- name: 5000Nodes_2000Pods
74+
labels: [performance]
75+
params:
76+
initNodes: 5000
77+
initPods: 1000
78+
measurePods: 2000
6779

6880
- name: SchedulingSecrets
6981
defaultPodTemplatePath: config/templates/pod-with-secret-volume.yaml
@@ -83,14 +95,19 @@
8395
initPods: 500
8496
measurePods: 1000
8597
- name: 5000Nodes
86-
labels: [performance, fast]
98+
labels: [fast]
8799
params:
88100
initNodes: 5000
89101
initPods: 5000
90102
measurePods: 1000
103+
- name: 5000Nodes_10000Pods
104+
labels: [performance]
105+
params:
106+
initNodes: 5000
107+
initPods: 1000
108+
measurePods: 10000
91109

92110
- name: SchedulingInTreePVs
93-
labels: [performance]
94111
workloadTemplate:
95112
- opcode: createNodes
96113
countParam: $initNodes
@@ -115,9 +132,14 @@
115132
initNodes: 5000
116133
initPods: 5000
117134
measurePods: 1000
135+
- name: 5000Nodes_2000Pods
136+
labels: [performance]
137+
params:
138+
initNodes: 5000
139+
initPods: 1000
140+
measurePods: 2000
118141

119142
- name: SchedulingMigratedInTreePVs
120-
labels: [performance]
121143
workloadTemplate:
122144
- opcode: createNodes
123145
countParam: $initNodes
@@ -151,9 +173,14 @@
151173
initNodes: 5000
152174
initPods: 5000
153175
measurePods: 1000
176+
- name: 5000Nodes_5000Pods
177+
labels: [performance]
178+
params:
179+
initNodes: 5000
180+
initPods: 5000
181+
measurePods: 5000
154182

155183
- name: SchedulingCSIPVs
156-
labels: [performance]
157184
workloadTemplate:
158185
- opcode: createNodes
159186
countParam: $initNodes
@@ -185,6 +212,12 @@
185212
initNodes: 5000
186213
initPods: 5000
187214
measurePods: 1000
215+
- name: 5000Nodes_5000Pods
216+
labels: [performance]
217+
params:
218+
initNodes: 5000
219+
initPods: 5000
220+
measurePods: 5000
188221

189222
- name: SchedulingPodAffinity
190223
defaultPodTemplatePath: config/templates/pod-with-pod-affinity.yaml
@@ -213,14 +246,19 @@
213246
initPods: 500
214247
measurePods: 1000
215248
- name: 5000Nodes
216-
labels: [performance, fast]
249+
labels: [fast]
217250
params:
218251
initNodes: 5000
219252
initPods: 5000
220253
measurePods: 1000
254+
- name: 5000Nodes_5000Pods
255+
labels: [performance]
256+
params:
257+
initNodes: 5000
258+
initPods: 5000
259+
measurePods: 5000
221260

222261
- name: SchedulingPreferredPodAffinity
223-
labels: [performance]
224262
defaultPodTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml
225263
workloadTemplate:
226264
- opcode: createNodes
@@ -247,6 +285,12 @@
247285
initNodes: 5000
248286
initPods: 5000
249287
measurePods: 1000
288+
- name: 5000Nodes_5000Pods
289+
labels: [performance]
290+
params:
291+
initNodes: 5000
292+
initPods: 5000
293+
measurePods: 5000
250294

251295
- name: SchedulingPreferredPodAntiAffinity
252296
defaultPodTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml
@@ -271,11 +315,17 @@
271315
initPods: 500
272316
measurePods: 1000
273317
- name: 5000Nodes
274-
labels: [performance, fast]
318+
labels: [fast]
275319
params:
276320
initNodes: 5000
277321
initPods: 5000
278322
measurePods: 1000
323+
- name: 5000Nodes_5000Pods
324+
labels: [performance]
325+
params:
326+
initNodes: 5000
327+
initPods: 5000
328+
measurePods: 5000
279329

280330
# This test case simulates the scheduling of daemonset.
281331
# https://github.com/kubernetes/kubernetes/issues/124709
@@ -326,11 +376,17 @@
326376
initPods: 500
327377
measurePods: 1000
328378
- name: 5000Nodes
329-
labels: [performance, fast]
379+
labels: [fast]
330380
params:
331381
initNodes: 5000
332382
initPods: 5000
333383
measurePods: 1000
384+
- name: 5000Nodes_10000Pods
385+
labels: [performance]
386+
params:
387+
initNodes: 5000
388+
initPods: 5000
389+
measurePods: 10000
334390

335391
- name: TopologySpreading
336392
workloadTemplate:
@@ -355,14 +411,19 @@
355411
initPods: 1000
356412
measurePods: 1000
357413
- name: 5000Nodes
358-
labels: [performance, fast]
414+
labels: [fast]
359415
params:
360416
initNodes: 5000
361417
initPods: 5000
362418
measurePods: 2000
419+
- name: 5000Nodes_5000Pods
420+
labels: [performance]
421+
params:
422+
initNodes: 5000
423+
initPods: 5000
424+
measurePods: 5000
363425

364426
- name: PreferredTopologySpreading
365-
labels: [performance]
366427
workloadTemplate:
367428
- opcode: createNodes
368429
countParam: $initNodes
@@ -389,9 +450,14 @@
389450
initNodes: 5000
390451
initPods: 5000
391452
measurePods: 2000
453+
- name: 5000Nodes_5000Pods
454+
labels: [performance]
455+
params:
456+
initNodes: 5000
457+
initPods: 5000
458+
measurePods: 5000
392459

393460
- name: MixedSchedulingBasePod
394-
labels: [performance]
395461
defaultPodTemplatePath: config/templates/pod-default.yaml
396462
workloadTemplate:
397463
- opcode: createNodes
@@ -437,6 +503,12 @@
437503
initNodes: 5000
438504
initPods: 2000
439505
measurePods: 1000
506+
- name: 5000Nodes_5000Pods
507+
labels: [performance]
508+
params:
509+
initNodes: 5000
510+
initPods: 2000
511+
measurePods: 5000
440512

441513
- name: PreemptionBasic
442514
labels: [performance]
@@ -516,11 +588,17 @@
516588
initPods: 200
517589
measurePods: 1000
518590
- name: 5000Nodes/200InitPods
519-
labels: [performance, fast]
591+
labels: [fast]
520592
params:
521593
initNodes: 5000
522594
initPods: 200
523595
measurePods: 5000
596+
- name: 5000Nodes/200InitPods/10000Pods
597+
labels: [performance]
598+
params:
599+
initNodes: 5000
600+
initPods: 200
601+
measurePods: 10000
524602
- name: 5000Nodes/2000InitPods
525603
params:
526604
initNodes: 5000
@@ -550,13 +628,17 @@
550628
initNodes: 1000
551629
measurePods: 1000
552630
- name: 5000Nodes
553-
labels: [performance, fast]
631+
labels: [fast]
554632
params:
555633
initNodes: 5000
556634
measurePods: 2000
635+
- name: 5000Nodes_10000Pods
636+
labels: [performance]
637+
params:
638+
initNodes: 5000
639+
measurePods: 10000
557640

558641
- name: SchedulingRequiredPodAntiAffinityWithNSSelector
559-
labels: [performance]
560642
defaultPodTemplatePath: config/templates/pod-anti-affinity-ns-selector.yaml
561643
workloadTemplate:
562644
- opcode: createNodes
@@ -593,9 +675,15 @@
593675
initPodsPerNamespace: 40
594676
initNamespaces: 100
595677
measurePods: 1000
678+
- name: 5000Nodes_2000Pods
679+
labels: [performance]
680+
params:
681+
initNodes: 6000
682+
initPodsPerNamespace: 40
683+
initNamespaces: 100
684+
measurePods: 2000
596685

597686
- name: SchedulingPreferredAntiAffinityWithNSSelector
598-
labels: [performance]
599687
defaultPodTemplatePath: config/templates/pod-preferred-anti-affinity-ns-selector.yaml
600688
workloadTemplate:
601689
- opcode: createNodes
@@ -632,9 +720,15 @@
632720
initPodsPerNamespace: 40
633721
initNamespaces: 100
634722
measurePods: 1000
723+
- name: 5000Nodes_2000Pods
724+
labels: [performance]
725+
params:
726+
initNodes: 5000
727+
initPodsPerNamespace: 40
728+
initNamespaces: 100
729+
measurePods: 2000
635730

636731
- name: SchedulingRequiredPodAffinityWithNSSelector
637-
labels: [performance]
638732
defaultPodTemplatePath: config/templates/pod-affinity-ns-selector.yaml
639733
workloadTemplate:
640734
- opcode: createNodes
@@ -674,9 +768,15 @@
674768
initPodsPerNamespace: 50
675769
initNamespaces: 100
676770
measurePods: 1000
771+
- name: 5000Nodes_2000Pods
772+
labels: [performance]
773+
params:
774+
initNodes: 5000
775+
initPodsPerNamespace: 50
776+
initNamespaces: 100
777+
measurePods: 2000
677778

678779
- name: SchedulingPreferredAffinityWithNSSelector
679-
labels: [performance]
680780
defaultPodTemplatePath: config/templates/pod-preferred-affinity-ns-selector.yaml
681781
workloadTemplate:
682782
- opcode: createNodes
@@ -713,6 +813,13 @@
713813
initPodsPerNamespace: 50
714814
initNamespaces: 100
715815
measurePods: 1000
816+
- name: 5000Nodes_5000Pods
817+
labels: [performance]
818+
params:
819+
initNodes: 5000
820+
initPodsPerNamespace: 50
821+
initNamespaces: 100
822+
measurePods: 5000
716823

717824
- name: SchedulingWithNodeInclusionPolicy
718825
featureGates:

test/integration/scheduler_perf/scheduler_perf.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -777,8 +777,8 @@ func setupTestCase(t testing.TB, tc *testCase, output io.Writer, outOfTreePlugin
777777
framework.GoleakCheck(t)
778778

779779
// Now that we are ready to run, start
780-
// etcd.
781-
framework.StartEtcd(t, output)
780+
// a brand new etcd.
781+
framework.StartEtcd(t, output, true)
782782

783783
for feature, flag := range tc.FeatureGates {
784784
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, feature, flag)

0 commit comments

Comments
 (0)